Este blog esta em reforma no momento.

Scripting materials

Consegui resolver o problema da multitextura sem precisar programar em GLSL. No entanto ainda vou usar issu como alternativa, assim que eu descobrir como pegar as texturas dentro do shader.
A alternativa GLSL ainda pode ser bem util porque o framerate caio bastante, de 120 para 80 com todas as texturas e mapa de iluminação.
Uma grande vantagem no sistema de materiais do OGRE são as thecniques, o mesmo material pode ter varias. Cada thecnique apresenta um conjunto de efeitos, o OGRE em tempo de execução, escolhe qual a thecnique mais adequada para o hardware, então eu posso produzir várias para garantir que se a placa gráfica vai exibir com dada precisão oque eu quero.
Isso também é uma mão na roda para gerar desempenho. Por exemplo, posso aplicar uma thecnique com normalmaps mais perto da camera e uma sem ao longe.Esse normalmap ta dando um boooom trabalho. Pois cada elemento que coloco na borda tenho q fazer uma conta para colocalo na borda oposta.
Da trampo, mas fica bom. A melhor solução que encontrei é curiosa, pois é uma téquinica antiga desenvolvida antes do blender ter recurso de renderizar para textura. Onde a camera é posta em ortogonal com escala de 2 (um plano em OpenGL geralmente vai de -1 até 1) e o material usa 3 texturas de blend nos eixos x,y e z. Essa textura vai ser usada no terreno da terceira ou quarta fase.

Os parametros de textura são muito poderosos. Pode-se definir detalhes doque sera feito na pipeline como se estivesse usando os nodes do Blender.
Apartir de agora so uso o Blender para marcar o material no exporter. Todo o trabalho de definição é feito no Notepad++.
Esse fogo deu umas duas horas lendo e preparando até eu acertar. Mas ficou muito bom o resultado, 8 triangulos, bem menos que um cubo e sem nenhum sistema de particulas. E são só 4 texturas 64x64 em jpeg.
material fogo01
{
receive_shadows off
technique
{
pass
{
lighting off
cull_hardware none
cull_software none
scene_blend one one_minus_src_colour
depth_func less_equal
depth_write off
texture_unit
{
anim_texture fogo_frame_1.jpg fogo_frame_2.jpg fogo_frame_3.jpg fogo_frame_4.jpg .5
tex_address_mode clamp
filtering trilinear
colour_op modulate
}
}
}
}

Meu exporter do Blender também evoluio um pouco, resolvi muitos dos problemas de posicionamento. Mas ainda ficaram para traz algumas questões de rotação e escala.
Oque complica na verdade é a versatilidade, crieu o script de forma que tudo que tiver a propriedade "actor" ativa seja considerado objeto dinâmico. Ja os outros são transformados em "static geometry". O problema é que a geometria estatica não aceita as transformações hierarquicas por si só, então tenho q posicionar os objetos no braço dentro do C++.
O OGRE tem bastantes recursos para issu, classes Vector, Quaternion e Matrix. No entanto o Python do Blender parece ter bem mais funcionalidades.
Mas o desenvolvimento esta ficando bem agíl. ^_~

Comentários