Linus Tegelbratt nos muestra en este video el proceso de creación de un generador de parques en Houdini y explica cómo se configuró la opción de generar etiquetas.

Introducción:

¡Hola! Mi nombre es Linus Tegelbratt y soy de Suecia. Comencé mi carrera como pasante en MachineGames, trabajando en Wolfenstein Youngblood como artista ambiental. Luego, trabajé para Marmoset como artista de materiales por contrato, principalmente enfocado en crear materiales base para la biblioteca Toolbag 4.

Nombre:  Configuración del Generador de Parques en Houdini y Unreal Engine.jpg
Visitas: 512
Tamaño: 366.1 KB

Generador de Parques infantiles:

Cerca de mi casa, hay un parque infantil donde mi hija suele jugar. Fue de ahí de donde obtuve la idea para este proyecto. Quería ver si podía hacer algo similar con un sistema procedural en Houdini.

Comienzo creando una cuadrícula de 3x3:
Clic en la imagen para ver su versión completa. 

Nombre: Comienzo haciendo una cuadrícula de 3x3.jpg 
Visitas: 446 
Tamaño: 38.6 KB 
ID: 245441

La siguiente fase consiste en establecer algunos atributos de puntos que serán utilizados en todo el sistema. En primer lugar, se asigna un atributo propio al punto medio, seguido de las esquinas y, posteriormente, los puntos restantes se emplearán como puntos de generación para las nuevas plataformas. De esta manera, se crean tres atributos diferentes en esta cuadrícula. Además, se configuran las normales de cada punto para que apunten hacia afuera.

Clic en la imagen para ver su versión completa. 

Nombre: Attribute Wrangle setPointAttributes.jpg 
Visitas: 460 
Tamaño: 74.7 KB 
ID: 245442

Luego uso un bucle "Para cada número" con la configuración "Comentarios en cada iteración". De esta manera puedo obtener el resultado de cada iteración y usarlo en el bucle.

Entonces, en cada iteración del ciclo, elimino los puntos de generación no activos, selecciono aleatoriamente un punto de entre ellos, muevo el punto seleccionado a lo largo de su normal y luego fusiono los resultados de cada iteración.

Clic en la imagen para ver su versión completa. 

Nombre: Bubles para cada número.gif 
Visitas: 464 
Tamaño: 555.1 KB 
ID: 245443

Luego, es necesario asegurarse de eliminar los puntos de generación no deseados para evitar que las plataformas se agrupen en un gran lío.

En primer lugar, se debe aplanar todo para que también funcione para los niveles múltiples más adelante. Luego, se deben mover todos los puntos de generación a lo largo de su normal con una distancia equivalente a la mitad del tamaño de la cuadrícula inicial. Después, es importante comprobar si alguno de los puntos tiene puntos superpuestos dentro de una pequeña distancia y, de ser así, se deben eliminar de los puntos de generación.

Finalmente, se debe invertir la transformación y descomponer la geometría a la posición original. Este mismo enfoque también se puede utilizar para asegurarse de que no haya diapositivas que se crucen entre sí.

Clic en la imagen para ver su versión completa. 

Nombre: Eliminar números en la configuración de parques infantiles 1.gif 
Visitas: 443 
Tamaño: 436.6 KB 
ID: 245444 Clic en la imagen para ver su versión completa. 

Nombre: Eliminar números en la configuración de parques infantiles.gif 
Visitas: 456 
Tamaño: 550.6 KB 
ID: 245445

Aquí puedes ver cómo cada iteración en el ciclo genera una nueva plataforma con las flechas verdes que representan un posible punto de generación.

Clic en la imagen para ver su versión completa. 

Nombre: iteración en el ciclo.gif 
Visitas: 468 
Tamaño: 308.3 KB 
ID: 245446

El siguiente paso fue agregar el sistema para tener múltiples niveles, que nuevamente es manejado por otro nodo de disputa de puntos. Puede establecer el máximo de niveles y la posibilidad de que el punto suba un nivel. También agrego un atributo de piso a los puntos para poder separar los diferentes niveles más adelante.

