Programación de Gráficos - graficos en 3d

 
Vista:

graficos en 3d

Publicado por d0kt0r (1 intervención) el 23/09/2000 00:00:00
Estoy intentando hacer un pequeño motor 3d propio
pero tengo una duda conceptual: como distinguir un poligono si esta de cara o de espaldas. Para resolver esto he inventado un sistema que no creo que sea el mas adequado pero es lo que se me ha ocurrido: poner numeros a los vertices: 1,2,3,4 en sentido horario. si estan en sentido horario quiere decir que el poligono esta de cara por lo tanto lo coloreo; si de lo contrario al contar los vertices sigo un sentido antihorario 4,3,2,1 significa que esta de espaldas y por eso no lo coloreo (dibujarlo en un papel pa entenderlo). Si conoceis algun otro metodo o web donde pueda encontrar especificamente sobre el tema de graficos 3d avisadme GRACIAS
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:graficos en 3d

Publicado por Alejandro Castagnolo Martinez (3 intervenciones) el 23/09/2000 00:00:00
Lo primero que tienes que hacer es definir un vector normal al polígono, de forma
que si este vector apunta hacia ti el polígono se ve y si no no.
Lo segundo es calcular un vector que vaya desde el centro de proyección hasta el
centro del polígono. (Normalmente el centro de proyección suele ser 0,0,0 así que
con las coordenadas del centro del polígono tienes el vector. Todo esto después de
haber transformado las coordenadas según la cámara claro).
Y por fin lo último que tienes que hacer es el producto escalar de estos dos vecotres,
es decir si v1 = x1,y1,z1 v2 = x2,y2,z2 tienes que calcular:
x1*x2 + y1*y2 + z1*z2
Si este valor es negativo entonces el polígono se ve sino no. La explicación es que
el producto escalar depende directamente del coseno del ángulo que formen los
vectores. Un coseno es negativo si el angulo pertenece a (90,270) grados. Pintalo
y ya verás como tiene su razón lógica.

Yo también hice un motorcillo 3D hace ya algún tiempo así que cualquier pregunta
que tengas no dudes en hacermela mi dirección es
[email protected]
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:graficos en 3d

Publicado por intentandolo (3 intervenciones) el 24/09/2000 00:00:00
alguien podria decirme la formula de proyeccion 2d para poder usar z positivo(1,2,3...) y znegativo(-1,-2,-3...) de forma que con z negativo aumente el atamaño.
Yo uso la formula:
-pto2d.x:=round(form1.ClientWidth/2)+round(punto.x/punto.z);
-pto2d.y:=round(form1.ClientHeight/2)-round(punto.y/punto.z);
Pero con esta formula al usar z negativo, los vertices se invierten y el objeto se hace mas pequeño.
Grcacias de antemano.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:graficos en 3d

Publicado por Alejandro (3 intervenciones) el 26/09/2000 00:00:00
No entiendo bien tu pregunta pero si lo que quieres hacer es un cambio de sistema
de cooredenadas, en este caso un reflejo sobre el eje Z lo que tienes que hacer es
dividir por (-punto.z).
No se si es esto lo que preguntabas. Si no es asi te ruego repitas la pregunta.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:graficos en 3d

Publicado por intentandolo (3 intervenciones) el 26/09/2000 00:00:00
Si, era + o - lo que preguntaba.
El caso es que con la formula de mi anterior pregunta al usar valores negativos para z, el programa lo que hace es invertir los puntos del objeto en vez de aumentar el tamaño del objeto que es lo que creo que realmente deberia pasar.

Por eso quiero saber si la formula anteriormente escrita era correcta o no.
Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:graficos en 3d

Publicado por alejandro (3 intervenciones) el 27/09/2000 00:00:00
Bueno, formulas de proyeccion hay miles, de todo tipo.
La que tu utilizas es la que se usa en la practica (por lo menos es la que uso yo),
aunque la matematicamente correcta es:

x2d = offx + x3d*(D/(D-z3d))
y2d = offy - y3d*(D/(D-z3d))

Donde D es la distancia del punto de perspectiva al centro de proyeccion. Pero no te
aconsejo que uses esta fórmula, mejor sigue con la tuya.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:graficos en 3d

Publicado por XcUiDi (4 intervenciones) el 18/11/2000 00:00:00
Oigan, amigos, donde puedo empezar a leer para poder entender todo lo que dicen ?

Gracias por su cooperacion.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:graficos en 3d

Publicado por HELEN (1 intervención) el 14/03/2001 03:09:07
Hola amigo;soy una chica que recien se inicia en el interesante mundo del 3D STUDIO y me gustaria saber como puedo darle a un logotipo que estoy diseñando el "efecto de estar aventandole un cubetazo de agua" sobre un texto ,para dar la impresion al observador de que el texto esta siendo baldeado por el agua.

Me gustaria saber sus sugerencias.
Gracias.

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar