Arte 3D - PG - Red Velvet UT Tower - Optimización Modular de Modelos High Poly

Descripción General
A pesar de que se cuenta con el proceso de optimización de assets, en este caso por la composición del modelo, se abordó desde una perspectiva modular. Al analizar el asset nos percatamos que en lugar de partes individuales, el modelo podía desarrollarse a través de la repetición de Segmentos/Modulos.
Proceso de Desarrollo
Como primer paso se analizó el modelo proporcionado por cliente, al ser una asset que se ocuparía en Realidad Aumentada, la optimización era necesaria tanto en número de polígonos como en tamaño y cantidad de texturas.
Al contar con millones de triángulos, el primer paso fue dividir por secciones el modelo high poly. Esto nos ayuda a trabajar de manera más fluida un modelo por cada sección y evitar que la cantidad de polígonos ralentice el equipo o genere errores. De igual manera, esta segmentación fue de utilidad al momento de la creación del backlog para generar tareas específicas de cada edificio.
Edificios Laterales y Centrales
En el caso de los edificios secundarios (laterales y centrales) se componían tanto de paredes o elementos particulares pero principalmente de secciones que podían modularizarse para replicarse a lo largo del modelo.

Se comenzó trabajando la geometría optimizada de los elementos, con la ayuda de los materiales se separaban las secciones que servirían de base (Verde) y la geometría a la que se le copiarían los UVs (Amarillo). Se utilizó este flujo para poder corroborar la cantidad de poligonaje durante el desarrollo y en caso de que fuera necesario, optimizar aún más algunos objetos.

Para este paso, de acuerdo a algunos otros procesos de optimización que se han realizado, se podría abordar de maneras diferentes. Elegir el flujo depende completamente del desarrollador y con lo que se siente más cómodo
-
A través de instancias: Una instancia es un objeto nuevo que comparte la geometría y componentes del original. Se pueden hacer de dos formas: Configurando el Shift + Drag desde nuestro Tool Setting nos permite generarla en la posición donde soltemos el objeto, por lo que es mucho más rápida e intuitiva al momento de colocar los elementos.

De igual forma, a través de la opción Duplicate Special podemos generar nuestras instancias teniendo un mayor control en cuanto a la cantidad e ingresar valores exactos en su traslación, rotación o escala para colocar las instancias.

