2023/11/28

RE4 UHD BIN TOOL - Documentação: MTL

Esse post faz parte da documentação do programa/tool: JADERLINK/RE4-UHD-BIN-TOOL

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;

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;

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)
            (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
    * 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"
    * 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;

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"; 
            * 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;
        * 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;
            * o valor vai de 1 a 16;
            * 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)

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/0016.dds
map_Kd \41000001\0017.tga
map_Kd \\41000001\\0017.tga
map_Kd 41000001\\0017.tga
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 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

Nenhum comentário:

Postar um comentário