Oi gente, tudo bem?
Marco, é justamente isso que estou tentando te explicar.
Da forma que você está seguindo os estudos, é muito mais difícil, muito mais.
E agora você quer escrever Shaders, essa é a parte mais difícil de todas, tem que conhecer todas as chamadas de Shaders e seus parâmetros no código do Mental Ray.
Na mensagem anterior eu disse para você começar a estudar a composição de materiais só com os recursos do Mental Ray e os mapas procedurais do Max, sem nenhum material Standard ou RayTrace.
Porque configurar o Render você já sabe, pode não saber os detalhes e macetes mais escondidos, mas já tira qualquer render sem problema.
Então, é a hora de estudar a composição de materiais puros do Mental Ray com os Shaders que vem com o Max e Shaders simples de terceiros.
Escrever Shader são muitos degraus acima disso e não tem como pular essas etapas, é impossível, porque para escrever um Shader tem que pelo menos saber montar um Shader com os componentes que o Mental Ray já oferece no Max, pois é a mesma coisa, só que vai escrever em vez de montar com os Shaders que vem com o programa.
Sem saber montar Shaders com os recursos que já vem no Max, fica muito difícil montar Shaders de terceiros e pode acontecer do Max ficar fechando na sua cara.
Não é bug, é porque colocou um Shader onde não deveria. Os Shaders de terceiros não tem a definição de categoria que o Max oferece, então, eles aparecem em qualquer lugar.
Se aplicar onde não pode, trava o Max e fecha o programa. Os Shaders que vem com o Max tem a tag para definir a categoria, assim, eles só aparecem onde podem ser aplicados, o que facilita muito o estudo e o entendimento do processo.
Por tudo isso que eu estou tentando te explicar que a sua linha de estudo é muito mais complicada, pulando etapas importantes e querendo fazer coisas que depende de anos de experiência com o Render.
Escrever Shader vai levar um bom tempo, eu estou estudando isso desde o Max 6 e só consigo fazer bebeirinhas.
Porque para criar novas funções no Render, é necessário compilar uma DLL do Shader em C++.
Agora, para escrever um Phenomenon, que não cria novas funções no Render, apenas gera um Shader, é bem mais fácil.
Mesmo assim, não tem como fazer sem saber montar Shaders com os recursos que já estão disponíveis no programa e sem conhecer os recursos das bibliotecas nativas do Mental Ray, assim como os códigos dos parâmetros que compõe cada um destes recursos.
Vou postar aqui um Shader que eu escrevi para estudo, é bem simples, mas permite a montagem de um material Blinn com Bump, transparência e reflexão sem usar nenhum material padrão do 3ds max.
EU ia fazer em inglês, mas achei melhor fazer em português para depois poder colocar no site e ajudar os iniciantes que querem compor materiais puros do Mental Ray.
Copia e cola no Notepad, depois, muda a extensão para MI e coloca na pasta Autoload/Include do Mental Ray.
Use-o com um Output no diffuse, para poder controlar a cor em relação ao nível de FG na cena pelo RGB Level, se não tiver FG, não precisa.
3D1 Blinn Base Shader
declare phenomenon
color "3D1_Blinn_Base" (
struct "p" {
color "Ambience",
color "Ambient",
color "Diffuse"
},
struct "s" {
color "Specular",
scalar "Roughness",
scalar "Spec Ior"
},
struct "r" {
color "Ref Color",
color "Transp Color"
},
struct "l" {
integer "Mode",
array light "Lights"
}
)
shader "Blinn"
"mib_illum_blinn" (
"ambience" = interface "p.Ambience",
"ambient" = interface "p.Ambient",
"diffuse" = interface "p.Diffuse",
"specular" = interface "s.Specular",
"roughness" = interface "s.Roughness",
"ior" = interface "s.Spec Ior",
"mode" = interface "l.Mode",
"lights" = interface "l.Lights",
)
shader "Transparency"
"mib_transparency" (
"input" = "Blinn",
"transp" = interface "r.Transp Color"
)
shader "Reflex"
"mib_reflect" (
"input" = "Transparency",
"reflect" = interface "r.Ref Color"
)
root = "Reflex"
apply texture, material
gui "gui_3D1_Blinn_Base" {
control "Global" "Global" (
"category" "Illumination",
"uiName" "3D1 Blinn Base",
"addApply" "illum",
)
control "p" "struct" ("uiName" "Parâmetros")
{
control "Ambience" "color" ("uiName" "Ambientação", "value" 0.0 0.0 0.0)
control "Ambient" "color" ("uiName" "Ambiente", "value" 0.0 0.0 0.0)
control "Diffuse" "color" ("uiName" "Cor difusa", "value" 1.0 1.0 1.0)
}
control "s" "struct" ("uiName" "Especular")
{
control "Specular" "color" ("uiName" "Cor especular", "value" 1.0 1.0 1.0)
control "Roughness" "scalar" ("uiName" "Rugosidade", "value" 0.2)
control "Spec Ior" "scalar" ("uiName" "IOR especular", "value" 10)
}
control "r" "struct" ("uiName" "Reflexo e Transparência")
{
control "Ref Color" "color" ("uiName" "Cor de reflexo", "value" 0.1 0.1 0.1)
control "Transp Color" "color" ("uiName" "Cor de transparência", "value" 0.0 0.0 0.0)
}
control "l" "struct" ("uiName" "Luzes")
{
control "Mode" "integer" ("uiName" "Modo das luzes", "value" 0)
control "Lights" "array light" ("uiName" "Luzes")
}
}
end declare
Veja como você define o tipo de parâmetro primeiro, depois você chama um Shader da livraria do Mental Ray e indica a qual parâmetro desse Shader cada parêmtro do seu Shader se refere, por fim, define a aparência da interface no GUI.
Parece uma babaquice, mas para fazer uma bobeira como essa funcionar, eu apanhei bastante.
Eu vou tentar colocar o Output dentro dele, para não ter que aplicar depois no Diffuse e vou tentar colocar recursos de AO também.
Se eu conseguir, eu coloco aqui para você baixar e usar.
Doidim, o seu caso eu já acho que é diferente, mas o que você está fazendo é o mesmo que o Marco, querendo pular etapas importantes no estudo.
Se para o Marco eu indiquei que ele estude a composição de Shaders com os recursos próprios do Mental Ray.
Para você eu sugiro que estude o Mental Ray em si, porque não tem como trabalhar com ele sem saber configurar o render.
Então, tem que estudar todos os parâmetros das fichas do Mental Ray que aparecem na janela Render Scene e conseguir configurar qualquer cena sem problema.
Já que todos os materiais podem ser feitos com os materiais padrões do Max e alguns poucos Shaders simples do Mental Ray.
Só depois disso que vai partir para configurar Shaders puros com recursos exclusivos do Mental Ray, que é onde o Marco está agora.
Depois disso vai começar a estudar composição com Shaders de terceiros e composições complexas de materiais.
Por fim vai estudar como escrever Shaders simples para o Mental Ray.
Sem seguir uma linha adequada de estudo, fica muito mais difícil, porque o Mental Ray não é o V-Ray.
Material é uma coisa e Shader do Mental Ray é outra, Shader para o Mental Ray é um componente do Render, não necessariamente do material.
O Shader que eu escrevi acima e dei para o Marco, seria impossível de ser feito dessa forma no V-Ray, só programando em C++ e conhecendo o SDK do V-Ray.
Abraços