O framework de geração procedural de conteúdo (PCG) é um conjunto de ferramentas para criar seu próprio conteúdo e ferramentas procedurais dentro da Unreal Engine. O framework contém vários modos de geração de PCG para facilitar a criação de mundos maiores usando PCG. Os modos de geração dividem o domínio de geração de um componente de PCG em uma grade, com cada célula contendo seu próprio componente de PCG local.
Em uma grade grande, é possível gerar malhas grandes e visualmente proeminentes, como árvores e pedras. Em uma grade pequena, você pode criar detalhes menores, como grama, flores e pedras. Essa abordagem fornece um controle mais granular sobre a execução de ferramentas de PCG e é usada para refinar o desempenho de ferramentas que abrangem uma área grande.
Há quatro modos de geração de PCG:
Geração não particionada (padrão)
Como usar geração particionada
Por padrão, todas as malhas geradas por um componente de PCG estão contidas no domínio do componente, como um volume ou vinculadas a uma spline. Esse modo funciona para ativos de PCG menores, mas pode causar problemas de desempenho para ativos que cobrem uma área grande. A geração particionada gera as malhas resultantes em uma grade definida pelo usuário. Os dados são divididos entre cada célula, facilitando a transmissão usando outros sistemas, como World Partition e instância de nível.
Habilite o particionamento no gráfico
Para alternar a geração particionada em um componente de PCG:
Selecione o ativo de PCG no nível.
Clique na caixa de seleção ao lado de É particionado no painelDetalhes .
Configure o tamanho da grade de partição
O tamanho da grade de partição é definido pela opção Tamanho de grade da partição no PCGWorldActor:
Para configurar o tamanho da grade:
Selecione o PCGWorldActor no Organizador.
Ajuste o valor da opção Tamanho da grade de partição.
Selecione cada ativo de PCG no nível e clique em Limpar no painel Detalhes .
Clique no botão Gerar para gerar novamente o resultado.
Como usar a geração hierárquica
A geração hierárquica permite a geração de malha usando PCG em várias escalas. Esse tipo de geração substitui o "Tamanho de grade da partição" usado em "Geração particionada" por meio do nó Grid Size e permite ajustar a geração da malha.
O nó Grid Size personaliza o tamanho da grade de geração para todos os dados gerados que descendem dele e deve ser colocado antes de quaisquer nós de amostra.
Habilitar geração hierárquica no gráfico
Para habilitar a geração hierárquica no gráfico PCG:
Abra o gráfico PCG e clique em "Configurações do gráfico".
Clique na caixa de seleção ao lado de "Usar geração hierárquica".
Abra a caixa suspensa para o tamanho de grade padrão de HiGen e selecione um valor.
Salve o gráfico PCG.
A geração hierárquica exige que os componentes de PCG sejam particionados. Certifique-se de que Geração particionada está habilitada no nível antes de usar essa funcionalidade.
Defina as configurações de tamanho de grade
Use o nó Grid Size para personalizar a geração das malhas no gráfico PCG:
Pesquise e adicione o nó Grid Size antes do nó do amostrador em cada ramificação do gráfico PCG em que deseja substituir o tamanho padrão da grade de geração hierárquica.
Clique no nó Grid Size e ajuste a configuração Tamanho da grade do HiGen.
Salve o gráfico.
Gere novamente o resultado no nível.
Use o tamanho da malha para ajudar a determinar o tamanho de grade apropriado no gráfico. Malhas grandes costumam ser menos numerosos do que malhas menores e devem ser colocadas em uma grade maior para facilitar a transmissão. Malhas menores são mais numerosas e devem ser colocadas em uma grade de tamanho menor.
A geração hierárquica usa as seguintes diretrizes de execução:
Os nós que não seguem um nó Grid Size no gráfico PCG gerarão dados usando o valor definido na configuração Tamanho da grade padrão do HiGen.
Dados gerados em um tamanho de grade maior ficam disponíveis como dados em cache durante a execução de uma grade menor. Ele desce verticalmente de um gráfico de tamanho maior para um tamanho menor, mas não passa de uma grade menor para uma maior.
Se um nó tiver várias entradas usando dados de vários tamanhos de grade, a saída será gerada usando o menor tamanho de grade.
Como usar o tamanho de grade não vinculado
No exemplo a seguir, um nó Mesh Sampler está fazendo amostragem de uma malha de pedregulho em um volume de PCG:
O amostrador faz amostragem o conteúdo do volume no tamanho de grade padrão do HiGen e executa a operação de alto desempenho quatro vezes, uma para cada célula da grade no volume. Com essa configuração do gráfico, o desempenho piora conforme o tamanho do volume aumenta.
Nesses casos, recomendamos usar o tamanho de grade não vinculado. O tamanho não vinculado remove a restrição de grade do componente PCG e executa os nós usando esse tamanho de grade uma vez. Em seguida, é possível aplicar restrições de grade usando o nó Grid Size.
Os tamanhos de grade dos subgráficos de PCG são desabilitados e usam o tamanho da grade dos dados de entrada ou do gráfico-pai.
É possível gerar dados de pontos duplicados ao passar dados de uma grade maior para uma menor. Isso ocorre quando os dados gerados para uma grade maior são replicados em cada célula de uma grade menor e afetarão o desempenho de forma significativa. Você pode remover os dados duplicados usando o nó Cull Points Outside Actor Bounds para remover os pontos dos dados de ponto que existem fora da célula de grade menor.
Como usar a geração do tempo de execução
A geração do tempo de execução é um modo de geração especial para componentes de PCG que gera e limpa dinamicamente nas proximidades de fontes de geração de PCG. Está disponível no editor, em JNE e em versões independentes.
A geração do tempo de execução é mais eficaz quando combinada com a geração hierárquica, para distribuir com eficiência níveis de detalhe mais altos apenas onde forem necessários.
Fontes de geração
As fontes de geração representam pontos no mundo que fazem com que componentes próximos gerados em tempo de execução gerem malhas.
Semelhante ao World Partition, o PCG usa o seguinte como fontes de transmissão:
Origens da janela de visualização do editor: fontes anexadas à janela de visualização do editor ativo ou em foco quando a opção Tratar janela de visualização do editor como fonte de geração está ativada no PCGWorldActor.
Fontes de jogadores: fontes anexadas aos controles do jogador no nível.
Fontes de transmissão do World Partition: fontes anexadas a tudo que atua como um provedor de fontes de transmissão do sistema World Partition (PlayerController, WorldPartitionStreamingSourceComponent etc.).
Componentes de fonte de geração de PCG: fontes usadas como uma fonte de geração de uso geral que pode ser anexada a qualquer ator.
A configuração Raio de geração no gráfico de PCG determina o intervalo em que as fontes de geração afetam os componentes de PCG e é definida para cada tamanho de grade particionada. Quando um componente de PCG gerado em tempo de execução estiver dentro desse raio, a geração dele será agendada. Quando um componente não estiver mais dentro do raio (dimensionado pelo Multiplicador do raio de limpeza), ele será removido.
Também é possível substituir a geração de raios em cada componente de PCG no nível usando o painel Detalhes ao ativar a configuração Substituir geração de raios.
O raio de geração-base se aplica a componentes não particionados, e o nível de grade não vinculada se aplica a componentes particionados de geração hierárquica.
Recomenda-se evitar grades pequenas com raio de geração maior do que grades maiores. Cada geração de raio deve aumentar de tamanho em relação à anterior.
Políticas de agendada
As políticas de agendamento são usadas para fornecer regras práticas para a ordem na qual os componentes gerados em tempo de execução são agendados para serem gerados. A política de agendamento padrão usa a distância e a direção de visualização para priorizar os componentes de geração que estão na frente e nas proximidades de uma fonte de geração.
As políticas de agendamento são definidas a cada componente e podem ser encontradas no painel Detalhes do componente de PCG.
Na Unreal Engine 5.5, a adição de um exponencial de tamanho de grade do HiGen aumentou muito a importância relativa do peso da direção na política de agendamento. Se o conteúdo foi criado antes da versão 5.5, talvez seja necessário diminuir o peso da direção.
Usar seleção de frustum
Quando Usar seleção de frustum estiver selecionado no painel Detalhes de um ativo de PCG, esse ativo verificará, antes de gerar um componente, se o componente é visível com base em um determinado frustum de visualização. Por exemplo, se a câmera do jogador fornecesse o frustum, o ativo faria a seleção ou decidiria não gerar um componente que não seria visível com base no ponto de vista da câmera do jogador.
Use os controles Gerar modificadores de delimitação e Limpar modificadores de delimitação para gerar ou remover componentes até uma certa distância antes de entrarem no frustum de visualização. Isso evita que os componentes apareçam de repente quando a câmera estiver apontada para eles. O modificador de limpeza sempre será maior ou igual ao modificadores de geração.
Ative a geração do tempo de execução
Para habilitar a geração do tempo de execução no gráfico de PCG:
No painel Detalhes do seu ativo de PCG, altere o gatilho de geração para Gerar em tempo de execução.
Para testar a geração do tempo de execução na janela de visualização:
Selecione o PCGWorldActor no Organizador.
Certifique-se de que a caixa de seleção para Tratar janela de visualização do editor como origem de geração está habilitada.
Você deve ver as malhas sendo geradas em um raio ao redor da visualização da câmera na janela de visualização.
Configure a geração do tempo de execução
Os raios de geração são definidos para cada nível de tamanho de grade nas configurações do gráfico de PCG ou podem ser definidos no painel Detalhes de um componente de PCG para atender às necessidades do nível.
Para configurar os raios de geração:
Abra as configurações de gráfico PCG e expanda a Geração do tempo de execução >Raios de geração
Ajuste o raio de geração para cada tamanho de grade. A opção raios de geração é aplicada ao tamanho padrão da grade ou quando você usa a opção "Não vinculado".
Ajuste o Multiplicador de raio de limpeza. Esse multiplicador se aplica ao raio de geração para determinar o raio no qual as malhas são removidas do nível.
Salve o gráfico.
O ativo de PCG só gerará malhas em um raio ao redor do visualizador.
Depuração e substituições de tempo de execução
Há vários comandos do console úteis para depurar a geração do tempo de execução durante o tempo de execução.
| Comando do console | Descrição |
|---|---|
pcg.RuntimeGeneration.Enable | Alterna a geração do tempo de execução. |
pcg.RuntimeGeneration.EnableDebugging | Ativa ou desativa o registro detalhado do agendador de geração do tempo de execução para obter informações sobre seu comportamento exato. |
pcg.RuntimeGeneration.EnablePooling | Alterna o agrupamento de atores de partição gerados no tempo de execução para evitar alocações constantes. Essa opção está habilitada por padrão. |
pcg.RuntimeGeneration.BasePoolSize | Define o número inicial de atores de partição gerados em tempo de execução no pool. Definimos |
pcg.RuntimeGeneration.FramesBetweenGraphSchedules | Define o número de marcas de verificação que o agendador de geração do tempo de execução deve aguardar entre componentes de agendamento para geração. Útil ao depurar sua política de agendamento para observar a ordem exata em que os componentes estão sendo agendados. Definimos 0 por padrão, o que permite que todas as gerações sejam agendadas em uma única marca de verificação. |
pcg.RuntimeGeneration.NumGeneratingComponents | Define o número de componentes de PCG que são gerados em paralelo. Isso ajuda a limitar o uso de PCG pela CPU e a controlar o tempo de triagem de componentes específicos. Um número menor afetará visivelmente a ponderação de distância e direção, pois, quando a geração de componentes é feita em paralelo, a execução não é garantida. Definimos |
pcg.FrameTime | Aloca o tempo (em milissegundos) para a execução do PCG a cada quadro. Definimos |
pcg.EditorFrameTime | Aloca tempo (em milissegundos) para que o PCG seja executado a cada quadro ao rodar no editor (não JNE). Definimos |
Como visualizar o tamanho da grade no gráfico de PCG
Use a árvore de objeto de depuração para visualizar o tamanho da grade usado por cada nó no gráfico PCG.
Para visualizar o tamanho da grade no gráfico PCG:
Selecione um componente de PCG local na lista da árvore de objeto de depuração, localizada no canto inferior esquerdo. Cada nome de componente contém o tamanho da grade. Por exemplo,
PCGPartitionActor_12800_1_5_0/PCGComponent_1/NewPCGGraphfaz parte da grade de 12800 cm.Clique na seta ao lado do nome do componente e selecione-o.
No exemplo acima, um componente que gera malhas de árvore é selecionado (1). Os nós que geram malhas de rocha (2) e malhas de grama (3) estão esmaecidos, indicando que esses nós estão gerando árvores em uma grade de tamanho menor e serão executados após os nós de árvore. Cada nó exibe o tamanho da grade, em metros, no canto superior direito.