Este tutorial é uma introdução aos módulos do Scratch Pad na Unreal Engine. Ele se baseia em um único sistema Niagara para explorar os fundamentos dessa funcionalidade. O tutorial não se trata tanto do resultado final, é mais sobre como aprender diferentes maneiras de usar a funcionalidade.
Escopo
Os módulos do Scratch Pad são módulos locais do Niagara que podem ser criados usando gráficos de programação visual. Há dois tipos de ativo que permitem a criação de módulos do Scratch Pad: emissores e sistemas Niagara. O escopo dos módulos é limitado ao sistema ou emissor em que foram criados e não aparecem como ativos independentes no Navegador de Conteúdo.
Módulo do Scratch Pad baseado em emissor
Se um módulo do Scratch Pad for criado dentro de um ativo de emissor do Niagara, ele será aplicado a todos os usos desse emissor em quaisquer sistemas Niagara aos quais ele foi adicionado. No ativo de emissor NE_Example abaixo, o módulo ScratchModuleInEmitter aparece na lista de módulos e sua entrada na pilha é editável no emissor.
No entanto, um módulo do Scratch Pad criado em um emissor não pode ser usado por nenhum outro sistema ou ativos de emissor e não aparecerá na lista de módulos de um sistema Niagara. O exemplo a seguir mostra o ativo de emissor NE_Example usado no sistema NS_Example do Niagara. Assim como outros módulos, o módulo do Scratch Pad é bloqueado (pode ser desabilitado, mas não excluído) quando o emissor é instanciado em um sistema Niagara.
Módulo do Scratch Pad baseado no sistema
Se o módulo do Scratch Pad for criado dentro de um ativo do sistema Niagara, ele poderá ser usado em qualquer emissor dentro desse sistema. Como acontece com todos os módulos do Scratch Pad, eles não estão disponíveis para emissores em outros sistemas Niagara.
Código de módulo do Niagara
Um módulo do Scratch Pad pode ser exportado como um ativo de código de módulo do Niagara. Esse processo de exportação é abordado com mais detalhes na seção BLANK deste tutorial. Os códigos de módulo do Niagara são ativos totalmente separados que aparecem no Navegador de Conteúdo e podem ser usados por qualquer emissor do Niagara e em qualquer sistema Niagara no projeto. Isso é comparável à forma como os nós de material podem ser convertidos em funções de material, que podem ser usadas por ativos de material separados em um projeto.
Primeiros Passos
Para criar um módulo do Scratch Pad, você precisará trabalhar em um ativo do sistema Niagara ou de um ativo de emissor do Niagara. Este tutorial usa um sistema Niagara simples gerado em grade como base para trabalhar com módulos do Scratch Pad.
Crie um sistema Niagara
Esta seção explica como criar um sistema Niagara para novos usuários e para aqueles que desejam seguir este tutorial do começo ao fim. Se você já criou um sistema do Niagara, poderá usá-lo para seguir o restante do tutorial.
Para criar um sistema Niagara, siga estas etapas:
No Navegador de Conteúdo, clique com o botão direito e depois clique em Sistema Niagara.
No menu Modelo, selecione Mínimo e, em seguida, clique em Criar.
Dê um nome para o novo sistema Niagara (por exemplo, NS_Minimal). Clique duas vezes ou pressione Enter para abrir o ativo.
Por padrão, o sistema terá um nó de sistema (azul) e um único emissor Mínimo (laranja).
Gere partículas
Para fazer o emissor gerar partículas, siga estas etapas:
Vá para o emissor Mínimo.
Na seção "Atualização de emissores", clique em Adicionar (+).
Procure e clique na opção "Gerar partículas na grade".
Você pode adicionar módulos usados com frequência na parte superior do menu Adicionar novo módulo. Passe o cursor sobre o nome do módulo e clique no ícone de estrela (⭐). O ícone mudará de um contorno para uma estrela preenchida. Feche e abra novamente o menu para ver o módulo listado na seção Sugerido. Para remover, clique no ícone de estrela outra vez.
Corrija problemas de dependência
O novo módulo terá um ponto vermelho ao lado do nome, indicando um erro. Neste caso, o módulo Gerar partículas na grade também precisa de um módulo Posição da grade para funcionar corretamente.
Para corrigir esse problema, clique no módulo. Analise o problema no painel Detalhes e clique em Corrigir problema.
Um módulo Posição da grade será adicionado à seção Geração de partículas do emissor. Depois disso, a dependência será cumprida e o ícone de erro no módulo Gerar partículas na grade será removido.
Configurações do emissor
Para configurar o emissor para este tutorial, siga estas etapas:
No emissor Mínimo, selecione Gerar partículas na grade.
No painel Detalhes, faça o seguinte:
Defina a contagem de X como 10.
Defina a contagem de Y como 1.
Defina a contagem Z como 1.
Defina a hora da geração como 0.
No emissor Mínimo, selecione "Inicializar partícula".
No painel Detalhes, defina as seguintes configurações:
Defina o Modo de Tempo de Vida como Definição direta.
Defina o Tempo de Vida como 5.
Defina o Modo de Cor como Definição direta.
Defina a Cor como 1, 0, 0.
Defina o Modo de Posição como Posição de simulação.
Defina o Deslocamento de posição como 0, 0, 0.
Defina Modo de Massa como Indefinido/(1 de massa).
Defina o Modo de Tamanho do Sprite como Uniforme.
Defina o Tamanho Uniforme do Sprite como 10.
Defina o Modo de Rotação do Sprite como Indefinido.
Defina o Modo de UV do Sprite como Indefinido.
Defina todos os outros atributos de malha e fita como Indefinido.
Neste exemplo, o módulo de Posição da grade permanece com os valores padrão.
Crie um módulo do Scratch Pad
No emissor Mínimo, clique em Adicionar (+) próximo ao cabeçalho Geração de Geração de partículas. Pesquise e selecione a opção Novo módulo do Scratch Pad.
O gráfico do módulo de rascunho é aberto automaticamente como uma aba ao lado da aba original Visão geral do sistema. Uma aba Módulos locais será exibida abaixo da janela Pré-visualização, ao lado das abas Parâmetros e Parâmetros do Usuário.
Dê provisoriamente um nome descritivo para o módulo de rascunho (ApplyOffset, por exemplo).
Embora os nomes dos módulos apareçam como uma palavra (ApplyOffset) na lista de módulos, eles são exibidos com espaços baseados na formatação de maiúsculas e minúsculas (Deslocamento aplicado) nos menus de pesquisa e nas entradas da pilha.
No gráfico Visão geral do sistema, o módulo Deslocamento aplicado agora está listado como um módulo no emissor Mínimo. O novo módulo de rascunho também será exibido nos menus de pesquisa e será rotulado como item do Scratch Pad (em vez do Niagara).
Navegação
Para abrir o gráfico do módulo do Scratch Pad, realize um destes procedimentos:
Clique na aba do módulo de rascunho, localizada ao lado da aba Visão geral do sistema.
Selecione o módulo de rascunho no emissor e, em seguida, clique no botão do Scratch Pad no painel Detalhes.
Clique duas vezes na entrada da pilha do módulo de rascunho no emissor.
Clique duas vezes no módulo de rascunho na lista Módulos locais > Módulos.
Fluxo de dados
Igual a outros gráficos na Unreal Engine, os dados em um módulo fluem da esquerda para a direita. Os dados começam no nó vermelho Input Map, passam pela linha branca do mapa de parâmetros Niagara e terminam no nó verde Output Module.
Você pode usar os nós Map Get para extrair dados da linha do mapa de parâmetros Niagara e usar os nós Map Set para definir dados nela.
Adicione deslocamento de posição
Em seguida, adicione algumas funcionalidades ao módulo do Scratch Pad, começando com um deslocamento de posição.
Obtenha o atributo de posição de partículas
No nó Map Get, clique no pin Adicionar +, pesquise e clique no parâmetro Posição de PARTÍCULAS. São os dados mantidos em cada partícula individual.
Esses parâmetros são gravados como uma palavra com um ponto entre o namespace e o nome ( NAMESPACE.Name). Se estiver acessando parâmetros (principalmente parâmetros do usuário) usando código ou Blueprints, use a versão com ponto e não espaços.
Adicione uma entrada de vetor
No nó Map Get, clique no pin Adicionar (+), pesquise e clique na opção Vetor (INPUT.Vector).
Namespaces de dados
O texto dentro dos blocos coloridos nos nomes dos parâmetros especifica o namespace de origem dos dados.
A Posição vem do namespace PARTICLES, o que significa que os dados são mantidos nas partículas. Esses dados são persistentes em todos os quadros durante o tempo de vida da partícula.
O namespace ENTRADA, usado para o Vetor, indica que seus dados vêm do módulo, que pode ser modificado pelo usuário.
Calcule o deslocamento da posição
Arraste do pin PARTICLES.Position, pesquise e clique no nó Add.
Por padrão, as entradas do nó Add serão azuis escuras, mostrando que é um tipo de curinga chamado Niagara Numeric. Ele aceita posições, vetores, floats e inteiros. Quando conectado a outros nós com tipos específicos, o pin e o fio de conexão mudam para refletir o tipo de dados usados nesses pins.
Arraste do pin INPUT.Vector para o segundo pin do nó Add. Ele ficará amarelo para mostrar que é um tipo de vetor.
Atualize os dados
Depois de adicionar a quantidade de deslocamento (INPUT.Vector) à PARTICLES.Position, os dados da partícula precisam ser atualizados usando um nó Map Set.
No nó Map Setexistente, clique no pin Adicionar (+), pesquise e clique em PARTICLES.Position.
Conecte a saída do nó Add ao pin Posição de PARTÍCULAS do nó Map Set. Isso atualizará (sobrescreverá) o valor de PARTICLES.Position (acessado no nó Map Get) com o novo valor.
Aplique alterações de gráfico
Clique no botão Aplicar ou Aplicar e salvar para confirmar as alterações no gráfico no módulo de rascunho e suas entradas de pilha no sistema Niagara.
No gráfico Visão geral do sistema, selecione a entrada de pilha do módulo de rascunho de Deslocamento aplicado no emissor Mínimo. A entrada Vetor criada nas etapas anteriores agora é uma entrada de módulo válida.
Para testar a funcionalidade do módulo, insira um valor na entrada Vetor e observe como isso altera a saída visual do sistema na janela de visualização do sistema Niagara. Neste exemplo, alterar o valor Z de 0 para 200 move as partículas vermelhas 200 unidades (centímetros) para cima.
Contexto do módulo
Você pode configurar módulos para ficarem visíveis e utilizáveis apenas em contextos de emissor específicos.
Defina a máscara de bits de uso do módulo
No gráfico do módulo Deslocamento aplicado, clique em qualquer lugar no fundo do gráfico. Isso abre as configurações do módulo no painel Detalhes. A primeira configuração na lista é a máscara de bits de uso do módulo, que define onde o módulo pode ser criado e para onde pode ser movido. Clique no menu suspenso para verificar, pesquisar e definir as várias opções de contexto.
Os seguintes contextos estão disponíveis:
Função
Módulo (habilitado por padrão)
Entrada dinâmica
Código de geração de partículas (ativado por padrão)
Código de atualização de partículas (ativado por padrão)
Código de evento de partículas (ativado por padrão)
Código de estágio de simulação de partículas (habilitado por padrão)
Código de geração de emissor
Código de atualização de emissor
Código de geração de sistema
Código de atualização de sistema
Você pode limitar onde e como o módulo pode ser usado marcando ou desmarcando os itens no menu suspenso.
Para testar, desabilite a opção Código de atualização de partículas e, em seguida, pressione o botão Aplicar.
Vá para a visão do gráfico Visão geral do sistema e tente arrastar a entrada da pilha do módulo Deslocamento aplicado para a seção Atualização de partículas. A linha pendente azul brilhante não aparecerá entre as entradas do emissor, e uma dica de aviso será exibida dizendo: "Este módulo não pode ser movido para esta seção da pilha porque não é válido para este contexto de uso".
Além disso, essa limitação de contexto se aplica aos resultados da pesquisa dessa seção restrita. Nesse caso, o módulo Deslocamento aplicado não aparece na pesquisa da seção Atualização de partículas.
O módulo "Deslocamento aplicado" ainda está disponível nos resultados da pesquisa de "Geração de partículas".
Habilite o código de atualização de partículas para continuar seguindo este tutorial.
Atualização de partículas e geração de partículas
Os módulos localizados na seção Geração de partículas do emissor são executados apenas quando a partícula é criada (gerada).
Os módulos localizados na seção Atualização de partículas do emissor são executados a cada marca de verificação.
Para demonstrar, arraste a entrada da pilha Deslocamento aplicado de Geração de partículas para um ponto na seção Atualização de partículas. Altere o valor da entrada do vetor Z para 1. Na janela de visualização, os pontos vermelhos se moverão para cima, pois o deslocamento de 1 cm é aplicado às partículas a cada marca de verificação.
Quando terminar, arraste-o de volta para a seção Geração de partículas para continuar o tutorial.
Deslocamento de rotação
Existem algumas maneiras de permitir que o usuário (neste caso, um artista de efeitos visuais) gire o deslocamento em torno de um eixo. Nesta seção, você adicionará rotação dentro do módulo. Mais adiante no tutorial, você aprenderá a aproveitar entradas dinâmicas para dados inseridos pelo usuário.
Nó Add
Clique com o botão direito no plano de fundo do gráfico, pesquise "rotação" e clique em XYZRotationToQuaternion.
Crie entradas
A próxima etapa é criar entradas que o usuário possa acessar e inserir valores. A maneira mais fácil é arrastar uma linha do pin desejado (neste exemplo, X, Y e Z) até o ícone Adicionar (+) no nó Map Get. Isso cria um parâmetro de ENTRADA correspondente com o mesmo nome e tipo correto. Faça isso para todos os três valores float (pins verdes, XYZ) no nó Rotation to Quaternion.
Calcule o deslocamento da rotação
Arraste do pin INPUT.Vector de Map Get, pesquise e clique no nó Multiply Vector With Quaternion. Arraste o pin de saída do nó XYZRotation to Quaternion para o pin de entrada Quatérnio no nó Multiply Vector with Quaternion
Conecte o pin de saída do nó Multiply Vector with Quaternion ao segundo pin do nó Add, substituindo o valor simples INPUT.Vector pelo novo Vetor multiplicado e o valor de Quatérnio.
Aplicar alterações de deslocamento de rotação
Clique em Aplicar e salvar e, em seguida, abra o gráfico Visão geral do sistema.
Selecione a entrada da pilha Deslocamento aplicado (localizada na seção Atualização de partículas do emissor) e defina o valor Y como 30. Isso faz com que as partículas vermelhas se movam para cima e para a direita.
Abas Parâmetros
Há duas abas na janela de visualização do sistema Niagara com dados e opções de interação diferentes.
Parâmetros
A aba Parâmetros lista todos os parâmetros incluídos em um sistema Niagara. Isso inclui:
Atributos do sistema (como SYSTEM.Age, SYSTEM.LoopCount)
Atributos do emissor (como EMITTER.Age, EMITTER.DistanceTraveled)
Atributos de partícula (como PARTICLES.Position, PARTICLES.SpriteSize)
Saídas do módulo (como OUTPUT.GRIDLOCATION.GridSpacing, OUTPUT.PARTICLESTATE.FirstFrame)
Engine fornecida (como ENGINE.DeltaTime, ENGINE.EMITTER.NumParticles, ENGINE.OWNER.Velocity)
Transitórios de estágio (como TRANSIENT.FirstFrame, TRANSIENT.ScalabilityExecutionState)
Também há cabeçalhos nessa aba que estarão vazios por padrão:
Usuário exposto (igual à aba "Parâmetros do usuário")
Sensível ao contexto da pilha
Coleção de parâmetros do Niagara
Parâmetros do usuário
A aba Parâmetros do usuário lista todos os parâmetros do usuário criados em um sistema Niagara. Por padrão, está vazio. Os parâmetros do usuário aqui são os mesmos da seção Expostos ao usuário da aba Parâmetros.
Mudanças e renomeação dependentes da visualização
Ao visualizar o gráfico de um módulo específico, como Deslocamento aplicado, a lista de parâmetros é filtrada até as entradas que estão disponíveis para você no momento.
Nessas abas, você pode renomear as entradas (como INPUT.RotationAngleX). Como em outras partes da Unreal Engine, clique duas vezes no nome da entrada ou pressione F2.
Quando você clicar em Aplicar e salvar, os novos nomes ficarão visíveis na entrada da pilha do módulo.
Ferramenta de edição de hierarquia
Na janela Editar hierarquia, você pode ordenar as entradas, adicionar dicas de ferramenta e gerenciar dependências.
Para acessar a interface Editar hierarquia, abra o módulo do Scratch Pad que você deseja editar (neste caso, o módulo Deslocamento aplicado).
Na aba Parâmetros, clique em Editar hierarquias de entrada.
Abre a janela Editar hierarquia.
Na coluna da esquerda, arraste as entradas relevantes para a coluna central, na qual o destaque em azul aparece.
Arraste as entradas na coluna central para reordená-las.
Padrão
No painel Detalhes, você pode acessar as configurações de variáveis e valores padrão do item.
Modo padrão: as opções incluem Vinculação, Personalizada, Falha Se Não Tiver Sido Configurado e o valor padrão.
Valor padrão: com base no tipo, como float ou vetor.
Dica de ferramenta (e opções de localização): adicione detalhes úteis sobre implementação, unidades, ressalvas ou outras observações para os usuários.
Unidade de exibição: as opções incluem Centímetros, Lumens, Horas, Gigabytes, Gramas, Graus o Não especificado.
Exibição avançada: falso por padrão.
Exibir na pilha de visão geral: falso por padrão.
Prioridade de ordenação do parâmetro embutido e substituição de cor: exibido por padrão.
Condição de visibilidade e condição de visibilidade (nome da entrada e valores de destino): nenhum e 0 elemento por padrão.
Metadados de propriedades: 0 elemento por padrão.
Aliases alternativos para variável: 0 elemento por padrão.
Tipo de widget: padrão.
Valor mínimo: 0 por padrão.
Valor máximo: 1 por padrão.
Largura do passo 1 por padrão.
Transmitir alteração de valor apenas ao confirmar: falso (defina como verdadeiro se quiser que os valores sejam atualizados apenas na confirmação, não na digitação).
Dicas
Adicione o texto no campo Dica do ângulo de rotação X e clique em Aplicar ou Aplicar e salvar.
Em seguida, vá para o gráfico Visão geral do sistema, selecione o módulo Deslocamento aplicado e passe o mouse sobre a opção Ângulo de rotação X no painel Detalhes. A dica aparecerá na primeira linha do pop-up, seguida das informações de Nome e Tipo da entrada sobre a qual você está passando o mouse.
Unidade de exibição
Na janela Editar hierarquia (ou o painel Detalhes), altere a unidade de exibição do valor. Selecione a entrada do Ângulo de rotação X e altere a unidade de exibição de Não especificado para Graus.
Em seguida, altere a Unidade de exibição da entrada do Vetor como Centímetros.
Parâmetros locais
Ao criar módulos complexos, você pode aproveitar parâmetros locais para ajudar a manter o gráfico do módulo organizado e fácil de ler. Uma abordagem comum e geralmente recomendada é separar o gráfico por operações.
Os parâmetros locais existem apenas no módulo e não são mantidos nos quadros. Eles costumam ser usados para armazenamento temporário de valor em um gráfico.
Divida as entradas entre Map Sets e Map Gets
Clique com o botão direito no pin PARTICLES.Position de Obtenção de mapa e clique com o botão direito em Remover. Desconecte o nó (Alt + clique).
Perto do nó Multiply Vector with Quaternion, adicione o nó Map Set (listado como Conjunto de mapas de parâmetros no menu exibido ao clicar com o botão direito). Conecte-o à linha Mapa de parâmetros Niagara, entre o nó Input e o nó Map Set.
Arraste o pin de saída de Multiply Vector with Quaternion ao ícone Adicionar (+) no Map Set. Isso cria um parâmetro local com o mesmo nome e tipo do pin do qual você extraiu. Neste caso, ele cria LOCAL.Vector. Renomeie para algo mais descritivo (por exemplo, LOCAL.Offset).
No lado direito do nó Map Set, arraste do pin Dest branco e, em seguida, procure e clique na opção Map Get.
Clique em Adicionar (+), em seguida pesquise e selecione o LOCAL.Offset criado na etapa anterior.
Agora você pode usar o valor de deslocamento em cache em outra seção organizada do gráfico.
Divida e reorganize
Ao reorganizar ou adicionar nós em qualquer gráfico da Unreal Engine, pode ser necessário desconectar os fios que conectam nós específicos. Use Alt + clique com o botão esquerdo em um pin ou fio para desconectá-lo.
Para segurar e mover uma conexão de pin, pressione Ctrl + clique com o botão esquerdo para coletar o fio. Solte sobre um pin válido. A conexão será excluída se você soltar sobre um espaço vazio do gráfico.
Para remover, renomear, reordenar ou realizar outras ações em um pin, clique com o botão direito para abrir um menu e clique na ação desejada.
Espaço de transformação e deslocamento de posição
Há três tipos diferentes de Espaços de transformação:
Simulação: os cálculos são feitos em qualquer contexto (local ou mundial) definido na seção Propriedades do emissor, em que Espaço local está definido como verdadeiro ou falso.
Mundo: os cálculos são feitos no contexto dos valores do mundo.
Local: os cálculos são feitos no contexto do próprio sistema, independentemente de onde ele esteja no mundo.
Espaço de transformação definido pelo usuário
Neste exemplo, daremos ao usuário a opção de escolher qual espaço de transformação usará neste módulo.
Crie um nó *Transform Vector. Arraste o pin de deslocamento de Map Get para o pin InVector do nó Transform Vector.
Para permitir que o usuário defina o espaço de origem como uma entrada, arraste o pin do Espaço de origem do Vetor de transformação para o ícone Adicionar (+) do nó Map Get. Isso cria uma entrada com o mesmo nome e tipo.
Adicione outro nó Map Set e conecte-o entre o Map Set anterior e o Map Set final. Crie uma entrada de LOCAL.Offset no nó Map Set e arraste-o até o pin OutVector do Vetor de transformação.
Implemente o deslocamento de posição novamente
No novo nó Map Set, crie um nó Map Get e clique no botão Adicionar (+) para acessar a variável LOCAL.Offset.
Depois, clique no botão Adicionar (+) para acessar o parâmetro PARTICLES.Position.
Adicione o LOCAL.Offset ao PARTICLES.Position por meio do nó Add de antes.
Se quiser alterar a ordem dos elementos em um nó, clique com o botão direito em um dos itens e em Mover pin para cima.
Conecte o nó Add ao nó Map Set por meio do pin PARTICLES.Position e arraste o Dest para o final do Módulo de saída.
Aplicar alterações
Clique em Aplicar ou Aplicar e salvar e, em seguida, abra o gráfico Visão geral do sistema. Selecione o emissor Mínimo e a entrada da pilha de Deslocamento aplicado nele. No painel Detalhes, agora há uma opção de entrada de Espaço de origem.
Adicione comentários
Visualmente os comentários agrupam os nós e geralmente incluem texto para descrever essa parte do gráfico ou outras notas pertinentes a essa seção. Como com códigos baseados em texto, deixar comentários ao longo do trabalho é considerado uma prática recomendada. Os comentários facilitam a compreensão das decisões por outros desenvolvedores.
Abra o gráfico Módulo de rascunho. Selecione os nós no gráfico e pressione a tecla C para criar um comentário. Renomeie para ser descritivo (por exemplo, Vetor de deslocamento inicial).
Com a caixa de comentários selecionada, o painel Detalhes exibe as configurações disponíveis: Cor, Tamanho da fonte, Mostrar bolha ao aproximar, Bolha de cor, Modo de movimento e o campo Detalhes.
Os comentários fornecem informações visuais e textuais sobre o que está acontecendo em cada seção do gráfico. Os comentários neste exemplo de gráfico podem incluir: Vetor de deslocamento inicial, Transformar em espaço e Definir posição. Cada caixa de comentários inclui o nó Map Get inicial e o nó Map Set subsequente, em que o próximo Map Get inicia a próxima seção.
Saídas de módulo
As saídas d módulo podem fornecer dados adicionais ao usuário sem precisar preencher dados de partícula. Como as entradas de pilha de emissores são executadas de cima para baixo, os dados de saída do módulo só estão disponíveis para as entradas de pilha abaixo dele. Conhecer as saídas e outros parâmetros gravados nelas pode ser útil na hora de descobrir como trabalhar com os dados no sistema de partículas.
Mostre gravações de parâmetros
Selecione um módulo no emissor Mínimo. No painel Detalhes, selecione o ícone de engrenagem (⚙️) e habilite Mostrar gravações de parâmetros. A seção gravações de parâmetros está recolhida por padrão. Clique na seta (🔽) para expandir a lista e ver todas as saídas em que a entrada da pilha grava.
Na entrada da pilha do módulo do Scratch Pad Deslocamento aplicado abaixo, a seção Gravações de parâmetros inclui apenas PARTICLES.Position.
Use as saídas de módulo
Selecione a entrada da pilha do módulo Local da grade e expanda a seção Gravações de parâmetro. Ele grava a PARTICLES.Position, e outros parâmetros de SAÍDA.
Como exemplo, usaremos OUTPUT.GRIDLOCATION.GridUVW para alterar a cor das partículas.
Para demonstrar isso, abra a entrada da pilha Gerar partículas na grade e altere os valores X, Y e Z para 10. Você verá um grupo de partículas em forma de cubo, em vez de uma linha delas.
Em seguida, na seção Geração de partículas do emissor, clique no botão Adicionar (+) para criar um módulo de Cor.
Usando o menu suspenso perto da amostra de Cor, procure e clique em Criar cor linear a partir do vetor e float.
Usando o menu suspenso ao lado do campo Vetor (RGB), pesquise e clique em OUTPUT.GRIDLOCATION.GridUVW.
Agora, os valores RGB são determinados pelas informações de OUTPUT.GRIDLOCATION.GridUVW.
Criar saídas de módulo
Abra o módulo de gráfico do Scratch Pad Deslocamento aplicado. Na seção de comentários de Definir posição (o último Map Get e Map Set), arraste o pin LOCAL.Offset do Map Get para o pin Adicionar (+) do Map Set.
Clique duas vezes em um fio de conexão para criar um nó de redirecionamento e mova-o conforme necessário para reduzir a sobreposição e aumentar a visibilidade no gráfico. Também é possível criar nós de redirecionamento manualmente pelo menu aberto ao clicar com o botão direito do gráfico.
Clique com o botão direito no pin LOCAL.Offset no nó Map Set. Clique em Alterar namespace > OUTPUT.
Isso altera o namespace LOCAL para SAÍDA. Tamdém adiciona um modificador de namespace (por exemplo, MODULE) e anexa o nome do módulo (Deslocamento aplicado). O resultado é The OUTPUT.MODULE.Offset no nó Map Set.
Clique em Aplicar e, em seguida, abra o gráfico Visão geral do sistema. Selecione a entrada da pilha Deslocamento aplicado do emissor de Mínimo e expanda a seção Gravações de parâmetro no painel Detalhes. O parâmetro OUTPUT.APPLYOFFSET.Offset estará na lista e disponível para ser usado por qualquer entrada de pilha de módulo abaixo.
Defina o parâmetro diretamente
Por exemplo, vamos consultar o deslocamento. Clique no botão Adicionar (+) para criar uma entrada de pilha Definir parâmetros sob a entrada da pilha Deslocamento aplicado. Esse módulo aparece como Definir parâmetro novo ou existente diretamente no menu de pesquisa.
No painel Detalhes, clique no botão Adicionar (+) para criar um item de Vetor (PARTICLES.Vector) na lista.
Na nova entrada, clique na seta para abrir o menu de tipo, em seguida procure e clique em OUTPUT.APPLYOFFSET.Offset.
Entradas de módulo dinâmicas
Ao escrever um código de módulo, há algumas opções para configurar a funcionalidade. Muitas entradas dinâmicas estão disponíveis, o que pode dar ao usuário mais opções e poder na hora de implementar.
Por exemplo, você pode reformular o Quatérnio no módulo Deslocamento aplicado. Abra o gráfico Deslocamento aplicado e vá até o primeiro Map Get no gráfico (aquele com entradas do Map Get X, Y e Z separadas conectadas ao nó Quaternion.
Essa forma de lidar com o Quatérnio tem algumas limitações. O ângulo de rotação é exposto separadamente como X, Y e Z e assume que o tipo de ângulo está em graus. Essas são as únicas opções fornecidas ao usuário.
Seria mais vantajoso para o usuário expor o quatérnio como uma entrada e deixar que as entradas dinâmico preexistentes fizessem o trabalho por nós. Nesse caso, você pode usar o quatérnio diretamente em vez dos ângulos de rotação no primeiro Map Get.
Configure entradas dinâmicas
Clique com o botão direito e remova os pins X, Y e Z do primeiro nó Map Get. Além disso, exclua o nó XYZRotation to Quartenion.
No Map Get, clique no pin Adicionar (+) para pesquisar e clique em INPUT.Quaternion (Quat). Dê um nome descritivo (por exemplo, INPUT.RotationQuaternion). Arraste o pin para o pin Quatérnio do nó Multiply Vector With Quaternion.
Clique em Aplicar e, em seguida, abra o gráfico Visão geral do sistema. O Quatérnio de rotação agora está disponível no painel Detalhes do módulo Deslocamento aplicado, e as opções X, Y e Z separadas foram removidas.
Usar entradas dinâmicas
Na entrada da pilha Deslocamento aplicado do emissor, abra o menu suspenso do item Quarténio de rotação, pesquise e clique em Criar quarténio.
O usuário pode escolher qualquer uma das opções predefinidas pela entrada dinâmica. Ele pode alterar o tipo de ângulo, selecionar rotações XYZ como o Quatérnio de e especificar um espaço de coordenadas diferente. Essas são as opções integradas que o Niagara fornece.
Considerações
Ao descobrir como criar e apresentar os módulos, considere o que é mais fácil de gerenciar e o que é mais utilizável para o usuário. Tente encontrar um equilíbrio entre o que é flexível para o usuário final, mas sem excesso.
Neste caso, a desvantagem é que um "Quatérnio de rotação" pode ser algo meio hermético ou não muito claro para o usuário.
Para resolver esses possíveis entraves, adicione dicas de ferramenta às entradas. Selecione a entrada na lista de Parâmetros e insira uma dica no campo Dicas do painel Detalhes. Para essa entrada, insira algo como "Use the Make Quaternion Dynamic Input" ("Usar a entrada de criação de quarténio"). Isso não deixa dúvidas sobre o próximo passo para o usuário.
Clique em Aplicar. Abra o gráfico Visão geral do sistema, selecione o módulo Deslocamento aplicado e passe o mouse sobre o item Quarténio de rotação no painel Detalhes. O texto personalizado aparecerá na primeira linha da dica.
Observações do módulo
Cada módulo, incluindo os módulos do Scratch Pad, tem um campo Observação disponível. Estas observações de uso de módulo aparecem na parte superior do painel Detalhes quando uma entrada de pilha do módulo é selecionada em um emissor. Você pode inserir informações sobre o funcionamento do módulo, incluindo dúvidas sobre o uso e observações sobre dependência.
Adicione observações sobre o módulo
Para encontrar e editar esta opção, clique no fundo do gráfico para desmarcar todos os nós. Isso preenche o painel Detalhes com informações sobre o módulo como um todo, em vez de uma parte específica dele. Insira as informações sobre o módulo no campo Mensagem da observação.
Uma dica útil para o módulo de rascunho Deslocamento aplicado seria: "Este módulo aplica um deslocamento à posição da partícula". Use "Make Quaternion Dynamic Input" como uma utilidade para fornecer o Quatérnio.
Ver observações do módulo
Clique em Aplicar e abra o gráfico Visão geral do sistema. Selecione a entrada de pilha do módulo de rascunho Deslocamento aplicado, e a observação de uso do módulo aparecerá no topo do painel Detalhes.
Ignorar e mostrar observações
Observações (e outros problemas ou avisos) na parte superior do painel Detalhes podem ser ocultados ao clicar em Descartar.
Para tornar as observações visíveis novamente, clique no ícone de engrenagem (⚙️) na parte superior do módulo e em Cancelar descarte de todos os problemas de pilha.
Quando descartado em uma entrada de pilha, a seção Observações aparecerá em entradas de pilha recém-adicionadas do mesmo tipo de módulo.
Como gerenciar parâmetros
Todos os parâmetros e entradas estão listados na aba Parâmetros.
A lista pode incluir parâmetros e entradas que não são mais usados no módulo.
Atributos de uso de parâmetros
A maneira mais fácil de identificar quais parâmetros e entradas precisam ser limpas é verificar o campo à direita de cada entrada. Isso mostra as referências para leituras e gravações para cada entrada. Neste caso, os três parâmetros INPUT.RotationAngle (X, Y e Z) não estão em uso, pois essas entradas estão listadas como tendo 0 leitura e 0 gravação (0|0).
Remova parâmetros não utilizados
Mesmo quando seus usos são excluídos em um gráfico de módulo, os parâmetros permanecem na lista de Parâmetros. Você precisará excluí-los manualmente quando não precisar mais deles.
Para remover parâmetros não utilizados como esses, selecione-os na lista de parâmetros e pressione a tecla Delete, ou clique com o botão direito no parâmetro e clique em Excluir.
Interfaces de dados
Esses tipos especiais de dados obtêm informações do editor geral e as repassam ao Niagara, para que você possa usá-las para direcionar as partículas ou influenciar a simulação.
Acesse interfaces de dados
Para acessar as interfaces de dados, abra o gráfico do módulo de rascunho. Em um nó Map Get, clique no pin Adicionar (+) para abrir o menu suspenso Criar novo. Clique em Interface de dados para exibir uma lista de opções.
A maioria dessas interfaces de dados já tem módulos gravados para elas na engine. Às vezes, você pode querer adicionar essa funcionalidade diretamente ao módulo de rascunho.
Trabalhe com interfaces de dados
Para este exemplo, crie um espaço entre as seções "Transformar em espaço" e "Definir posição" no gráfico.
Adicione um nó Map Set antes da seção Definir posição e reoriente os pins. Conecte o Map Set do Transformar no espaço no novo nó Map Set e arraste o pin Dest no Map Set que está no Map Get, em Definir posição e no Map Set seguinte.
Crie um nó Map Get e adicione uma entrada INPUT.CameraQuery.
Arraste o pin INPUT.CameraQuery a um espaço vazio para abrir o menu Filtragem de origem. A primeira entrada é específica da interface de dados selecionada e, quando expandida, lista todos os métodos disponíveis nessa interface de dados.
Para este exemplo, clique em Obter CPU/GPU nas propriedades de câmera. Isso fornece a Posição de câmera, Vetor de avanço, Vetor para cima e o Vetor direito (tudo no contexto do mundo). Você pode usar esses dados para aplicar um deslocamento em direção à câmera ou se afasta dela.
Adicione um INPUT.Float ao Map Get e dê um nome descritivo (por exemplo, CameraOffsetScale).
Use um nó Multiply para multiplicar o Mundo do vetor para frente pelo novo float INPUT.CameraOffsetScale.
Adicione o LOCAL.Offset ao nó Map Get. Adicione-o ao resultado do nó Multiply.
No nó Map Set nesta nova seção, adicione LOCAL.Offset. Em seguida, conecte o resultado do nó Add ao pin LOCAL.Offset.
Use a interface de dados
Clique em Aplicar e, em seguida, abra o gráfico Visão geral do sistema. Selecione a entrada da pilha do módulo de rascunho Deslocamento aplicado. Agora o painel Detalhes tem uma seção Consulta de câmera com opções adicionais para o usuário, incluindo a entrada float Escala de deslocamento de câmera.
Altere a escala do deslocamento da câmera para -200, de modo a ver o deslocamento em ação.
Oculte campos
Como autor de um módulo, você pode ocultar os campos que não espera que o usuário altere.
Neste exemplo, você pode esperar que o usuário não precise editar os campos Índice do controle do jogador ou Requerer dados atuais do quadro. Portanto, você pode ocultar essas opções.
Abra o módulo de gráfico do Scratch Pad Deslocamento aplicado. No painel Detalhes (ou na visualização Editar hierarquia), habilite a opção Exibição avançada. Determina se a entrada deve ficar visível caso o usuário tenha expandido a seção Avançado.
No gráfico Visão geral do sistema, selecione a entrada da pilha Deslocamento aplicado. No painel Detalhes, as informações adicionais da interface de dados agora estão ocultas na seção "Opções avançadas". Para visualizar as informações, abra a seção Avançada no painel. Clique no botão de seta para expandir esta seção e clique novamente para recolhê-la.
Essa configuração permite que mais usuários avançados alterem essas configurações, como se estiverem trabalhando com um jogo de tela dividida e desejam definir a câmera manualmente. Isso remove os itens desnecessários para a maioria dos usuários que não precisam alterar essas configurações.
Você pode usar a interface Editar hierarquia para disponibilizar a entrada Escala de deslocamento de câmera disponível no painel Detalhes mesmo quando a Consulta de câmera estiver definida para estar na seção Avançada.
No gráfico do módulo do Scratch Pad, abra a aba Parâmetros e, em seguida, abra o painel Editar Hierarquias. Arraste o INPUT.CameraOffsetScale da coluna da esquerda para a coluna do meio para reorganizar a ordem.
Clique em Aplicar. No gráfico da Visão geral do sistema, selecione a entrada da pilha do módulo Deslocamento aplicado. No painel Detalhes, a entrada da Escala de deslocamento da câmera será inclusa na lista principal de entradas, mesmo com o painel Avançado recolhido.
Parâmetros do usuário
Os parâmetros do usuário permitem alterar as configurações do Niagara sem precisar abrir e editar várias vezes o sistema Niagara ou o gráfico do módulo. Quando um sistema Niagara é adicionado a um nível, os parâmetros do usuário ficam disponíveis no painel Detalhes do ativo. Isso pode acelerar os fluxos de trabalho, pois os usuários podem ajustar esses parâmetros diretamente no contexto da cena.
Há um custo associado aos parâmetros do usuário. Sempre que um parâmetro do usuário é ajustado, os parâmetros são enviados ao contexto de execução correspondente, e todos os parâmetros dentro desse mesmo contexto são atualizados:
Geração do sistema e emissor
Atualização de sistema e emissor
Geração de partículas e atualizações de partículas (por emissor)
Fases de simulação
Em geral, não é recomendado usar uma interface de dados como parâmetro do usuário por questões de desempenho. A engine faz uma cópia da interface de dados por instância e, como são UObjects, são coletados pelo lixo. O principal custo de uma interface de dados é quando você cria uma instância. Depois de criada, ela tem a mesma sobrecarga de se estivesse em outro lugar da pilha.
Promova entrada de módulo
As entradas do módulo podem ser promovidos a parâmetros do usuário. Para promover uma entrada de módulo, siga estas etapas:
No emissor Mínimo do gráfico "Visão geral do sistema", selecione a entrada da pilha "Deslocamento aplicado".
Clique no menu suspenso "Entrada dinâmica" ao lado da entrada "Escala de deslocamento da câmera".
Pesquise e clique em "Ler do novo parâmetro do usuário".
Um novo parâmetro do usuário é criado com o mesmo nome e valor do campo do painel Detalhes. O nome de exibição desse parâmetro é Escala de deslocamento da câmera do usuário". Se quiser acessar este ou outros parâmetros do usuário em código ou Blueprints, formate-o como USER.CameraOffsetScale ou User.CameraOffsetScale.
Edite parâmetros do usuário
A aba Parâmetros mostra os parâmetros do usuário, mas eles não são editáveis nessa interface. A aba Parâmetros do usuário tem um campo para editar valores. Para este tutorial, altere a Escala de deslocamento da câmera do usuário para 0 novamente.
Use os parâmetros do usuário
Abra um nível e arraste o sistema Niagara (neste exemplo, NS_Minimal) para a cena. Selecione o sistema Niagara no Organizador. No painel Detalhes, expanda a seção Parâmetros do usuário. O parâmetro do usuário Escala de deslocamento da câmera do usuário está incluso na lista. Isso significa que um usuário pode definir esses parâmetros de forma interativa, no contexto do mundo, em vez de na janela de visualização do Niagara.
Chaves estáticas
Chaves estáticas controlam o fluxo do código. Eles são úteis quando você deseja que determinadas partes do gráfico sejam compiladas a partir do módulo, exceto em algumas circunstâncias.
Implemente a chave estática
Para este exemplo, crie uma chave para o parâmetro USER.CameraOffsetScale. Como pode ser algo de uso raro pelo usuário final, o código não precisaria estar disponível no emissor na maioria das vezes.
Abra o gráfico do módulo de rascunho Deslocamento aplicado e vá para a seção que tiver USER.CameraOffsetScale.
Nesta seção, clique com o botão direito e crie um nó Static Switch.
Renomeie a chave estática para algo descritivo (por exemplo, Usar deslocamento da câmera).
A chave estática espera um tipo (muitas vezes numérico, mas nem sempre). Adicionar um tipo clicando no pin Adicionar (+), pesquise e selecione o tipo Mapa de parâmetros do Niagara para este exemplo.
Arraste a saída de Map Set do deslocamento da câmera para o nó Static Switch e, em seguida, arraste a saída de Static Switch para o Map Get e o Map Set na seção "Definir posição".
Use Ctrl + clique para coletar os fios de conexão e movê-los para um pin diferente.
Em seguida, conecte o Map Set da seção "Transformar em espaço" ao pin Falso do nó Static Switch.
Se a Chave Estática for falsa, ela pulará (retirar) a seção Deslocamento da câmera e irá direto da seção Transformar em espaço para a chave e a seção Definir posição seguinte. Se for verdadeiro, os nós Camera Offset serão usados.
Configurações de chave estática
Por padrão, o tipo Chave estática é um booleano. Outras opções estão disponíveis, mas use o booleano padrão para este exemplo. O valor padrão pode ser definido como verdadeiro ou falso, mas deixe como falso neste exemplo. O pin Expor como também pode permanecer falso neste tutorial. Defini-lo como verdadeiro expõe um pin para a configuração no nó no gráfico, criando uma maneira de definir esse valor usando os dados no gráfico.
Use a chave estática
Abra o gráfico Visão geral do sistema e selecione a entrada da ilha de módulo Deslocamento aplicado. O painel Detalhes agora tem a opção Usar deslocamento da câmera. Enquanto estiver definida como falsa, nenhuma outra opção de deslocamento de câmera aparecerá na lista, e os nós pulados não afetarão o emissor. As informações de Interface de dados da câmera também foram removidas da seção de opções Avançada.
Enquanto estiver definida como verdadeira, os nós Câmera Offset são compilados e todas as opções relevantes (dentro e fora da seção Avançado) ficarão disponíveis no painel Detalhes.
Compartilhe módulos de rascunho
Para compartilhar seu módulo de rascunho com outros sistemas Niagara ou com o restante da sua equipe, você precisará exportar seu módulo de rascunho como um ativo de código de módulo do Niagara.
Abra o gráfico Deslocamento aplicado e clique na aba Módulos Locais. Clique com o botão direito no nome do módulo listado e clique em Criar ativo.
Isso abre a janela Criar código como. Dê um nome para o módulo (por exemplo, NMS_ApplyOffset) e selecione a pasta onde deseja armazenar o ativo. Em seguida, clique em Salvar.
O ativo foi criado e pode ser acessado no Navegador de Conteúdo.
A engine abre automaticamente o novo ativo de código de módulo do Niagara.
Exposição de bibliotecas
A primeira coisa que você provavelmente desejará alterar no ativo de código do módulo Niagara é o sinalizador Visibilidade da biblioteca no painel Detalhes.
Por padrão, ele está definido como "Não explícito", o que significa que ele não aparece em menus e pesquisas com a opção Apenas biblioteca habilitada (que é o padrão).
Para demonstrar isso, abra o sistema Niagara e use o botão "Adicionar +" para pesquisar ApplyOffset. O único resultado será o Scratch Pad, não o ativo NMS que acabamos de criar (que seria listado como Game).
Há duas maneiras diferentes de resolver isso, dependendo do nível de descoberta que você deseja que o ativo de código do módulo do Niagara tenha.
"Não explícito" e "Apenas biblioteca" desligado
Uma opção é deixar o módulo definido como Não explícito e mudar a opção de filtro Apenas biblioteca para falso na estação de trabalho. Isso pode ser útil se você não quiser ou precisar que o módulo seja facilmente acessível por usuários com configurações de filtro padrão. Se alguém quiser usar esse módulo, também precisará desmarcar a opção Apenas biblioteca na janela Adicionar novo módulo.
Exposto e "Apenas biblioteca" ativado
A outra opção é alterar a Visibilidade da biblioteca do ativo de código do módulo do Niagara para Exposto. Isso tornaria o módulo muito mais fácil de encontrar, pois ele apareceria no menu Adicionar novo módulo com as opções padrão de filtro ativadas (Apenas biblioteca definido como verdadeira). Isso é ideal para módulos que você deseja que estejam prontamente acessíveis para sua equipe ou outros usuários finais.
Abra o ativo de código do módulo do Niagara, altere a Visibilidade da biblioteca para Exposto e clique em Compilar e em Salvar.
Para ver isso em ação, abra um sistema Niagara e clique no botão Adicionar (+) para pesquisar Deslocamento aplicado. Ao contrário de antes, o ativo de código do módulo Niagara (com o rótulo Game) é incluído nos resultados da pesquisa, já a opção Apenas biblioteca está definida como verdadeira.
Máscara de bits de uso do módulo
Verifique a máscara de bits de uso do módulo do ativo de código do módulo do Niagara para garantir que as configurações de visibilidade estarão adequadas à funcionalidade pretendida para este módulo.
Campo de descrição
O texto no campo Descrição do código do módulo Niagara está incluído na dica que aparece ao passar o mouse sobre o módulo no menu Adicionar novo módulo. Inclua informações que possam ajudar o usuário a decidir se deseja ou não usar esse módulo. Por exemplo, explique o que ele serve, em quais circunstâncias é mais ou menos ideal para o uso deste módulo e quais outros fatores podem tornar ele mais ou menos relevante para os objetivos criativos ou técnicos do usuário.
Mensagem de observação
Se um módulo de código do Niagara for criado a partir de um módulo de rascunho, o campo Observação será preenchido automaticamente com o texto incluído no módulo de rascunho. Se o módulo de rascunho não incluir nenhum texto de observação, isso ficará em branco. Esta mensagem é exibida na parte superior do painel Detalhes quando a entrada da pilha do módulo é selecionada em um emissor.
Palavras-chave
As palavras-chave ajudam a tornar o código do módulo do Niagara mais fácil de encontrar durante pesquisas de menu. As palavras-chave devem ser separadas por espaços. O campo palavras-chave do código do módulo Deslocamento aplicado do Niagara pode incluir "câmera de posição de deslocamento", que permite ao usuário final pesquisar o "deslocamento de câmera" e a janela pop-up Deslocamento aplicado como uma opção no menu.
Conclusão
Você pode usar módulos do Scratch Pad para adicionar novas funcionalidades aos seus emissores e sistemas Niagara usando programação visual.
Para obter mais informações sobre como usar o Niagara, confira Como criar efeitos visuais e Referência do editor de código Niagara.