Noticias

¡Ayuda a la Comunidad GM, haz una donación!

Comunidad Game Maker

Bienvenid@ a la comunidad hispana de Game Maker. Nuestro objetivo es crear videojuegos y dar soporte en castellano de GM. Para mejorar nuestro servicio hemos implantado, como adicion al reglamento general, algunas normas especificas en los subforos más comunes. ¡No olvides informarte antes de participar!.

Autor Tema: [Resuelto] Orden triángulos en modelo 3D  (Leído 527 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado DarkKRuleR

en: Octubre 08, 2020, 02:17:31 am
¡Buenas! La duda, la duda... ¿Cómo lo hace la gente en el mundo y todos los juegos para no tener problemas con el orden de los triángulos en un modelo 3D? Imaginad un caso simple, una mesa. Si dibujo primero las patas y luego la tabla, se ve bien mirando desde arriba, pero si miro desde abajo... Al principio mis modelos eran simples pero... a la mínima complejidad, el modelo peta si lo miras desde otro lado. No se me ocurre nada que sea... viable. ¿Cómo le hacen en los demás juegos? Gracias.
« última modificación: Octubre 08, 2020, 09:11:22 pm por DarkKRuleR »

 


No Tienes Permisos Para Dar Puntos
point 0 Puntos

Este tema no recibió puntos.


Desconectado BssString

Respuesta #1 en: Octubre 08, 2020, 03:12:05 am
Hola DarkKRuleR

Mejor crear el objeto (como triángulo) en un programa externo (como Blender que es gratuito) e importar el .OBJ o no?
y la textura en .PNG

Saludos

 


Desconectado DarkKRuleR

Respuesta #2 en: Octubre 08, 2020, 06:11:12 pm
Hola DarkKRuleR

Mejor crear el objeto (como triángulo) en un programa externo (como Blender que es gratuito) e importar el .OBJ o no?
y la textura en .PNG

Saludos

Crearlo en un programa externo no cambiaría nada. El orden de los triángulos definidos en el modelo sería fijo y ocurriría ese problema al verlos desde el lado contrario, no?

 


Desconectado BssString

Respuesta #3 en: Octubre 08, 2020, 06:26:20 pm
Ahhhhh
Esa opción creo que es el Face Culling. Activar el Back-Face Culling hace que NO se dibuje la parte trasera del triángulo, quizás la has activado en algún momento y la tengas que desactivar.

GMS2
gpu_set_cullmode(cullmode)

GMS1.4
d3d_set_culling(enable)

Saludos

 


Desconectado DarkKRuleR

Respuesta #4 en: Octubre 08, 2020, 06:47:55 pm
Ya tengo el culling activado. Pondré un ejemplo gráfico, culpa mía.



Si, por ejemplo, defines el modelo de la mesa primero las patas y luego la tabla, al dibujar la tabla al final, se dibujará superpuesta a las patas. Bien. Pero al mirar la mesa desde abajo, la tabla se seguirá superponiendo a las patas, pues así fue definido el modelo en el orden de sus triángulos, y se verá mal. No depende del culling.

Cada modelo se verá mal de 300 formas distintas segun desde dónde lo mires, y no se me ocurre cómo arreglan esto los que hacen juegos...

 


Desconectado BssString

Respuesta #5 en: Octubre 08, 2020, 08:25:34 pm
Hola DarkKRuleR

Insisto en que puede ser problema del culling, a mi no me pasa... desactivalo y manda un screenshot de cómo te anda el dibujo.
Desactivar el back face culling hace que la figura dibuje las 2 caras, sin importar el orden de los vértices, así si miras la figura desde distintos ángulos, siempre se dibujará completa.

GMS 2
gpu_set_cullmode(cull_noculling)

GMS 1.4
d3d_set_culling(false)

Saludos

 


Desconectado DarkKRuleR

Respuesta #6 en: Octubre 08, 2020, 08:52:57 pm
Si te fijas, en la imagen, la cara inferior de la mesa es la frontal, y en las patas, sus caras también son frontales. Ocurre que si en el modelo está definida primero la cara FRONTAL de la pata, y luego la cara FRONTAL de la mesa, pero lo miras desde abajo, entonces la cara FRONTAL de la mesa se superpone a la cara FRONTAL de la pata

Con modelos que son parecidos a cuadrados o redondos no ocurre

Y sí, siempre tengo el culling activado

EDIT: d3d_set_zwriteenable lo resuelve automáticamente... siempre pensé que no servía para nada la función xDDD Resuelto!
« última modificación: Octubre 08, 2020, 09:05:52 pm por DarkKRuleR »

 


Desconectado Clamud

Respuesta #7 en: Octubre 10, 2020, 06:03:10 am
Es raro que tuvieras desactivado el buffer Z. ¿Se desactiva por usar el shader que una vez mencionaste?

Sí es así como lo resuelven otros juegos, o los gráficos 3D en general. Cada polígono se dibuja como un conjunto de pixeles y a cada pixel se le asigna un valor Z o profundidad. Cada nuevo pixel que se va a dibujar compara su valor Z con el valor del pixel ya dibujado. Si su profundidad es mayor se desecha, de lo contrario se dibuja.