El marco de PCG es un conjunto de herramientas con el que podrás crear tus propios contenidos y herramientas procedimentales en Unreal Engine. El marco contiene varios modos PCG para facilitar la creación de mundos más grandes usando PCG. Los modos de generación dividen el dominio de generación de un componente de PCG en una cuadrícula en la que cada celda contiene su propio componente de PCG local.
En una cuadrícula grande, puedes generar mallas grandes y visualmente destacadas, como las de árboles y cantos rodados. En una cuadrícula pequeña, puedes crear detalles más pequeños, como hierba, flores y piedras. Este enfoque permite un control más granular sobre la ejecución de las herramientas de PCG y se usa para ajustar el rendimiento de las herramientas que cubren un área grande.
Existen cuatro modos de PCG:
Generación sin particiones (predeterminado)
Cómo usar la generación con particiones
De manera predeterminada, todas las mallas generadas por un componente de PCG están contenidas dentro del dominio del componente, como un volumen, o vinculadas a un spline. Este modo funciona con recursos de PCG más pequeños, pero puede causar problemas de rendimiento para recursos que cubren un área grande. La generación con particiones genera las mallas resultantes en una cuadrícula definida por el usuario. Los datos se dividen entre cada celda, lo que facilita la transmisión usando otros sistemas, como World Partition o Creación de instancias de niveles.
Habilita particiones en el grafo
Para alternar la generación con particiones en un componente de PCG:
Selecciona el recurso de PCG en tu nivel.
Marca la casilla de verificación junto a Está particionado en el panel Detalles.
Configura el tamaño de la cuadrícula de partición
El tamaño de la cuadrícula de partición viene definido por la opción Tamaño de cuadrícula de partición de PCGWorldActor:
Para configurar el tamaño de la cuadrícula:
Selecciona PCGWorldActor en el esquematizador.
Ajusta el valor de la opción Tamaño de cuadrícula de partición.
Selecciona cada recurso de PCG de tu nivel y haz clic en Limpiar en el panel Detalles.
Haz clic en el botón Generar para regenerar el resultado.
Cómo usar la generación jerárquica
La generación jerárquica admite la generación de mallas mediante PCG a varias escalas. Este tipo de generación anula el tamaño de Tamaño de cuadrícula de partición usado en Generación con particiones a través del nodo Grid Size y te permite ajustar la generación de la malla.
El nodo Grid Size personaliza el tamaño de la cuadrícula de generación para todos los datos generados después de él y debe colocarse antes de cualquier nodo de muestreador.
Habilita la generación jerárquica en el grafo
Para activar la generación jerárquica en tu grafo de PCG:
Abre tu grafo de PCG y haz clic en los ajustes del grafo.
Marca la casilla de verificación junto a Usar generación jerárquica.
Abre el cuadro desplegable de Tamaño predeterminado de cuadrícula de generación jerárquica y selecciona un valor.
Guarda el grafo de PCG.
La generación jerárquica requiere que tus componentes de PCG estén particionados. Asegúrate de que la opción Generación con particiones está habilitada en tu nivel antes de usar esta función.
Configura los ajustes de tamaño de la cuadrícula
Usa el nodo Grid Size para personalizar la generación de tus mallas en el grafo de PCG:
Busca y añade el nodo Grid Size antes del nodo de muestreador en cada ramificación del grafo de PCG en la que quieras anular el tamaño predeterminado de la cuadrícula de generación jerárquica.
Haz clic en el nodo Grid Size y configura el ajuste Tamaño de cuadrícula de generación jerárquica.
Guarda el grafo.
Regenera el resultado en tu nivel.
Usa el tamaño de tu malla para ayudarte a determinar el tamaño de cuadrícula adecuado en el grafo. Las mallas grandes suelen ser menos numerosas que las más pequeñas y deberían colocarse en una cuadrícula más grande para facilitar la transmisión. Las mallas más pequeñas son más numerosas y deberían colocarse en una cuadrícula de tamaño más pequeño.
La generación jerárquica sigue las siguientes pautas de ejecución:
Los nodos que no siguen a un nodo Grid Size en tu grafo de PCG generarán datos usando el valor definido en el ajuste Tamaño predeterminado de cuadrícula de generación jerárquica.
Los datos generados en una cuadrícula de mayor tamaño están disponibles como datos almacenados en caché durante la ejecución de una cuadrícula más pequeña. Desciende en cascada por un grafo desde una cuadrícula de mayor tamaño hasta una de menor tamaño, pero no pasa de una cuadrícula más pequeña a una más grande.
Si un nodo tiene varias entradas que usan datos de varios tamaños de cuadrícula, la salida se genera usando el tamaño de cuadrícula más pequeño.
Cómo usar el tamaño de cuadrícula desvinculado
En el siguiente ejemplo, un nodo Mesh Sampler está muestreando una malla de canto rodado a través de un volumen de PCG:
El muestreador toma muestras del contenido del volumen con el tamaño predeterminado de cuadrícula de generación jerárquica y ejecuta la operación de alto rendimiento cuatro veces, una por cada celda de la cuadrícula en el volumen. Con esta configuración de grafo, el rendimiento empeora a medida que aumenta el tamaño del volumen.
En situaciones como esta, se recomienda usar el tamaño de cuadrícula desvinculado. Este tipo de tamaño elimina la restricción de la cuadrícula para el componente de PCG y ejecutará los nodos que usen este tamaño de cuadrícula una vez. Luego, se pueden aplicar restricciones a la cuadrícula usando el nodo Grid Size.
Los subgrafos de PCG tienen sus tamaños de cuadrícula desactivados y usan el tamaño de cuadrícula de sus datos de entrada o del grafo padre.
Es posible generar datos de puntos duplicados al pasar datos de una cuadrícula más grande a una más pequeña. Esto ocurre cuando los datos generados para una cuadrícula más grande se replican en cada celda de una cuadrícula más pequeña y tendrá un impacto significativo en el rendimiento. Puedes eliminar los datos duplicados usando el nodo Cull Points Outside Actor Bounds para eliminar los puntos de los datos que existen fuera de la celda de cuadrícula más pequeña.
Cómo usar la generación en tiempo de ejecución
La generación en tiempo de ejecución es un modo de generación especial para componentes de PCG que genera y limpia dinámicamente en las proximidades de las fuentes de generación de PCG. Está disponible en compilaciones del editor, PIE e independientes.
La generación en tiempo de ejecución es más eficaz cuando se combina con la generación jerárquica para dispersar de forma eficiente los niveles de detalle más altos solo donde se necesita.
Fuentes de generación
Las fuentes de generación representan puntos del mundo que hacen que los componentes cercanos generados en tiempo de ejecución generen mallas.
Al igual que World Partition, la PCG usa las siguientes fuentes de transmisión:
Fuentes del visor del editor: fuentes asociadas al visor del editor activo o en foco cuando se activa la opción Considerar el visor del editor como fuente de generación en PCGWorldActor.
Player Sources: fuentes asociadas a los controladores del jugador en el nivel.
Fuentes de transmisión de World Partition: fuentes asociadas a cualquier elemento que actúe como proveedor de fuentes de transmisión desde el sistema World Partition (PlayerController, WorldPartitionStreamingSourceComponent, etc.).
Componentes de fuentes de PCG: fuentes utilizadas como fuente de generación de propósito general que se pueden vincular a cualquier actor.
El ajuste Radios de generación del grafo de PCG determina el intervalo en el que las fuentes de generación afectan a los componentes de PCG y se ajusta para cada tamaño de cuadrícula particionada. Cuando un componente de PCG generado en tiempo de ejecución se encuentra dentro de este radio, se programa su generación. Cuando un componente ya no está dentro de este radio (escalado por el multiplicador del radio de limpieza), se limpia.
Los radios de generación también se pueden anular en cada componente de PCG del nivel desde el panel Detalles activando el ajuste Anular radios de generación.
El radio de generación base se aplica a los componentes no particionados, y el nivel de cuadrícula Desvinculado se aplica a los componentes particionados de generación jerárquica.
Se recomienda evitar que las cuadrículas pequeñas tengan un radio de generación mayor que las cuadrículas de mayor tamaño. Cada radio de generación debería ser más grande que el anterior.
Políticas de programación
Las políticas de programación se utilizan para proporcionar reglas prácticas relativas al orden en el que se programan los componentes generados en tiempo de ejecución. La política de programación predeterminada usa la distancia y la dirección de la vista para priorizar la generación de componentes que se encuentran delante y cerca de una fuente de generación.
Las políticas de programación se establecen para cada componente y se encuentran en el panel Detalles del componente de PCG.
En Unreal Engine 5.5, al añadir el parámetro Exponencial del tamaño de cuadrícula de generación jerárquica, se aumentó considerablemente la importancia relativa del Peso de la dirección en la política de programación. Si tu contenido se creó antes de la versión 5.5, puede que tengas que reducir el peso de la dirección.
Usa el cribado de campo de visión
Cuando se selecciona la opción Usar cribado de campo de visión en el panel Detalles de un recurso de PCG, ese recurso comprobará antes de generar un componente si ese componente es visible en función de un campo de visión dado. Por ejemplo, si la cámara del jugador proporcionara el campo de visión, el recurso eliminaría o decidiría no generar un componente que no sería visible en función del punto de vista de la cámara del jugador.
Usa los controles Modificador de generador de límites y Modificador de limpieza de límites para generar o limpiar componentes hasta una distancia determinada antes de que entren en el campo de visión. Esto evita que los componentes aparezcan de repente mientras la cámara les está apuntando. El modificador de limpieza siempre será mayor o igual que el modificador de generación.
Habilita la generación en tiempo de ejecución
Para habilitar la generación en tiempo de ejecución en tu grafo de PCG:
En el panel Detalles de tu recurso de PCG, cambia el activador de generación a Generar en tiempo de ejecución.
Para probar la generación en tiempo de ejecución en el visor:
Selecciona PCGWorldActor en el esquematizador.
Asegúrate de que la casilla de verificación Considerar el visor del editor como fuente de generación esté habilitada.
Deberías ver las mallas generadas en un radio alrededor de la vista de cámara en el visor.
Configura la generación en tiempo de ejecución
Los radios de generación se definen para cada nivel de tamaño de cuadrícula en los ajustes del grafo de PCG o se pueden establecer en el panel Detalles de un PCGComponent para adaptarse a las necesidades de tu nivel.
Para configurar los radios de generación:
Abre los ajustes del grafo de PCG y expande Generación en tiempo de ejecución > Radios de generación.
Ajusta el radio de generación para cada tamaño de cuadrícula. La opción Radio de generación se aplica al tamaño de cuadrícula predeterminado o cuando usas la opción Desvinculado.
Ajusta la opción Multiplicador del radio de limpieza. Este multiplicador se aplica al radio de generación para determinar en qué radio se eliminan las mallas del nivel.
Guarda el grafo.
El recurso de PCG ahora solo generará mallas en un radio alrededor del visor.
Depuración y anulaciones en tiempo de ejecución
Hay varios comandos de consola útiles para depurar la generación en tiempo de ejecución durante el tiempo de ejecución.
| Comando de consola | Descripción |
|---|---|
pcg.RuntimeGeneration.Enable | Alterna la generación en tiempo de ejecución. |
pcg.RuntimeGeneration.EnableDebugging | Alterna el registro detallado del sistema de programación de generación en tiempo de ejecución para obtener información sobre su comportamiento exacto. |
pcg.RuntimeGeneration.EnablePooling | Alterna la agrupación de actores de partición generados en tiempo de ejecución para evitar asignaciones constantes. Esta opción está activada por defecto. |
pcg.RuntimeGeneration.BasePoolSize | Establece el número inicial de actores de partición generados en tiempo de ejecución en la agrupación. Se establece en |
pcg.RuntimeGeneration.FramesBetweenGraphSchedules | Establece el número de tics que debe esperar el sistema de programación de generación en tiempo de ejecución entre los componentes de programación para la generación. Es útil a la hora de depurar tu política de programación para observar el orden exacto en el que se programan los componentes. Se establece en 0 por defecto, lo que permite programar todas las generaciones en un solo tic. |
pcg.RuntimeGeneration.NumGeneratingComponents | Establece el número de componentes de PCG que se generan en paralelo. Esto ayuda a limitar el uso de CPU de la PCG y a controlar el tiempo de exposición a la pantalla de componentes específicos. Un número más bajo tendrá un impacto visible en la distancia y la dirección ponderadas, ya que cuando la generación de componentes se realiza en paralelo, no se garantiza la ejecución. Tiene un valor predeterminado de |
pcg.FrameTime | Asigna tiempo (en milisegundos) para que la PCG se ejecute por fotograma. Se establece en |
pcg.EditorFrameTime | Asigna tiempo (en milisegundos) por fotograma para que la PCG se ejecute cuando se ejecuta en el editor (no PIE). Se establece en |
Visualización del tamaño de cuadrícula en el grafo de PCG
Usa el árbol de objetos de depuración para visualizar el tamaño de cuadrícula usado por cada nodo en el grafo de PCG.
Para visualizar el tamaño de la cuadrícula en el grafo de PCG:
Selecciona un componente local de PCG de la lista del árbol de objetos de depuración que hay en la parte inferior izquierda. El nombre de cada componente contiene el tamaño de la cuadrícula. Por ejemplo,
PCGPartitionActor_12800_1_5_0/PCGComponent_1/NewPCGGraphforma parte de la cuadrícula de 12800 cm.Haz clic en la flecha que hay junto al nombre del componente y selecciónalo.
En el ejemplo anterior, se ha seleccionado un componente que genera mallas de árbol (1). Los nodos que generan mallas de rocas (2) y mallas de hierba (3) están atenuados, lo que demuestra que estos nodos generan árboles en un tamaño de cuadrícula más pequeño y se ejecutarán después de los nodos de árbol. Cada nodo muestra su tamaño de cuadrícula en metros en la esquina superior derecha.