Manipulando materiais
1. O que é Material Instance?
A Mateial Instance ou Instanciação de Material é uma maneira de criar um Material pai, que pode então ser usado como base para fazer uma ampla variedade de Materiais filhos de aparência diferente. Para obter essa flexibilidade, o Material Instancing usa um conceito chamado herança: as propriedades do pai são fornecidas aos seus filhos. Aqui está um exemplo de herança de material em ação.
1.1. Convertendo nós em parâmetros
Convertemos os nós em parâmetros para que possam ser manipulados posteriormente pelo Material Instance. Para que possamos exemplificar segue abaixo os passos.
Vamos criar o material base com o nome M_Base_Master
.
Agora vamos converter os nós em parâmetros.
Resultado dos material com parâmetros.
Em seguida definimos os seguintes atributos nos parâmetros:
Parameter name
- Nome para o parâmetro que representa o input do material.Group
- Usado para agrupar os parâmetros por um determinado valor ou tema.
Sugestão de grupos:
-
Texture Parameter Values: Diffuse,NormalMap, Rough Texture;
-
Scalar Parameter Values: Valores escalares;
-
Metallic, Roughness: Vector Parameter Values : Color (R,G,B,A), UVTiling(R,G,B,A).
1.2. Criando Material Instance
Selecione o material M_Base_Master
ou outro material e com o botão direito acione o menu de contexto e escolha Create Material Instance
.
2. Editor de material Instance
-
Details
- Propriedades e acesso aos parâmetros; -
Parameter Groups
- Grupo definido nos parâmetros dentro do material pai. Os parâmetros estão agrupados por tipo de valor Texture, Scalar e Vector; -
Parent
- Material pai.
3. Switch Parameter
StaticSwitchParameter
recebe duas entradas e gera a primeira, se o valor do parâmetro for verdadeiro, e a segunda, caso contrário. No exemplo abaixo se o parâmetro for verdadeiro a multiplicação com a cor pode ser realizada caso contrário o textura não é multiplicada.
4. Organizando parâmetros e definindo valor máximo e mínimo
Podemos organizar os parâmetros agrupando com a opção Group
do nó e com Sort Priority
ordenamos a visualização.
4.1. Group
No exemplo abaixo criamos os grupos:
-
Base Parameters;
-
Multipliers;
-
UV Tiling.
4.2. Valor Mínimo e Máximo
Podemos limitar os valores mínimo e máximo que podem ser passados como parâmetro utilizando a opção Slider
.
5. Implementando Material Instance com Blueprint
Podemos manipular os objetos do tipo material com scripts Blueprint possibilitando implementar objetos com materiais mais interativos, como por exemplo, um objeto que muda de cor ao click do mouse.
Para exemplificar utilizaremos o Level Blueprint interagindo com um objeto na cena.
Selecione um ator no View Port
e adicione uma referência no Open Level Blueprint
com a opção Create a Reference to
, em seguida vamos utilizar o nó Create Dynamic Material Instance
para criar uma associação de um material com a nossa lógica.
-
Create Dynamic Material Instance
- Cria um Material Instance dinâmico que pode ser modificado durante a gameplay. O material referenciado emSource Material
deve conter parâmetros; -
Set Texture Parameter Value
- Atualiza o valor do parâmetro informado emParameter Name
, é do tipo textura; -
Set Scalar Parameter Value
- Atualiza o valor escalar do parâmetro informado emParameter Name
com o valorvalue
; -
Set Vector Parameter Value
- Atualiza o vetor do parâmetro informado emParameter Name
com o valorvalue
.
O script habilita o click do mouse e quando selecionado um objeto o evento customizado Change Color e acionado.
6. Parameter Global
Podemos definir parâmetros globais, que afetem todo o jogo, para que os materiais possam referenciar parâmetros escalares e vetoriais.
Informação: É uma ferramenta poderosa que os artistas podem usar para obter dados globais em muitos materiais de uma só vez. Ele também pode ser usado para gerar efeitos por nível, como quantidade de neve, quantidade de destruição, umidade, etc., que, de outra forma, exigiria a configuração de valores de parâmetros individuais em muitas instâncias de materiais diferentes em seu nível.
Criando parâmetros globais utilizamos a opção do menu de contexto Materials & Textures > Material Parameter Gobal
.
Depois de criado o objeto podemos adicionar e editar valores do tipo Scalar
e Vector
no objeto Parameter Collection
. Exemplo de nome MPC_Base
.
No Editor de Materiais usamos o menu de contexto (RMB) e escolhemos a opção Material Parameter Collection
selecionando o objeto criado com os parâmetros em Collection
, MPC_Base
.
7. Material Function
Material Functions ou Funções de material são pequenos fragmentos de códigos gráficos de material que podem ser salvos em pacotes e reutilizados em vários materiais, em outras palavras são funções de programação. Seu objetivo é agilizar o processo de criação de material, dando acesso instantâneo a redes comumente usadas de nós materiais. São compostas basicamente por entradas de parâmetros e saída de dados.
Utilizamos o menu de Contexto Material & Textures
> Material Function
para criar as funções;
-
Perceba que a função apresenta um nó de resultado;
-
Podemos adicionar parâmetros para a função.
7.1. MakeMaterialAttribute
O nó Make Material Attributes
une vários atributos. Isso é útil ao criar suas próprias funções de camada de material, pois você terá acesso a todos os atributos padrão para sua saída. Isso também pode ser usado para configurações de material complexas nas quais você deseja definir mais de um tipo de material e combiná-los, tudo dentro de um material.
Ao usar a nó é necessário configurar o nó resultado do material principal com Use Material Attribute
para True
.
7.2. BreakMaterialAttribute
É o inverso de MakeMaterialAttribute
possibilitando a separação dos atributos recebidos por uma função.
7.3. Parâmetros dentro das funções
Podemos adicionar parâmetros utilizamos o nó Input <Type>
.
Criamos o nó e ajustamos as propriedades do parâmetro:
-
Input Name
- Nome do parâmetro; -
Input Type
- Lista de tipos (VectorX, Scalar, Texture); -
Preview value
- Valores que podem ser usados como padrão; -
Use Preview value as Default
- Usa os valores configurados como padrão.
Chamamos a função dentro de um material expression utilizando:
-
F + LMB;
-
LMB e digitando
Function/MaterialFunctionCall
.
Logo em seguida configuramos a propriedade Material Function
.
7.4. Adicionando Propriedades em uma material Function
Usamos SetMaterialAttributes
para adicionar outros atributos no resultado de uma função que retorna um conjunto de atributos.
7.5. BlendMaterialAttribute
Usamos BlendMaterialAttribute
para misturar duas funções, implementaremos duas funções, MF_Base e MF_Rust_Base, para exemplificar Make Material Attributes.
Função com a cor da base.
Função para utilizar na mistura.
Fazendo a mistura das duas funções.