1) o arquivo MTL (Material template library) é um arquivo que acompanha o arquivo OBJ;
2) esse arquivo é carregado junto com o arquivo OBJ nos editores 3D;
3) você pode ver a documentação da estrutura do arquivo aqui: https://en.wikipedia.org/wiki/Wavefront_.obj_file
4) Nessa documentação será documentados os comando do MTL que são reconhecidos pelo meu programa e como ele "enxerga" o arquivo;
5) Todos os campo do MTL que forem omitidos aqui não são usados pelo meu programa;
4) Nessa documentação será documentados os comando do MTL que são reconhecidos pelo meu programa e como ele "enxerga" o arquivo;
5) Todos os campo do MTL que forem omitidos aqui não são usados pelo meu programa;
6) com o meu programa para criar um arquivo MTL você tem que passar como parâmetro um arquivo "IDXMATERIAL" e "IDXUHDTPL";
7) ao passar como parâmetro um arquivo MTL para o meu programa, ele criará os arquivos "IDXMATERIAL" e "IDXUHDTPL";
* junto com o MTL você pode passar opcionalmente um arquivo "IDXUHDTPL", para poder forçar a ordem dos "TPL Entry";
8) Então basicamente o MTL é uma representação do "IDXMATERIAL" e "IDXUHDTPL" juntos, no qual pode ser usado por Editores de modelos 3D;
* junto com o MTL você pode passar opcionalmente um arquivo "IDXUHDTPL", para poder forçar a ordem dos "TPL Entry";
8) Então basicamente o MTL é uma representação do "IDXMATERIAL" e "IDXUHDTPL" juntos, no qual pode ser usado por Editores de modelos 3D;
9) O arquivo MTL que é criado pelo meu programa foi estruturado e pensado para funcionar no Blender, mas deve funcionar corretamente para outros editores 3D;
(Explicando o conteúdo do Arquivo MTL)
10) # a linha começada com # são comentários, são ignorados pelo programa;
(linhas em branco também são ignoradas pelo programa);
11) newmtl UHD_MATERIAL_000 = comando de inicia um novo material
* campo obrigatório
* o nome do material pode ser qualquer texto ASCII;
* o programa não faz diferenciação de maiúsculas e minúsculas para o nome do material;
(Nota: mas os editores 3D fazem a diferenciação)
* o nome do material pode ser qualquer texto ASCII;
* o programa não faz diferenciação de maiúsculas e minúsculas para o nome do material;
(Nota: mas os editores 3D fazem a diferenciação)
(Meu programa sempre vai converter os nomes para MAIUSCULO, então de preferencia a colocar os nomes em maiúsculo)
* os nomes dos materiais devem ser os mesmos presentes no arquivo OBJ/SMD;
12) Ka 1.000 1.000 1.000 = campo não usado pelo meu programa, é apenas para compatibilidade com os editores 3D;
13) Kd 1.000 1.000 1.000 = campo não usado pelo meu programa, é apenas para compatibilidade com os editores 3D;
14) Ks 0.098039 0.098039 0.098039 = representa os campos "intensity_specular" do "IdxMaterial" sendo:
* r = intensity_specular_r
* g = intensity_specular_g
* b = intensity_specular_b
* os nomes dos materiais devem ser os mesmos presentes no arquivo OBJ/SMD;
12) Ka 1.000 1.000 1.000 = campo não usado pelo meu programa, é apenas para compatibilidade com os editores 3D;
13) Kd 1.000 1.000 1.000 = campo não usado pelo meu programa, é apenas para compatibilidade com os editores 3D;
14) Ks 0.098039 0.098039 0.098039 = representa os campos "intensity_specular" do "IdxMaterial" sendo:
* r = intensity_specular_r
* g = intensity_specular_g
* b = intensity_specular_b
* esses valores vão de 0.0 a 1.0, e na conversão o valor é multiplicado por 255, e pegado a parte inteira do valor;
* caso não var usar preencha como "Ks 0.0 0.0 0.0"
* caso usar a textura de "normal" (bump) sem o specular preencha como "Ks 1.0 1.0 1.0"
* caso não var usar preencha como "Ks 0.0 0.0 0.0"
* caso usar a textura de "normal" (bump) sem o specular preencha como "Ks 1.0 1.0 1.0"
* campo opcional;
15) Ns 0 = campo não usado pelo meu programa, é apenas para compatibilidade com os editores 3D;
16) d 1 = campo não usado pelo meu programa, é apenas para compatibilidade com os editores 3D;
17) map_Kd 41000001/0000.dds = representa textura principal, referente ao campo "diffuse_map" do "IdxMaterial";
* campo obrigatório;
* nele contem o valor do PACK e o ID da Textura;
* veja a seção de "Patch de Texturas", para saber como devem ser formados;
* veja a seção de "Patch de Texturas", para saber como devem ser formados;
18) map_Bump 41000001/0001.tga
Bump 41000001/0001.tga
= representa a textura de Normal (bump), referente ao campo "bump_map" do "IdxMaterial";
* campo opcional;
* nele contem o valor do PACK e o ID da Textura;
* veja a seção de "Patch de Texturas", para saber como devem ser formados;
* o campo "Bump" sobrescreve o valor de "map_Bump" caso exista;
19) map_d 41000001/0003.tga = representa a textura de transparecia, referente ao campo "opacity_map" do "IdxMaterial";
* nele contem o valor do PACK e o ID da Textura;
* veja a seção de "Patch de Texturas", para saber como devem ser formados;
* o campo "Bump" sobrescreve o valor de "map_Bump" caso exista;
19) map_d 41000001/0003.tga = representa a textura de transparecia, referente ao campo "opacity_map" do "IdxMaterial";
* campo opcional;
* nele contem o valor do PACK e o ID da Textura;* veja a seção de "Patch de Texturas", para saber como devem ser formados;
20) map_Ns -s 4.000000 3.000000 1 07000000/0000.dds
ou
map_Ns -s 4.000000 3.000000 1 41000001/0004.tga
= representa a textura specular, caso o arquivo pack for "07000000" refere-se campo "generic_specular_map" do "IdxMaterial", caso for outro pack, refere-se ao campo "custom_specular_map" do "IdxMaterial";
* campo opcional;
* campo opcional;
* caso for referente ao campo "generic_specular_map" o valor do ID da textura será preenchido diretamente nesse campo;
* caso for referente ao campo "custom_specular_map" considere oque esta escrito na seção de "Patch de Texturas"; Nota e o campo "generic_specular_map" vai ficar prenchido como 0;
* referente ao parâmetro "-s 4.000000 3.000000 1" referente ao campo "specular_scale" do "IdxMaterial"; caso esse parâmetro esteja ausente o campo specular_scale será preenchido como 00;
* o primeiro parâmetro 4.000000, refere-se a X do specular_scale;
* o segundo parâmetro 3.000000, refere-se a Y do specular_scale;
* referente ao parâmetro "-s 4.000000 3.000000 1" referente ao campo "specular_scale" do "IdxMaterial"; caso esse parâmetro esteja ausente o campo specular_scale será preenchido como 00;
* o primeiro parâmetro 4.000000, refere-se a X do specular_scale;
* o segundo parâmetro 3.000000, refere-se a Y do specular_scale;
* o valor vai de 1 a 16;
* o calculo de conversão é: ((valor -1) /15)
(Patch de Texturas)
* o calculo de conversão é: ((valor -1) /15)
(Patch de Texturas)
21) No patch das texturas é definido o "PackID" e o "TextureID" do TPL;
22) o "PackID" esta definido no nome da pasta "/41000001/";
23) o "TextureID" esta definido no nome da textura "/0000.dds"
24) o campo "PixelFormatType" é definido pelo formato da textura (DDS/TGA) e em qual atributo a textura esta de definida (map_Kd/map_Bump/Bump/map_d/map_Ns);
25) os campos "width" e "height" é definido o programa abrindo as imagens, e pegando o valor no arquivo; (então os patch tem que ser validos)
25) os campos "width" e "height" é definido o programa abrindo as imagens, e pegando o valor no arquivo; (então os patch tem que ser validos)
26) é assim que é preenchido o TPL/IDXUHDTPL, para o arquivo IDXMATERIAL é pego o índice (ID) no TPL que corresponde com o "PackID" e "TextureID" do Path;
27) segue abaixo uma lista de Path validos:
map_Kd 41000001/0015.dds
map_Kd 41000001/0015.dds
map_Kd /41000001/0016.dds
map_Kd \41000001\0017.tga
map_Kd \41000001\0017.tga
map_Kd \\41000001\\0017.tga
map_Kd 41000001\\0017.tga
map_Kd 41000001\0018.dds
map_Kd 41000001\0018.dds
map_Kd qualquer coisa/qualquer coisa/41000001/0015.dds
map_Kd qualquer coisa\\qualquer coisa\\41000001\\0015.dds
map_Kd C:\\qualquer coisa\\qualquer coisa\\41000001\\0015.dds
28) segue abaixo uma lista de o que NÃO pode ter:
map_Kd C:\\qualquer coisa\\qualquer coisa\\41000001\\0015.dds
28) segue abaixo uma lista de o que NÃO pode ter:
map_Kd 0015.dds
map_Kd myfolder/0015.dds
map_Kd 41000001/mytexture.dds
map_Kd myfolder/mytexture.dds
29) a numeração das texturas é em decimal,
e a numeração dos Pack é em hexadecimal com 8 caracteres;
(Conclusão)
Documentação escrita por JADERLINK;
Data: 2023-11-28
map_Kd 41000001/mytexture.dds
map_Kd myfolder/mytexture.dds
29) a numeração das texturas é em decimal,
e a numeração dos Pack é em hexadecimal com 8 caracteres;
(Conclusão)
Documentação escrita por JADERLINK;
Data: 2023-11-28
Nenhum comentário:
Postar um comentário