terça-feira, 25 de outubro de 2011

Materials

O objeto Material controla como objetos na cena são renderizados. Ele especifica propriedades básicas da superfície que os objetos têm (como reflexão de cores, brilho, etc), quantas camadas de textura são utilizadas, quais as imagens que estão nelas e como são mescladas, quais efeitos especiais são aplicados (mapeamento ambiental, por exemplo), qual modo de clipagem (recorte) é utilizado, como as texturas são filtradas, etc.

Materiais podem tanto ser configurados via código pela chamada ao método SceneManager::createMaterial ou via especificação em um script que é carregado em tempo de execução. Futuras postagens explanarão a respeito da utilização de scripts.

Praticamente todas as características de um objeto que dizem respeito à sua aparência (com exceção de seu formato) são controladas pela classe Material.


O objeto SceneManager gerencia a lista mestra dos materiais disponíveis para uma cena. A lista pode ser incrementada com a chamada ao método SceneManager::createMaterial ou pelo carregamento de um Mesh (que, por sua vez, irá realizar o carregamento de materiais).

Sempre que um material é adicionado ao SceneManager, ele possui, a priori, um conjunto de propriedades padrões, que estão listadas a seguir:
  • ambient reflectance = ColourValue::White (full)
  • diffuse reflectance = ColourValue::White (full)
  • specular reflectance = ColourValue::Black (none)
  • emmissive = ColourValue::Black (none)
  • shininess = 0 (sem brilho)
  • No texture layers (& hence no textures)
  • SourceBlendFactor = SBF_ONE, DestBlendFactor = SBF_ZERO (opaco)
  • Depth buffer checking on
  • Depth buffer writing on
  • Depth buffer comparison function = CMPF_LESS_EQUAL
  • Culling mode = CULL_CLOCKWISE
  • Ambient lighting in scene = ColourValue(0.5, 0.5, 0.5) (meio-cinza)
  • Dynamic lighting enabled
  • Gourad shading mode
  • Solid polygon mode
  • Bilinear texture filtering

Essas propriedades podem ser alteradas chamando o método SceneManager::getDefaultMaterialSettings() e realizando as modificações desejadas no Material que é retornado. Entidades que usam um objeto Mesh possuem, automaticamente, materiais associados a elas, visto que o mesh normalmente configura seus materiais requisitados no carregamento da aplicação.

É possível customizar o material associado a uma entidade da maneira explicada na postagem anterior. Apenas crie um novo material e o defina da maneira que quiser (você pode copiar de um material já existente caso queira utilizar uma declaração de atribuição padrão). Depois, altere o material da(s) SubEntity chamando o método SubEntity::setMaterialName().

Nenhum comentário:

Postar um comentário