Neste tutorial, você se aprofundará mais em materiais e instâncias de material. Você aprenderá sobre os conjuntos de ferramentas e técnicas de materiais que podem ajudar você a fazer escolhas artísticas, aumentar a velocidade de desenvolvimento e controlar a sobrecarga no seu projeto. Posteriormente, você aplicará materiais aos ativos do jogo e usará Blueprints para controlar materiais com base nas ações do público jogador no seu nível.
Antes de começar
Este módulo requer iluminação de nível brilhante. Se você reduziu a iluminação no nível conforme o tutorial anterior, use as seguintes configurações:
Directional Light Intensity | 6.0 |
Min EV100 | False |
Max EV100 | False |
Materiais e instâncias de material
Materiais definem as propriedades da superfície dos ativos no jogo. Assim como as texturas, os materiais são como papel de presente que cobre uma malha, alterando a aparência da superfície e como ela reage às fontes de luz.
Ao contrário das texturas, os materiais oferecem personalização não destrutiva por meio de um fluxo de trabalho baseado em nós. Por exemplo, os materiais contêm propriedades predefinidas que imitam atributos de substâncias do mundo real, como pedra ou metal. A única diferença entre os materiais na imagem a seguir são as propriedades Metallic (metálica) e de Roughness (rugosidade).
Materiais podem combinar texturas e lógica para produzir camadas de substância complexas. Por meio dessas combinações, você pode tomar decisões artísticas que influenciam a criação de mundos no seu projeto. Podendo ser tão simples quanto adicionar arranhões a ativos de jogo de metal, ou tão complexo quanto água escorrendo pela areia.
Além de escolhas artísticas, você pode usar os materiais para otimizar seu processo de desenvolvimento. Por exemplo, materiais produzem tipos de arquivos filhos, chamados de instâncias de material. Uma instância de material é uma cópia que herda as propriedades do seu material pai. As instâncias podem sobrepor essas heranças de forma não destrutiva para manter suas propriedades exclusivas.
Em um ambiente de desenvolvimento, você pode usar materiais pais e instâncias de material para:
Receber feedback visual instantâneo: as alterações feitas nas instâncias ficam imediatamente visíveis em todas as janelas de visualização, sem a necessidade de recompilar o shader do material pai.
Melhor desempenho: as instâncias usam o mesmo código de shader do pai, o que pode reduzir a quantidade total de shaders a compilar e a troca de shader durante o tempo de execução.
Simplificar o fluxo de trabalho: as instâncias eliminam a complexidade expondo apenas as propriedades relevantes para as equipes artísticas.
Interagir com Blueprints: como os materiais e suas instâncias filhas utilizam lógica, as propriedades dos materiais podem ser controladas externamente pelos Blueprints.
Dicas:
Os materiais não estão limitados a malhas. Eles podem ser usados para interface de usuário, pós-processamento, iluminação e muito mais.
Os materiais não são shaders; eles são uma interface que converte silenciosamente expressões baseadas em nós para HLSL (High-Level Shader Language, ou linguagem de shader de alto nível), para calcular a aparência final de um ativo.
A troca de sombreamento ocorre quando a Unreal Engine seleciona o shader relevante para o ativo que está renderizando. A troca frequente de shaders pode causar travamentos durante o tempo de execução.
Vamos analisar as ferramentas e interfaces que você usará neste tutorial.
A anatomia de um material
Para melhor entender os conjuntos de ferramentas de materiais, vamos abrir um material existente. No Navegador de Conteúdo, acesse o seguinte caminho:
All, Content, LevelPrototyping, Materials
Dentro da pasta Materials, procure M_FlatCol.
Observe a nomenclatura desse material; ela usa o prefixo M_. Essa é uma convenção de nomenclatura comum da Unreal Engine que mantém os materiais distintos de outros arquivos. Embora o prefixo exato dependa de você, as convenções de nomenclatura de toda a equipe podem evitar confusão quando as equipes de desenvolvimento trabalham com centenas de ativos.
Clique duas vezes em M_FlatCol. Assim, abrimos a janela do Editor de Material. Para este tutorial, as abas mais importantes neste editor são a Preview Window (janela de pré-visualização), o Material Graph (gráfico de material) e o painel Detalhes.
| Número | Nome da aba | Descrição |
|---|---|---|
1 | Preview Window | Exibe um exemplo em tempo real do material que você está editando. Contém as opções para alterar a iluminação, o modo de visualização e a malha de pré-visualização. |
2 | Material Graph | Os materiais são criados pela combinação de nós (chamados de expressions) neste gráfico baseado em nós. Por padrão, os materiais vêm com um nó no gráfico chamado de nó de material de base ou nó-raiz do material. Em vez de usar um mapa de textura, |
3 | Painel Detalhes | Uma janela de propriedades para todas as expressões de material selecionadas. Se nenhum nó for selecionado, ele exibe as propriedades básicas do material. As propriedades Material Domain, Blend Mode e Shading Model afetam quais propriedades aparecem no nó-raiz do material no gráfico. |
Experimente alterar a Base Color do material seguindo estes passos:
No gráfico de material, clique duas vezes no nó Base Color.
No Color Picker, digite o HEX sRGB
FFBC00FFe clique em OK.Salve o material clicando em Save, File, Save ou CTRL+S.
Se os ativos no projeto usarem M_FlatCol, você perceberá uma mudança no nível.
Volte ao Navegador de Conteúdo e procure MI_DefaultColorway. Esta é uma instância de material que usa M_FlatCol como pai.
Clique duas vezes para abrir o Editor de Instância de Material.
Diferente do Editor de Material, o Editor de Instância de Material não permite personalização. No painel Detalhes, observe que M_FlatCol é exibido sob o cabeçalho Parent. Como os materiais pais passam propriedades aos filhos, a cor base dessa instância deve ser amarela; mas dê uma olhada na janela de pré-visualização. A malha de amostra ainda está cinza.
Isso ocorre porque a propriedade Base Color em M_FlatCol está exposta (ou seja, editável) e foi substituída por uma cor cinza. As instâncias podem ter propriedades únicas ao substituir as propriedades pais expostas.
Vamos fazer dois experimentos diferentes:
Remover a substituição.
Aplicar a substituição para alterar a cor base desta instância.
Para acompanhar, siga estes passos:
No painel Detalhes, em Surface Properties, desmarque Base Color. Assim, você remove a substituição. Na janela de pré-visualização, a malha de exemplo deve passar de cinza para amarelo.
Para reaplicar a substituição, selecione Base Color. Clique na amostra de cores para abrir o Color Picker (seletor de cores) e escolher uma nova cor.
Salve a instância de material.
Observe que os ativos no seu nível que usam esta instância serão atualizados com a nova cor base, mas os ativos que usam M_FlatCol permanecerão amarelos.
Isso ocorre porque os materiais são hierárquicos:
Os materiais pais podem propagar alterações para as instâncias filhas.
As instâncias podem possuir propriedades expostas exclusivas.
E também podem propagar alterações para suas próprias instâncias filhas.
Porém, não podem propagar alterações aos materiais pais.
Um material pai eficiente e útil atua como uma base flexível para todas as instâncias filhas, reduzindo a quantidade de compilações, trocas de shader e ações repetitivas no seu fluxo de desenvolvimento. Ao criar um material pai, considere quais propriedades sua equipe acessará com mais frequência e iterar.
Para restaurar os materiais alterados nesta seção, defina a cor base de "M_Flat_Col" como 767676FF e a cor base de "MI_DefaultColorway" como C0C0C0FF.
Para se aprofundar na interface de usuário do Editor de Material, consulte Interface do usuário do Editor de material.
Como criar um material pai
Nesta seção, você compilará um material pai com as propriedades Base Color, Metallic, Normal e Roughness. Você controlará essas propriedades usando texturas, expressões e uma combinação de ambas.
Para criar um novo material, siga estes passos:
No Navegador de Conteúdo, no caminho do arquivo All, Content, AdventureGame, Artist, Materials, clique em Add (adicionar) e selecione Material na lista.
Dê ao material o nome de
M_Surfaces.Clique duas vezes em
M_Surfacespara abrir o Editor de Material.
Em seguida, você usará texturas para controlar as propriedades no material.
Controle as propriedades por meio de texturas
Os mapas de texturas (ou texturas) são arquivos de imagem que podem ser organizados em camadas e personalizados dentro de um material para gerar diferentes resultados visuais.
As texturas são úteis para materiais com detalhes complexos ou variação espacial, pois cada pixel armazena informações RGB e alfa exclusivas. Por exemplo, ao criar um material que imita metal arranhado, um mapa especular usa informações alfa para identificar áreas que devem refletir a luz e áreas que não devem.
Nesta seção, você usará a expressão TextureSample para aplicar um mapa difuso e um mapa de normais ao material.
Um mapa difuso contém cores básicas e propriedades visuais, sem informações de iluminação. Um mapa de normais simula a textura da superfície (como saliências ou rachaduras) sem adicionar geometria à malha.
Para adicionar esses mapas de texturas, siga estes passos:
Clique com o botão direito do mouse no gráfico, procure e selecione TextureSample na lista. Você também pode usar o atalho de teclado T e botão esquerdo do mouse.
Adicione dois nós TextureSample e mova um para baixo do outro.
Selecione o nó TextureSample de cima. No painel Detalhes, em Material Expression Texture Base, clique no menu suspenso Texture vazio e procure
DefaultDiffuse. Selecione o mapa difuso na lista.Com o nó superior TextureSample ainda selecionado, conecte a saída RGB à entrada Base Color no nó-raiz do material (
M_Surfaces).Selecione o nó TextureSample debaixo. No painel Detalhes, em Material Expression Texture Base, clique no menu suspenso Texture e procure
DefaultNormal. Selecione o mapa de normais na lista.Com o nó inferior TextureSample ainda selecionado, conecte a saída RGB à entrada Normal no nó-raiz do material.
Salve seu material.
O gráfico de material deve ter ficado assim:
Em seguida, você usará expressões para controlar as propriedades.
Como controlar as propriedades por meio de constantes
Nesta seção, você criará um material semelhante a pedra usando uma expressão constante para controlar as propriedades Metallic e Roughness. O uso de constantes para controlar propriedades é útil para ajustes globais e uniformes.
As constantes controlam as propriedades por meio de um único valor de float. Por exemplo, Metallic tem um valor de float que varia de 0 a 1. Um valor de 0 imita superfícies não metálicas (como plástico) e 1 simula superfícies metálicas (como cromo).
Na Unreal Engine, os reflexos em superfícies metálicas são matizados pela cor base, e os reflexos em superfícies não metálicas são matizados por fontes de luz de ambiente.
Roughness também possui um valor de float que varia de 0 a 1. Um valor de 0 simula superfícies lisas e 1 simula superfícies rugosas. A rugosidade afeta como a luz é espalhada por uma superfície; superfícies suaves têm um reflexo especular mais concentrado (parecendo lustrosas), e superfícies rugosas têm um reflexo difuso (parecendo foscas).
Usando constantes para controlar essas propriedades, é possível simular materiais como plástico fosco, plástico lustroso, metal rugoso ou cromo suave.
Para criar seu material de pedra, siga estes passos:
Clique com o botão direito no gráfico de material e selecione Constant na lista. Você também pode usar o atalho de teclado 1 + botão esquerdo do mouse. Adicione duas constantes.
Arraste o primeiro pin da constante e conecte-o na entrada Metallic no nó base. Conecte a segunda constante à entrada Roughness.
Com a constante de metálico selecionada, verifique se o valor é
0.Com a constante de rugosidade selecionada, defina o valor como
1.Salve seu material.
O gráfico de material deve ter ficado assim:
Na próxima seção, você aprenderá mais sobre texturas em mosaico dentro dos materiais.
Como dimensionar e ladrilhar texturas
Você deve ter percebido que os mapas de normais e difusos se parecem com ladrilhos. Nesta seção, você usará expressões de material para dimensionar UVs e criar um piso de pedra que pode ser repetido infinitamente em todas as direções. Isso é chamado de ladrilhamento.
O ladrilhamento costuma ser usado para cobrir malhas grandes sem aumentar a sobrecarga; reduzir o tamanho e ladrilhar uma textura é menos custoso do que usar texturas grandes e de alta resolução que são exclusivas de malhas específicas.
A alocação de recursos geralmente afeta as decisões tomadas no desenvolvimento de jogos. Ao conservar recursos em áreas onde o público jogador pode não concentrar sua atenção (como o chão), sua equipe tem mais recursos para gastar em texturas de alta resolução, exclusivas ou pintadas à mão para personagens, itens ou geometrias que recebem closes em cinematografia em tempo real.
Aqui, você usará a expressão Texture Coordinate (coordenada de textura) para controlar o ladrilhamento dos mapas difuso e de normais. Você também usará uma nova expressão chamada "Multiply". A expressão Multiply recebe duas entradas e as combina em uma única saída.
Para criar uma textura ladrilhada, siga estes passos:
Na janela de pré-visualização do Editor de Material, defina a malha como um plano primitivo para ver o material com mais clareza.
Talvez seja necessário ajustar a iluminação de pré-visualização para ver a textura melhor. Na janela de pré-visualização, segure L e o botão esquerdo do mouse para arrastar a fonte de luz.
No gráfico de material, clique com o botão direito e adicione um nó Texture Coordinate na lista.
Arraste da saída do nó Texture Coordinate, procure e crie um nó Multiply.
Arraste da entrada B do nóMultiply e crie uma constante.
Defina o valor de float da constante como
1.Arraste da saída do nó Multiply e conecte-a à entrada UVs nos nós Diffuse e Normal Texture Sample.
Seu material de ladrilhamento está pronto. Vamos fazer dois experimentos com ladrilhamento: dimensionamento com números inteiros e dimensionamento com frações.
No gráfico de material, selecione a constante que controla a coordenada de textura.
Defina o valor como
2.
Como os mapas difuso e de normais são uma grade de blocos 5x5 em sua escala nativa (1.0), dimensioná-los em 2 produz uma grade de blocos 10x10. Se você olhar de perto, poderá identificar onde as imperfeições da textura se repetem.
Agora, defina o valor como 0.5. Observe que a textura não está se repetindo corretamente. Se o mapa difuso fosse uma grade de 6x6, o dimensionamento para 0.5 não seria interrompido. É importante considerar como uma textura será redimensionada na Unreal Engine quando estiver criando mapas.
Os UVs de uma malha também podem afetar como uma textura é ladrilhada; UVs esticados podem causar o alongamento indesejado da textura. Você aprenderá mais sobre isso posteriormente neste tutorial e descobrirá uma solução na próxima parte desta série de tutoriais.
Manutenção do gráfico de material
Vamos pensar sobre organização. À medida que o gráfico de material fica mais complexo, pode ser útil organizar os nós e manter a lógica transparente para uma equipe de desenvolvimento, ou para se lembrar disso durante o desenvolvimento. Para manter a organização, você pode criar limites e cabeçalhos superficiais no gráfico usando caixas de comentários.
Para criar uma caixa de comentários, siga estes passos:
Selecione os nós Texture Coordinate e Multiply. Pressione a tecla de atalho Q para alinhá-los horizontalmente.
Selecione Texture Coordinate, Multiply e Constant, e pressione a tecla de atalho C para comentar.
Renomeie o cabeçalho da caixa de comentários para
UV Tiling.Salve seu material.
Para limpar as splines brancas do conector, clique duas vezes nelas para adicionar uma pausa de depuração. Pressione Q para alinhar expressões ou pausas de depuração horizontalmente.
Seu gráfico de material deve ter ficado assim:
Como controlar as propriedades por meio de Constant3Vectors
Agora que você já conhece as constantes, já pode usar o Constant3Vector. Como uma variável de vetor, Constant3Vector pode conter três valores de float em vez de um. Isso é útil para ajustar coordenadas XYZ ou informações RGB.
Nesta seção, você usará um Constant3Vector para definir uma cor RGB. Você usará um nó de multiplicação para combinar essa cor com o mapa difuso e alterar o matiz de forma não destrutiva.
Para alterar o matiz do mapa difuso, siga estes passos:
No gráfico de material, arraste a saída RGB do nó Diffuse Texture Sample e crie um nó Multiplyno menu de seleção.
Arraste a saída do nó Multiply e conecte-o à entrada Base Color do nó-raiz do material.
Arraste da saída B do nó Multiply e crie um nó Constant3Vector.
Clique duas vezes no nó Constant3Vector na caixa de cores para abrir o seletor de cores e escolha uma cor ou siga digitando o "HEX sRGB"
CDDAFFFF.Selecione os nós "Constant3Vector" e "Multiply" e pressione C para criar uma caixa de comentários chamada
Diffuse Hue.Salve seu material.
O gráfico de material deve ter ficado assim:
O material pai agora está completo. Na próxima seção, você aprenderá mais sobre como trabalhar com hierarquias de materiais e propagar alterações para instâncias.
Valores estáticos e parâmetros
Até agora, você trabalhou exclusivamente com valores estáticos. Os valores estáticos são definidos durante o tempo de compilação e não podem ser alterados no tempo de execução. Na próxima seção, você aprenderá como converter valores estáticos em parâmetros. Parâmetros podem ser modificados no tempo de execução por meio de Blueprints.
Lembra da hierarquia de propagação? Como qualquer propriedade, os parâmetros são propagados de pai para filho.
Porém, diferentemente de outras propriedades, os parâmetros podem ser substituídos nas instâncias de material filhas. Você já trabalhou com parâmetros quando alterou a cor base de MI_DefaultColorway.
Essa ação também é chamada de expor e de parâmetros expostos.
Como converter valores estáticos em parâmetros
Lembre-se de que os materiais pais atuam como uma base flexível para todas as instâncias filhas. Ao expor propriedades, é importante pensar em como o material será usado em diferentes recursos. Neste caso, você usará M_Surfaces para revestir três ativos de jogo:
A decoração do cenário;
Um piso; e
Um visual úmido e seco para o piso (no próximo tutorial).
Decoração do cenário ou set decoration (set dec) é um termo usado no cinema para se referir a ativos estáticos em um nível com os quais o público jogador não pode interagir.
Com essas aplicações em mente, você precisará converter as constantes que controlam:
O ladrilhamento de UV;
O mapa difuso;
O matiz suave; e
O mapa de normais.
Rugosidade
Para converter uma expressão em um parâmetro, siga estes passos:
No gráfico de material de
M_Surfaces, selecione Constant em UV Tiling (ladrilhamento de UV).Clique com o botão direito no nó e selecione Convert to Parameter (Converter para parâmetro).
Dê um nome ao parâmetro para que seja identificável e relevante ao valor que está alterando. Neste caso,
UV Tiling.Selecione a constante anexada à propriedade Roughness, clique com o botão direito e selecione Convert to Parameter.
Dê ao novo parâmetro o nome de
Roughness.Selecione o Constant3Vector que controla o matiz difuso, converta-o em um parâmetro vetorial e renomeie-o para
Diffuse Hue(matiz difuso).Selecione o elemento TextureSample difuso, converta-o em um parâmetro e renomeie-o para
Diffuse.Selecione o elemento TextureSample de normal, converta-o em um parâmetro e renomeie-o para
Normal.Salve seu material.
O gráfico de material deve ter ficado assim:
Em seguida, você criará instâncias de material para exibir seus ativos de jogo.
Criar uma instância de Material
Vamos criar uma instância de material para cada ativo que revestiremos nesta seção: o piso e a decoração do cenário.
Para criar uma instância de material, siga estes passos:
No Navegador de Conteúdo, clique com o botão direito em
M_Surfacee selecione Create Material Instance.Dê a ela o nome de
MI_Surfaces_Floor.Crie uma segunda instância de material chamada
MI_Surfaces_Tile.Clique duas vezes em
MI_Surfaces_Floorpara abrir o Editor de Instância de Material.
Observe que os parâmetros expostos em M_Surfaces agora estão agrupados no painel Detalhes desta instância filha.
Em seguida, você aplicará essas instâncias à malha no seu nível e ajustará as propriedades expostas.
Substituições de instâncias de material
Nesta seção, você aplicará MI_Surfaces_Floor à malha do piso no Hallway 2 (Corredor 2) do Lvl_Adventure.
Para aplicar a instância no piso, siga estes passos:
No Organizador, procure a pasta Hallway2 e selecione todos os itens com
Floorno nome.No painel Detalhes, na categoria Materials e ao lado de Element 0, substitua
MI_ProcGridporMI_Surfaces_Floor.
Aproxime a visão do piso. Veja como a textura se repete na malha do chão. Dependendo do seu projeto, repetições óbvias podem não ser desejáveis.
Existem muitas formas de disfarçar problemas de ladrilhamento, como mesclagem de texturas, mesclagem de distância, bombardeio de texturas ou decalques. Para este tutorial, temos resolução de textura suficiente para ampliá-la.
Para aumentar os UVs na instância, siga estes passos:
No painel Detalhes de
MI_Surface_Floor, em Global Scalar Parameter Values, selecione UV Tiling e defina o valor como0.2.Salve a instância de material.
Com UVs redimensionados, o chão parece menos ladrilhado, os ladrilhos têm um tamanho razoável em comparação com o personagem jogável, a textura ainda está nítida do ponto de vista da pessoa jogadora e uma grande área do nível é revestida. Você conseguiu tudo isso sem desperdiçar recursos desnecessários em uma textura de alta resolução.
Reutilize as instâncias de material
Digamos que você precise revestir rapidamente um ativo de pedra. Ao sobrepor propriedades, você pode reutilizar o material pai para criar ativos exclusivos de forma econômica. Neste caso, você criará uma decoração do cenário: uma pilha de materiais de piso de pedra.
Para criar malhas de ladrilhos de piso, siga estes passos:
Na barra de ferramentas do Unreal Editor, clique em Add, Shapes, Cube. No Organizador, renomeie esse elemento para
Tile.Com "Tile" selecionado, no painel Detalhes, altere Scale para
0.5,0.5e0.05.Na barra de ferramentas do Unreal Editor, clique em Add, Shapes, Cube e dê o nome de
Slab.Com "Slab" selecionado, no painel Detalhes, altere Scale para
1.5,1.0e0.05.Com o "Tile" selecionado, segure ALTe arraste as malhas estáticas duplicadas na janela de visualização. Faça o mesmo para "Slab". Organize esses ativos da forma que quiser.
Para destacar sutilmente os ladrilhos do piso, siga estes passos:
Clique duas vezes em
M_Surfaces_Tilepara abrir esse elemento. No painel Detalhes, marque UV Tiling e defina seu valor como0.2para corresponder à malha do piso.Em Global Vector Parameter Values, marque Diffuse Hue e defina HEX sRBG como
A5AEC9FF.Salve sua instância.
No Organizador, selecione todas as instâncias de Tile. No painel Detalhes, em Materials, Element 0, adicione
MI_Surfaces_Tile.Selecione todas as instâncias de Slabe aplique
MI_Surfaces_Tile.
Perceba que há um problema. A resolução dos ladrilhos é comparável à da malha do piso, mas quando você ajusta a escala de Slab, os UVs redimensionam-se (uniformemente e não uniformemente) com a malha. Por isso, o material de pedra fica esticado. Isso é especialmente perceptível nas laterais das malhas.
Dependendo do seu projeto, é provável que você queira que a resolução do material apareça de forma coesa em vários ativos, e não esticada.
Em um ambiente de desenvolvimento, você pode resolver esse problema ajustando a geometria da malha, o mapeamento de UVs ou usando a projeção triplanar; um método que aplica um material de maneira uniforme ao longo dos eixos XYZ da malha.
Para este exemplo, criaremos um visual totalmente novo para a decoração do cenário, substituindo os mapas de texturas herdados de M_Surfaces:
No painel Detalhes de
MI_Surfaces_Tile, ao lado de UV Tiling, defina o valor como1.Marque Diffuse e procure
Gray.Marque Normal e procure
T_Base_Tile_Normal.Ao lado de Diffuse Hue, digite o HEX sRGB
D0CECBFF.Salve sua instância.
A decoração do cenário e o piso estão prontos.
Em um ambiente de desenvolvimento mais prático, você provavelmente adotaria uma abordagem ainda mais eficiente para criar a decoração do cenário. Por exemplo, você pode incluir os ladrilhos soltos como parte da malha do piso para economizar geometria.
Acabamos de criar um material pai flexível e duas instâncias de material únicas. Durante o processo, você aprendeu sobre:
O gerenciamento da alocação de recursos: a alocação cuidadosa de recursos significa que você pode gastar mais em ativos importantes do jogo.
A organização dos ativos no editor: a organização e as convenções de nomenclatura evitam confusão quando as equipes trabalham com centenas de ativos.
A criação de um fluxo de trabalho modular: um fluxo de trabalho modular e não destrutivo evita trabalho repetitivo ou longo, o que é essencial quando os cronogramas de desenvolvimento são apertados.
Como equilibrar escolhas artísticas com limitações técnicas: o desenvolvimento de jogos geralmente envolve pensar criativamente para contornar limitações técnicas e encontrar soluções que minimizem o impacto na aparência artística.
A seguir
No próximo tutorial, você aprenderá sobre projeção triplanar, a decomposição de hierarquias de propagação com interruptores estáticos e a usar Blueprints para controlar os materiais com base nas ações de jogo no seu nível.