2023/11/28

RE4 UHD BIN TOOL - Documentação: IDXMATERIAL

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

1) o arquivo "IDXMATERIAL" é um dos arquivos gerado pela tool quando é passado por parâmetro o arquivo "BIN";

2) o arquivo "BIN" contem a modelagem 3D do objeto;

3) Aviso: essa documentação é referente ao arquivo IDXMATERIAL da versão UHD, mas vale também para a versão de PS2;
        * no momento desse postagem, a tool de bin de ps2 ainda não tem o arquivo "IDXMATERIAL", mas em uma atualização futura será adicionada;

4) o Material na versão UHD é composto por 24 Bytes, já na versão de PS2 são 12 Bytes;

5) os campos de texturas referem-se ao ID do TPL (TPL Entry), que na versão UHD é um arquivo que faz referencia aos arquivos PACK, já na versão de PS2 o TPL já é as próprias texturas.

(Explicando o conteúdo do Arquivo IDXMATERIAL)

6) # a linha começada com # são comentários, são ignorados pelo programa;
(linhas em branco também são ignoradas pelo programa);

7) # Dentro do arquivo a conteúdo que são opcionais e podem ser omitidos, nessa documentação estarei colocando todos os conteúdos/comandos possíveis;

8) # os parâmetros/comandos são separados por : dois pontos;

9) # cada objeto dentro do IDXMATERIAL vou chamar de "Material Entry";

10) # segue abaixo a lista de comandos:
        * os comando não faz diferenciação de letras maiúsculas e minúsculas;

11) O tamanho de todos os campos é de 1 Byte então os valores são de 0 a 255;

(Comandos)

12) UseMaterial:UHD_MATERIAL_000 = esse é o comando de inicio de um novo material;
        * 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;
        * os nomes dos materiais devem ser os mesmo presentes no arquivo OBJ/SMD;
        * campo obrigatório;

13) material_flag:00 = esse campo é um conjunto de Flags bit a bit;
        * o campo esta em Hexadecimal, é composto por 2 caracteres;
        * segue abaixo a função de cada bit:
            
8 - 00000001: Enable bump_map
            7 - 00000010: Enable generic_specular_map, intensity_specular, specular_scale
            6 - 00000100: Enable opacity_map
            5 - 00001000: flag4 [flag não usada]
            4 - 00010000: Enable custom_specular_map
            3 - 00100000: flag6 [flag não usada]
            2 - 01000000: flag7 [flag não usada]
            1 - 10000000: Normals Effect
            0 - 00000000: [nenhuma flag ativada]
                (posição flag - bits: nome da flag)
        * segue abaixo uma lista de combinações de flags usado pelo jogo:
            00: 00000000: nada ativo
            01: 00000001: bump_map, // generic_specular_map(recebe 00), intensity_specular(recebe FF), specular_scale(recebe 00)
            02: 00000010: generic_specular_map, intensity_specular, specular_scale
            03: 00000011: (1 + 2) = bump_map, generic_specular_map, intensity_specular, specular_scale
            04: 00000100: opacity_map
            06: 00000110: (4 + 2) = opacity_map, generic_specular_map, intensity_specular, specular_scale
            07: 00000111: (1 + 4 + 2)  = bump_map, opacity_map,  generic_specular_map, intensity_specular, specular_scale
            13: 00010011: custom_specular_map, bump_map, generic_specular_map, intensity_specular, specular_scale
            83: 10000011: (Normals Effect) (1 + 2) = bump_map, generic_specular_map, intensity_specular, specular_scale
            85: 10000101: (Normals Effect) (1 + 4) = bump_map, opacity_map, // generic_specular_map(recebe 00), intensity_specular(recebe FF), specular_scale(recebe 00)
            87: 10000111: (Normals Effect) (1 + 4 + 2)  = bump_map, opacity_map,  generic_specular_map, intensity_specular, specular_scale
                (Valor do campo "
material_flag" : bits : campos ativos)
        * a flag "
Normals Effect" ativa um efeito no modelo usando a textura do campo bump_map;
        * as outras flags são explicadas onde são usadas mais abaixo;
        * o valor Default é 00;

14) diffuse_map:0 = esse campo representa a textura principal do material, é a textura que você vai ver no jogo;
        * a textura informada aqui tem que ser do tipo DDS;
        * o valor é o ID do TPL, esta em decimal;
        * esse campo é obrigatório;
        * esse campo sempre esta ativo mesmo se material_flag for 00;
        * o valor Default é 0;
        * lembrando o numero refere-se ao ID do TPL e não da textura;

