Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Escenario de videojuego, ¿Triángulos o cuadrados?

Iniciado por Totemalf, 15 de Septiembre de 2012, 06:12:51 PM

« anterior - próximo »

Totemalf

Muy buenas again,

como soy un poco torpe (también llamado humilde y eterno principante) y me cuesta terminar de coger algunos conceptos, he decidido volver a preguntar algo que me respondieron alguna vez por aquí, no recuerdo en que hilo, si mio o ajeno, así que abro este completamente específico para el tema.

En su día me cometábais que es mejor modelar en triángulos ya que es con lo que, nativamente, trabaja una tarje gráfica. Esta información ha seguido repiqueteando en mi cabeza y me veo en la necesidad de expresar mis dudas. Dudas que han vuelto  a mí aumentadas al leer un párrafo en el blog de un amigo.

El parrafo es el siguiente:
[[iPolígono: formado por varios puntos y segmentos que los unen en un plano. Hay poligonos de 3 o más lados pero lo ideal es trabajar con Quads o polígonos de 4 lados por su estabilidad, aunque siempre sabiendo que casi todos los motores actuales trabajan con triangulos (y que por tanto convertiran cada quad en 2 triangulos). [/i]

Entonces, lo que repiquetea en mi cabeza es lo siguiente:
¿Es mejor modelar en tris?, en teoría si, ya que es con lo que nativamente trabajan las tarjetas gráficas, o los motores, imagino que viene a ser lo mismo, los motores deberán compilar la información en tris ¿o estoy diciendo una barbaridad?
El caso es que la DUDA con mayúsculas sería¿ qué es mejor, tener un escenario con 250.000 cuadrados, o uno totalmente idéntico con 500.000 triángulos?, o ¿da igual?
El caso es que si hacemos el de 250.000 cuadrados, el motor lo convertirá finalmente en 500.000 triángulos, y será lo mismo que haberlo hecho nosotros directamente en triángulos, pero habiendo hecho trabajar al motor, ¿perdiendo eficiencia?
Entonces, un escenario con el doble de polígonos siendo estos tris en vez de quads, ¿sería más eficiente?

Al leer el artículo pensé: " Entonces si yo hago la escena en quads, el propio motor va a partirlos creando tris que es lo que realmente entiende, así que de todos modos va a duplicar los polígonos, mejor sería partirlos yo de antemano, para evitar al motor tener que hacerlo, ya que imagino que gastará más recursos".
Por otra parte, creo haber leído también,  que para animación es mejor usar quads, ya que se deforman mejor. Esto aún no lo entiendo del todo, ya que se supone que el motor finalmente lo convertirá en un tri, antes de que el jugador vea la animación.
¿por qué se dice que un polígono de cuatro lados es más estable?

Sin nada más, gracias de antemano.
Un saludo.
AS.

Totemalf

Como normalmente lo que suelo hacer es preguntar, para variar hoy voy a ofrecer una respuesta, aunque no es mía, es la de un buen amigo, Javier Arche (http://creadorvj.blogspot.com.es/) , que me ha tratado de resolver mis dudas y creo que lo ha conseguido. Aquí va su respuesta:

Las tarjetas gráficas solo entienden triangulos, por eso hagas poligonos de 4 de 5 o de 20 lados, el software 3D, motor de juegos o lo que sea, los va a triangular. El problema de esto es que lo hace como buenamente puede y a veces generá errores en la superficie con eso del suavizado. Por esto conviene evitar poligonos de más de 4 lados, por que dividir un poligono de 5 en triangulos se puede hacer de muchas formas, pero uno de 4, solo de dos (las diagonales) y si da problemas basta con cambiar la division de una diagonal a otra y se soluciona. Ahora bien, en los tiempos que estamos los modelos suelen tener muchos poligonos y casi siempre se pasan por software de tipo Zbrush donde hay que subdividir la superficie para sacar texturas avanzadas. Estos programas trabajan mejor con quads por que les resulta muy facil convertir un cuadrado en 4 pero hacen feos al convertir un triangulo por que tratan de sacar de el, los mismos 4 quads que con un cuadrado.

En resumen, que lo mejor es usar Quads por muchos motivos. Por que al mapear si tienes triangulos te va a costar más, al animar la malla se deforma peor, al texturizar hay menos deformación, en zbrush tendras problemas, y por que tu mismo si modelas te vas a ir naturalmente al cuadrado por que te será más sencillo. Sobretodo si tienes un modelo de miles de poligonos.

¿Por que se habla de triangulos entonces?

Por que como ya te he dicho el ordenador convierte los quads en 2 triangulos unidos y su rendimiento lo suele medir en triangulos. Por eso verás en las imagenes de portfolio que pone "modelo tal, tiene 1500 tris." Por que aunque tu lo hagas con polis de 4 lados el ordenador los divide. Si encuentras errores en la superficie por ello, siempre hay una opcion de mostrar las aristas ocultas (y así ves como te ha partido los cuadrados en triangulos el ordenador" y otra para rotar esa arista y que parta el quad por la otra diagonal para arreglarlo. Esto te puede pasar en un modelo con muchos poligonos en 1 o 2, asi que es mucho mas facil.

No se si me explico. Basicamente se trata de que dejes que tu hagas cuadrados y dejes que tu ordenador se encargue de los triangulos que los forman. Si en algun punto concreto lo hace mal, corrigelo a mano rotando la diagonal, así de facil.

Seguramente los triangulos se usaran más en otros tiempos. Con los primeros virtua fighter o el chip super fx de supernintendo, pero ahora con los modelos tan chungos que se usan sería morir.

Ah (perdona por extenderme tanto) pero que quede claro que si estas modelando con quads y te queda algun triangulo o dos o 3... en puntos concretos que eres capaz de quitar, por que no puedes modelar de otro modo en ese punto del modelo, no pasa nada por eso, sobretodo si el modelo es definitivo y no va a pasar por zbrush o mudbox. El ordenador entiende el triangulo sin problemas. Ese poligono no lo divide y ya está.

En fin espero haberte aclarado la duda. Un saludo!

Hechelion

Bastante interesante, gracias por compartirlo.

Básicamente, lo que entiendo es que como humano es mejor usar los quad, y dejarle los tris a la máquina, viene a ser similar al concepto de usar lenguajes de programación de alto nivel para programar, por mucho que la máquina solo entienda 1 y 0.

RaTHSoDiC

Ahora que lo leo me lié un poco con la respuesta  :P

Basicamente es mejor y más sencillo usar Quads. El motor de juegos que uses no va a consumir más recursos por convertir esos quads a triangulos (ya lo hace el software de modelado).

Si te queda algun triangulo por algun lado no pasa, sobretodo si es un modelo final.
Blog "Quiero ser creador de juegos" con info sobre libros y cursos.
http://creadorvj.blogspot.com

Gallo

Eso que dices que hace el "ordenador" no es lo normal, lo que se por experiencia es que el modelador trabaja con quads por los motivos que has mencionado de comodiad, skinning, mapeo, etc.. es mas limpio con quads. Ahora bien, una vez acabado ese modelo con quads, antes de que ese modelo toque un motor suele haber 1 paso de que convierte esos quads en triangulos, pero no por parte de la gráfica de forma "automatica" si no que se hace de forma manual a la hora de exportarlo del programa de modelado a un .obj, .fbx o lo que sea que use tu motor. Este paso no es que sea obligatorio ni standard ni nada esque es lo habitual, es lo que la mayoria de motores van a esperar  i te van a forzar a hacer por que precisamente la gráfica va a dibujar triangulos igualmente, así que para que enviarle otra cosa?

Y un poco fuera de tu duda, otro paso que algunos motores pueden hacer si quieres es "optimizar" el modelo con algún algoritmo que reduce drásticamente la cantidad de triangulos y  "mueve" y remapea las UV de los vertices para que se vea como el original. Esto se suele hacer con modelos de assets de decoración que no van a estar mucho en primer plano o de los que quieres hacer modelos con menos detalle para cuando estén lejos y que se reemplace dependiendo de la distancia de la camara, Unreal Engine tiene una herramienta muy buena que hace esto mismo, puedes verlo aquí:

http://udn.epicgames.com/Three/MeshSimplificationTool.html

RaTHSoDiC

Bueno eso cierto. Lo "hace el ordenador" al exportar el modelo. Lo que quería decir es que no necesitas triangular los quads manualmente.

Realmente hay que tener en cuenta muchas cosas para exportar modelos a segun que motor, pero eso es otra historia. Habría que hablar de formatos, si se exportan tambien animacion y huesos... etc. 

Supongo que todo se aprende con la practica.  :-[
Blog "Quiero ser creador de juegos" con info sobre libros y cursos.
http://creadorvj.blogspot.com






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.