Nanite y follaje: flujo de trabajo completo
¡Hola a todos!
Si me sigues en las redes sociales (LinkedIn o Instagram), estarás al tanto de mi reciente interés en Nanite y la vegetación. En esta publicación, me gustaría detallar mi flujo de trabajo y lo que aprendí durante este proyecto.
Sin embargo, ten en cuenta que esto de ninguna manera es un tutorial ni la única forma de hacer las cosas. Es simplemente el flujo de trabajo que desarrollé y usé para crear esta escena. Sigo creyendo que hay mucho margen de mejora
Speedtree: creación de árboles
Aunque Nanite ofrece mucha libertad en lo que respecta a los presupuestos de triángulos (tres en raya), no es ilimitado. Por esta razón, he decidido apuntar a un recuento de polígonos de entre uno y dos millones de tres en raya por árbol. Esto es infinitamente demasiado para un juego, pero como es parte de una escena, me estoy dando la libertad. También es importante tener en cuenta que la mayor parte del recuento de polígonos proviene de la vegetación, que se puede optimizar aún más. Tenga en cuenta que la lógica de creación sigue siendo la misma ya sea que se use Nanite o no: cuantos menos polígonos, mejor.
Trabajando con troncos escaneados: el primer paso para crear los árboles fue aprovechar al máximo Nanite, por eso decidí usar troncos escaneados de Megascans. A pesar de usar Nanite, elegí usar LOD3 para mayor comodidad, ya que los LOD más bajos son demasiado pesados.
Antes de continuar y crear el árbol, siempre empiezo creando una textura de mosaico de mi escaneo, siempre que sea posible. Algunos activos son tan específicos que a veces es mejor usar texturas de mosaico disponibles en Megascans u otras bibliotecas. Para crear una textura de mosaico basada en la parte escaneada, puede usar la herramienta Convertidor de malla, que se creó específicamente para este propósito. También tenga en cuenta que puede ayudarle a convertir un activo escaneado en un activo de Speedtree, lo que puede ser muy útil para optimizaciones a gran escala.
Gracias a la herramienta Stitch, puede combinar activos personalizados y activos de Speedtree con bastante facilidad. Si bien debe estar posicionada correctamente, es de gran ayuda para combinar los dos tipos de activos. Tenga en cuenta que Stitch siempre viene con una rama que representa la continuidad del tronco. Es a esta rama a la que debe asignar la textura que creamos anteriormente.
Bueno saber - Per fare in modo che la transizione tra Stitch e la mesh funzioni perfettamente, è necessario fare il bake di queste informazioni selezionando la tua mesh, andando su "Material" e utilizzando l'opzione "Bake Stitch Tool". Da qui puoi fare il bake delle texture solo, o creare automaticamente uno shader con esse.
Flujo de trabajo de textura - El resto de la textura es bastante similar al flujo de trabajo general de Speedtree. Pero como Nanite no requiere crear ramas enteras y usarlas en planos para optimizar los árboles al máximo, la verdadera diferencia radica en el número de niveles de ramas 3D, que es mayor que en un flujo de trabajo tradicional.
Especificaciones del Atlas de Nanite - Si bien normalmente es necesario incluir tantas ramas de diferentes tamaños como sea posible en un atlas, Nanite requiere trabajar de forma diferente que con la vegetación tradicional.
Non è necessario fare il bake di atlases con decine di fasi di rami differenti, bastano alcuni rami piccoli. Questo non solo riduce il numero di elementi in un atlas, ma significa anche che gli elementi possono essere resi più grandi, migliorandone così la qualità. Poiché gli elementi sono più grandi, la loro risoluzione è anche più alta, riducendo il "sfuocamento" presente negli atlases con troppi elementi o quando non viene rispettata la dimensione degli elementi.
Vea usted mismo cómo se compara un atlas con un enfoque tradicional con uno con Nanite.
Una vez completado el atlas, podemos recortar los planos para detallar las distintas ramas. Pero para que Nanite funcione a toda velocidad, es imperativo eliminar toda la transparencia, especialmente de la vegetación. Por lo tanto, debemos encontrar una forma de convertir una malla clásica, basada en una máscara de opacidad, en una malla completamente opaca que pueda prescindir de esta máscara problemática.
Bueno saber - Puedes aprender a crear estos árboles con un flujo de trabajo híbrido (estructura 3D en Nanite y vegetación en LOD) en mi curso Entorno del Viejo Oeste
Houdini: conversión de mallas basadas en alfa en mallas opacas
Aquí es donde agradezco a Quentin King y su video que muestra cómo crear la herramienta para convertir una malla basada en alfa en geometría opaca en Houdini. Si quieres aprender cómo se crea la herramienta o incluso recrearla, te recomiendo encarecidamente que veas su video.
Por mi parte, solo te mostraré lo que puedes hacer con esta herramienta.
Como puedes ver, una vez configurada correctamente, la herramienta funciona perfectamente y ahorra una gran cantidad de tiempo en comparación con el trabajo manual. Si bien en teoría esta herramienta funciona en todos los tipos de activos que usan una máscara de opacidad, solo la probé en vegetación.
Ahora mira el resultado con nuestros activos de rama usando la herramienta en varios árboles usados para esta escena.
Creando la vegetación del suelo
El enfoque para la vegetación del suelo es bastante similar al usado para las ramas. Comencé con máscaras de recorte basadas en una máscara de opacidad, que eliminé usando la herramienta que se muestra arriba.
El verdadero desafío con este tipo de activo es mantener la consistencia en el número de tres en raya en cada activo. Dado que cada activo se duplica muchas veces, es mejor mantener los valores no demasiado altos. Con la excepción de la hierba, que tiene más de 170k tris, y las flores moradas, que están cerca de los 100k, el resto de mis activos están por debajo de los 30k.
Nuevamente, me tomé la libertad de alcanzar estos valores porque estoy trabajando en una escena, no en un juego. Si tomaras un enfoque similar para un juego, recomendaría nunca exceder los 10k por activo. Si bien Nanite maneja muy bien los activos con un gran número de triángulos, cuantos menos triángulos tengan tus activos, más eficiente será Nanite y mejor podrás administrar tu presupuesto.
Speedtree - Viento
Inicialmente, se suponía que mi escena no debía contener viento y solo tomas estáticas para renderizar. Consciente del impacto en el rendimiento de tener activos Nanite con viento, no estaba seguro de querer intentarlo. Pero luego pensé que sería una verdadera lástima no hacerlo, así que decidí arriesgarme y le di una mirada.
"Legacy Unity / Unreal Engine" e formato .st - Empecé con el enfoque clásico y, aunque mis recursos se movían correctamente al importarlos, una vez convertidos a Nanite, era imposible moverlos. Pensé que debía haber un problema para conservar la información de color de los vértices, así que cambié al segundo enfoque.
Pintor de pivote (IGToolsPP) - Aunque este enfoque consume muchos recursos, estaba dispuesto a adoptarlo si me permitía mover mis árboles una vez convertidos a Nanite. Y funcionó: los árboles se mueven con este enfoque; añadir la función para que la herramienta sea compatible con un sombreador personalizado es bastante sencillo, y el efecto de viento es genial.
Sin embargo, tener que pasar por una capa específica para configurarlo parecía bastante engorroso, especialmente con docenas de recursos diferentes. Aunque la opción de copiar y pegar está disponible, no parecía la mejor opción. Además, parece haber un problema con la normal del tronco, que puede deberse a mi desconocimiento de esta herramienta. Fue entonces cuando pensé en el segundo tipo de viento que ofrece Speedtree.
"Game" e formato .st9 - Tras los dos fracasos anteriores, no estaba seguro de querer probar este nuevo enfoque. Estaba convencido de que sería similar al primer tipo de viento. Sin embargo, decidí arriesgarme y probar este nuevo tipo de viento. Me llevó varios intentos entender finalmente cómo funcionaba y qué papel desempeñaba cada parámetro. Una vez que todo estuvo más claro, configuré mi primer árbol y lo exporté a Unreal.
Los resultados iniciales no fueron muy satisfactorios, y aunque mis árboles se movieron una vez convertidos, se veían bastante diferentes a los que tenía en Speedtree. Pero la diferencia entre este tipo de viento y el tipo Legado es que todos los parámetros están disponibles desde la instancia del material en Unreal. Esto ofrece una gran libertad en su configuración. A partir de entonces, configuré el viento para mis árboles como base, sin pensar en el resultado final.
Por lo tanto, si necesitas configurar el viento para tu vegetación Nanite, te recomiendo usar el tipo de viento “Juego” y exportar tus recursos en formato “.st9” desde Speedtree 10. Aunque este tipo de viento también está disponible en la versión 9, no lo he probado. De esta manera, los cambios no afectarán a todos tus actores.
Una palabra sobre los shaders
Como probablemente ya sepas, Nanite siempre funcionará mejor con shaders opacos, pero si no quieres crear un nuevo sombreador maestro o te preocupa romper el que ya tienes, puedes cambiar el tipo de shader (tipo de mezcla) directamente en la instancia del material. De esta forma, los cambios no afectarán a los actores que usen el mismo shader.
Rendimiento
Antes de profundizar más en este tema, es importante tener en cuenta que no he realizado ninguna prueba o comparación exhaustiva. Por lo tanto, no compartiré nada aquí más que mis propias observaciones.
En comparación con los primeros días de esta escena, donde solo usaba vegetación tradicional, las ganancias de rendimiento logradas usando solo activos de Nanite y un shader opaco son realmente impresionantes. Es muy difícil para mí hacer comparaciones, ya que realmente no había pensado en este proyecto de esta manera, pero muy pronto después de sumergirme en el tema, compartí mi sorpresa por el rendimiento. La siguiente captura de pantalla de una de mis publicaciones de LinkedIn, publicada poco después de comenzar mi investigación, es un testimonio de esto.
Bueno saberlo - Puedes aprender a crear cada uno de los sombreadores utilizados en esta escena aquí
Como temía y ya sabía, el impacto del viento en los activos de Nanite es bastante significativo. En promedio, pierdo alrededor de 30 FPS cuando el viento está activo.
La escena final se ejecuta a aproximadamente 45 FPS a 1440p con todos los activos de Nanite y el viento activos en una RTX 4080, 75 FPS sin viento. Es importante tener en cuenta que Nanite en el terreno consume muchísimos recursos, por lo que los recursos están lejos de estar completamente optimizados. Estas cifras son del editor, no de una compilación independiente.
Sin embargo, estoy convencido de que con un enfoque más orientado a la jugabilidad y las limitaciones que conlleva, no es imposible mantenerse por encima de los 100 fps en las mismas condiciones, sin viento.
Conclusión
Antes de este proyecto, pensaba que Nanite no era una tecnología adecuada para la vegetación, pero hoy mi opinión ha cambiado. No diría que es completamente funcional y sin problemas, pero el progreso logrado a través de las diversas actualizaciones de Unreal Engine 5 va en la dirección correcta y refuerza mi creencia de que, algún día, Nanite y la vegetación podrían ser una opción viable para muchos estudios.
Este proyecto se tratará en un curso en los próximos meses, pero publicaré una nueva entrada de blog para compartir información sobre futuros cursos y su evolución.
Gracias a todos por tomarse el tiempo de leer esta publicación.
No duden en decirme lo que piensan de Nanite sobre la vegetación, siempre con amabilidad y respeto por las opiniones de todos.
Enlace al perfil de Michael en Artstation .
Últimos artículos
Recursos FAB gratuitos - hasta el 20 de octubre de 2026
Nuevos activos disponibles gratis en FAB, disponibles hasta el 20 de octubre de 2026
Unreal Engine Animation Studio: los conceptos básicos del movimiento en UE 5.8
Unreal Engine Animation Studio: 12 semanas para dominar las herramientas de animación UE 5.8 y darle intención al movimiento.
Aplicación web MetaHuman Creator: cierre el 5 de noviembre de 2026
Epic Games cerrará la aplicación web MetaHuman Creator el 5 de noviembre de 2026. Tendrás 90 días para recuperar tus personajes. Las funciones seguirán disponibles en Unreal Engine 5.6+. Exporta ahora a través de Quixel Bridge.