15)  bump_map:255 = esse campo representa a textura "Normal";
        * para esse campo poder ser usado a flag "Enable bump_map" deve estar ativa;
        * a textura informada aqui tem que ser do tipo TGA;
        * o valor é o ID do TPL, esta em decimal;
        * quando a flag desse campo não esta ativa ele é preenchido com 255;
        * o valor Default é 0;
        * nota: os valores dos campos "
intensity_specular_r", "intensity_specular_g", intensity_specular_b, fazem efeito sobre esse campo;

16) opacity_map:255 = esse campo representa a textura de "Transparência";
        * para esse campo poder ser usado a flag "Enable opacity_map" deve estar ativa;
        * a textura informada aqui tem que ser do tipo TGA;
        * o valor é o ID do TPL, esta em decimal;
        * quando a flag desse campo não esta ativa ele é preenchido com 255;
        * o valor Default é 0;
        * as texturas DDS não suportam transparecia, então para ter transparecia na sua textura, você deve usar uma textura de transparência;

17) generic_specular_map:255 = esse campo é o ID da textura de especular genérica;
        * para esse campo poder ser usado a flag "Enable generic_specular_map" deve estar ativa;
        * o valor desse campo vai de 0 a 4 e referem-se ao ID das texturas do PACK 07000000;
        * quando a flag desse campo não esta ativa ele é preenchido com 255;
        * o valor Default é 0;
        * o nome do campo diz specular, mas o efeito seria um tipo de efeito de luz;
            (É uma textura reflexiva, imita um destaque especular);
        * nota: os valores dos campos "intensity_specular_r", "intensity_specular_g", intensity_specular_b, fazem efeito sobre esse campo;
        * nota2: o campo "specular_scale" interfere nesse campo;

18) intensity_specular_r:0 = intensidade de cor (RED);
        * para esse campo poder ser usado a flag "Enable generic_specular_map" ou "Enable bump_map" ou "Enable custom_specular_map" deve estar ativa;
        * quando a flag desse campo não esta ativa ele é preenchido com 0;
        * o valor Default é 0;
        * esse campo define a cor dos efeitos;

19) intensity_specular_g:0 = intensidade de cor (GREEN);
        * o mesmo que expliquei acima;

20) intensity_specular_b:0 = 
intensidade de cor (BLUE);
        * o mesmo que expliquei acima;

21) unk_08:0 = campo desconhecido, o valor é sempre Zero;
        * o valor Default é 0;

22) unk_09:0 = 
campo desconhecido, o valor é sempre Zero;
        * o valor Default é 0;

23) specular_scale:00 = interfere na escala do 
generic_specular_map;
        * 
para esse campo poder ser usado a flag "Enable generic_specular_map" ou "Enable custom_specular_map" deve estar ativa;
        * campo em hexadecimal;
        * o valor Default é 0;
        * o primeiro caractere representa a quantidade de repetição em X;
        * o segundo caractere representa a quantidade de repetição em Y;
        * para entender o funcionamento desse campo, você vai ter que ver ele na pratica;

24) unk_11:0 = 
campo desconhecido, o valor é sempre Zero;
         * o valor Default é 0;
         * esse campo só existe na versão de UHD, na de PS2 não existe;

25) custom_specular_map:255 = você pode definir uma textura customizada para o specular;
        * para esse campo poder ser usado a flag "Enable custom_specular_map" deve estar ativa;
        * a textura informada aqui tem que ser do tipo TGA;
        * o valor é o ID do TPL, esta em decimal;
        * quando a flag desse campo não esta ativa ele é preenchido com 255;
        * o valor Default é 0;
        * nota: os valores dos campos "intensity_specular_r", "intensity_specular_g", intensity_specular_b, fazem efeito sobre esse campo;
        * nota2: o campo "specular_scale" interfere nesse campo;

26) # os campos citados abaixo só existe na versão de UHD, são opcionais e omitidos no arquivo, o valor deles é sempre zero, esses campos no arquivo BIN vem antes dos campos citados anteriormente;
        * esses campos estão em decimal
        * o valor Default é 0;
        * o nome dos campos são:
            unk_min_11:0
            unk_min_10:0
            unk_min_09:0
            unk_min_08:0
            unk_min_07:0
            unk_min_06:0
            unk_min_05:0
            unk_min_04:0
            unk_min_03:0
            unk_min_02:0
            unk_min_01:0

27) # fim do "Material Entry" o próximo "Material Entry" é iniciado com "UseMaterial:UHD_MATERIAL_001" por exemplo;
* Nota: caso haja nome de materiais repetidos a segundo ocorrência será ignorada;

(Conclusão)

28) A nomeação dos campo, foi feita seguindo a documentação de "ALbert" do arquivo "ALbert_on_BIN_textures.rtf", arquivo que me foi enviado por "Mr.Curious";

Documentação escrita por JADERLINK;
Data: 2023-11-28

Nenhum comentário:

Postar um comentário