Para este proyecto en específico, no se contaban con medidas exactas, por lo que la primera opción podría funcionar mejor. Si seguimos este flujo, los ajustes a la geometría así como el despliegue y acomodo de UVs que se realicen en el modelo base deberían de realizarse de manera automática en todas las instancias. Es importante recordar que al finalizar, dichas instancias se deben convertir a objetos con la opción Convert → Instances to Objects
-
La siguiente opción consiste en trabajar la optimización de un objeto base, asegurar que al menos la geometría funciona, duplicar con copias normales los elementos y posicionarlos donde corresponde, este flujo nos ayuda a saber conforme se trabaja en el modelo la cantidad de poligonaje que se va generando y saber si la versión final será óptima en este apartado. Una vez que se tengan todos los objetos posicionados y segmentados entre objetos base y copias, se puede comenzar a trabajar los UVs. El despliegue y acomodo de Uvs se realiza en el objeto base y copia a los demás elementos. Es importante tomar en cuenta que el número de vértices debe ser el mismo, por lo que si se hace una modificación en el modelo base, posterior al acomodo de elementos (como eliminar caras o edge loops) este método no funcionará. También recordar que la asignación de materiales en este flujo es más manual, es decir, una vez que se tengan los UVs correctos en todos los elementos, se deberá asignar el material correspondiente a cada uno.
Aunque se tienen opciones dentro de Maya para pasar la información de los UVs de un objeto a otro, presentaron errores o no funcionaban correctamente al seleccionar muchos objetos. Por esta razón se creó un Script que simplifica este proceso. Seleccionando el objeto base y posteriormente los objetos copia, al correr el Script se tranfiere de manera exitosa la información de UVs a todos los elementos seleccionados (El Script se puede encontrar en los archivos adjuntos de esta ficha).
-
Otra opción sería solamente trabajar con objetos base hasta prácticamente finalizar el proceso, es decir, con texturizado, UVs desplegadas correctamente y geometría optimizada. Para posteriormente duplicar y acomodar los objetos base tomando como referencia el modelo high poly.
Creación de Planos Ornamentales
Optimización de texturas y Materiales Tileables
Para este proyecto se necesitaba mostrar un edificio con una superficie amplia además de una variedad de texturas diferentes ya que el edificio estaba compuesto por varias secciones. Al ser un proyecto para model viewer se necesitaba tener el menor peso posible en cuanto a texturas, por lo que se hizo primero un pequeño análisis de cuántas texturas eran necesarias para mantener un nivel realista sin tener pesos exagerados.
Se dividió de la siguiente manera el texturizado:
- Atlas de texturas para elementos ornamentales y detalles más específicos del edificio (Textos, rejas, barandales, reloj)
- Materiales Tileables para paredes y tiles que se podían ver desde lejos cubriendo superficies amplias (Pasto, ladrillos, suelos)
- Materiales sin textura, valores directos en el GLB, para elementos más pequeños que compartían material y que no se verían cerca en comparación a la superficie (Madera de puertas, Detalles dorados, etc)
Materiales Tileables
| Referencia | Información | Textura | Tamaños |
|---|---|---|---|
| UT-Tower-07-Bud-Franck-20260702-010436.jpg | Ladrillos de la torre y secciones superiores | TXT_UTT_WallsA_A-20260527-143026.jpg | 64.5 kb |
| image-20260702-010814.png | Ladrillos de la parte inferior. Principalmente edificios laterales y frontal. Similar al tipo A pero con una mayor separación | TXT_UTT_WallsB_A-20260527-143016.jpg | 62.3 kb |
| image-20260702-042817.png | Teejados de edificios laterales y frontal | TXT_UTT_Roof-20260527-144020.jpg | 71.9 kb |
| image-20260702-035630.png | Jardines. No se utilizó vegetación pero sí había algunas secciones que requerían pasto, se omitieron todos los árboles | TXT_UTT_Grass-20260527-143605.jpg | 126kb |
Notas
Se aprovechó la distancia a la que se iba a ver el modelo, además de que gracias a las variaciones que se hicieron en la geometría ayudaron a romper la sensación del tiling un poco
Atlas
| Referencia | Información | Textura | Tamaños |
|---|---|---|---|
| image-20260702-202648.png | Atlas para los detalles ornamentales, la sección del barandal funciona como trimsheet | TXT_Ornaments_AL-20260527-144405.png | 462 kb |
| image-20260702-053330.png | Había unas secciones que no venían en el modelo de referencia. Se creó otro atlas para incluir estos nuevos detalles del edificio frontal | TXT_Ornaments_Front_AL-20260527-161648.png | 412 kb |
| image-20260702-053517.png | Se dejó una textura aparte para el reloj, no se tenían referencias completamente de cerca | TXT_UTT_Clock_A-20260527-194057.jpg | 55.5 kb |
Materiales con valores directos en Model Viewer
| Material | Uso | Valor | |
|---|---|---|---|
| DetailWhite | Detalles blancos como columnas y techos | #DBD9D7FF | image-20260702-210816.png |
| Gold | Detalles dorados metálicos, principalmente para el reloj | #BC8600FF | image-20260702-210747.png |
| DetailRed | Detalles para zonas pintadas de rojo, se usa en la parte superior del reloj | #8A4B42FF | image-20260702-210729.png |
| Detail | Detalles para materiales de marcos de ventanas | #8A794EFF | image-20260702-210653.png |
| Windows | Material para simular los vidrios del edificio | #012C49FF | image-20260702-210632.png |
| Wood | Material color madera para objetos como las puertas | #5B3B00FF | image-20260702-210556.png |
Notas
Para estos materiales se asignó la geometría dependiendo del color que necesitaban Por ejemplo, se construyeron los marcos de las ventanas por separado para poder asignarles su material. Igual la geometría de alrededor del reloj tiene su material dorado.
Esto para aprovechar que la geometría no añadiría tanto peso como el meter una textura o un atlas para cada uno de esos detalles
Es importante que se elija una paleta de colores que funcione bien
En el rendimiento del proyecto no impactó de manera negativa el tener varios materiales.
Ambient Occlusion/Bake de Sombras
Para aumentar el realismo y mejorar la visualización del modelo se implementó un mapa de AO. El edificio se hizo de manera modular priorizando la posición de las UVs y su tamaño para materiales tileables, por lo que en su mayoría las UVs de los modulos se sobreponían entre ellas o no estaban desplegadas dentro de un solo cuadrante. Por esta razón se decidió crear un segundo mapa de UVs en el cual se pudieran proyectar las sombras.
Se siguó el siguiente procedimiento para las UVs y materiales ya que se tenía el modelo con el primer set:
| # Paso | Proceso |
|---|---|
| 1 | Tener modelo con el primer set de UVs |
| 2 | Crear un nuevo set de UVs dentro del mismo modelo llamado AO |
| 3 | Crear UVs “limpias” solo de objetos sólidos (Omitir planos y materiales con detalle mediante alphas) |
| 4 | Exportar modelo (Este es el que se usará en el GLB) |
| 5 | Duplicar modelo |
| 6 | Eliminar los planos de detalles ornamentales, asignar un solo material a todo el FBX (Este se usará para el bake) |
| 7 | Importar modelo de bake a Substance (O donde se prefiera sacar bakes, puede ser otro) |
| 8 | Bakear mapa de AO con alta resolución (Blanco y negro) (es importante que sea lo suficientemente grande para no crear artefactos) |
| 9 | Optimizar mapa de AO en tiny panda (O software de preferencia para comprimir texturas) |
| 10 | Importar modelo original con ambos sets de UVs a blender |
| 11 | Crear los siguientes nodos por cada material que pertenezca a la estructura(Omitir materiales con alpha o detalles ornamentales) |
| 12 | Crear Nodo de Attribute. Dentro del espacio en blanco escribir AO |
| 13 | Crear Nodo de Imágen con la textura de nuestro bake de AO |
| 14 | Crear un nodo “vacío” llamado gltf settings |
| 15 | Dentro del nodo gltf settings asignarle un input llamado “occlusion” |
| 16 | Conectar el nodo de Attribute con el de nuestra imagen de AO mediante “vector” |
| 17 | Conectar el nodo de imagen con el nodo gltf settings mediante color->occlusion |
| 18 | Exportar modelo como GLB |
| 19 | Testear en Model viewer |
| 20 | Listo! Si todo salió bien model viewer debería leer el segundo mapa de UVs como AO, además de poder verse las sombras en el editor |
Algunos puntos importantes para conservar el tile y el mapa de AO:
| Propiedades y puntos importantes | ||
|---|---|---|
| 1er Set de UVs | - Las UVs le dan prioridad al tiling y su tamaño - Pueden estar sobrepuestas - Pueden salir del tamaño del cuadrante - Los materiales deben de estar separados dependiendo del material que tendrán asignado | |
| 2do Set de UVs | - Las UVs le dan prioridad a un bake limpio - No deben de estar sobrepuestas las UVs - Deben de encontrarse dentro de un solo cuadrante - Es importante omitir planos y materiales que contengan alpha para el detalle (En este caso los detalles ornamentales) ya que causan sombras en el modelo donde no van - Exportar un modelo a un software que pueda sacar bake de AO (No tiene que ser alguno en específico) En este caso se usó Substance Painter - Para agilizar el proceso se puede tratar de usar opciones automáticas de UVs y limpiarlas - El mapa tiene que ser grande | TXT_UTT_AO-20260528-215858.jpg |
Por mejorar
- Las sombras en unas secciones del modelo quedaron muy marcadas, por ejemplo abajo de los arcos, se puede revisar el editar el mapa de AO para pulir algunos detalles como esos
- El edificio original tiene desniveles en la parte central que bajan más que las secciones o piso de los alrededores, esto hace que la sombra de model viewer quede un poco desfazada.
- Se podría mejorar la iluminación, el skybox marcaba mucho tonalidades amarillas
Archivos Adjuntos
Comentarios
Comentarios generales o extras de la investigación.
Elaboró
Leo Espinoza Erick Jurado
Elaborado el 02 de Julio de 2026