Clic en la imagen para ver su versión completa. 

Nombre: agregar el sistema para tener múltiples niveles.gif 
Visitas: 450 
Tamaño: 1.19 MB 
ID: 245447

Esa es la funcionalidad básica cuando se trata de la forma, pero hay algunos pasos más para configurar las paredes y demás, verificar que las diapositivas no se crucen entre sí, y otros detalles.

Utilizaré esa forma base y los puntos para crear el resto del HDA. Por ejemplo, para crear los postes en el marco del juego.

La altura de los postes se establecerá según el piso que soporten, para lo cual usaremos el atributo del piso.

Comenzaré fusionando los puntos con un objeto, eliminando todo excepto los puntos con el atributo de esquina y aplanando todos los puntos al suelo. Esto creará varios puntos superpuestos, que pueden tener diferentes valores de atributo de suelo, por lo que debo establecer el valor más grande del atributo de suelo para todos los puntos superpuestos. Para ello, utilizaré una función de comparación de puntos llamada "nearpoints", que agregará todos los puntos superpuestos a una matriz y luego recorrerá esa matriz para establecer el valor más grande en todos los puntos de esa matriz.

Clic en la imagen para ver su versión completa. 

Nombre: funcionalidad básica cuando se trata de la forma.gif 
Visitas: 448 
Tamaño: 336.1 KB 
ID: 245448 Clic en la imagen para ver su versión completa. 

Nombre: Attribute Wrangle.jpg 
Visitas: 457 
Tamaño: 63.0 KB 
ID: 245449 Clic en la imagen para ver su versión completa. 

Nombre: escalas.gif 
Visitas: 444 
Tamaño: 405.0 KB 
ID: 245450

Estoy configurando la escala de cada punto, lo que controlará el tamaño de los postes cuando use el nodo "copiar a puntos". Estoy multiplicando el atributo de piso con la altura del poste, lo que asegurará que el tamaño de los postes se amplíe cuando se suba de nivel. Luego, después de "copiar a puntos", también estoy aplicando la misma escala a los rayos UV de los postes, para que también se basen en la altura del poste y no se estiren.

Además, estoy usando curvas para modificar las formas de muchas de las partes, lo que permite al usuario darles la forma que desee. Esto también se logra mediante un nodo de disputa de puntos. Estoy usando esto en muchas partes del HDA para darle al usuario más control, como la forma de las paredes, los toboganes, las manijas y mucho más.

Clic en la imagen para ver su versión completa. 

Nombre: configurando la escala para cada punto.gif 
Visitas: 462 
Tamaño: 2.99 MB 
ID: 245451

Una de las últimas partes que he añadido ha sido la opción de generar calcomanías. Para ello, comienzo creando algunos puntos y luego configuro su atributo de orientación para que se ajuste correctamente en Unreal Engine. Además, establezco un atributo de cadena llamado "unreal_instance" que hace referencia a la calcomanía que se desea utilizar. En este caso, utilizo un plano. Para algunos lugares, como las paredes, también establezco la escala de las calcomanías para que se ajusten al ancho o alto de la pared si se modifica su tamaño.

Clic en la imagen para ver su versión completa. 

Nombre: opción para generar las calcamonías.jpg 
Visitas: 442 
Tamaño: 259.1 KB 
ID: 245452

Conclusión:

Uno de los principales desafíos fue organizar todos los parámetros para el usuario, ya que existen muchos parámetros para ajustar en el HDA para cada parte. A pesar de que intenté mantenerlo simple, aún proporcioné la opción de realizar cambios en tantos aspectos como fuera posible, aunque probablemente podría haberme tomado más tiempo y simplificar un poco el diseño.

En general, el proyecto fue muy divertido de hacer, y podría expandirlo mucho más y agregar nuevas partes al sistema, dividir la forma un poco más, y mucho más.

Atentamente, Linus Tegelbratt, Artista 3D. Publicado en 80.lv.