Foros - Stratos

Programadores => Programación gráfica => Mensaje iniciado por: ElQueSeRompeElOrto en 02 de Diciembre de 2002, 05:34:07 AM

Título: Proyeccion 3D a 2D en D3D8
Publicado por: ElQueSeRompeElOrto en 02 de Diciembre de 2002, 05:34:07 AM
                                Hola ,soy nuevo en estos pagos de los foros de stratos ,por eso me presento ,soy "el que se rompe el Orto (o culo)" no es por joder o algo por el estilo ,pero a la ora de buscarme un Nick no encontre otro que me encaje mejor que este :D.

Bueno les cuento que tengo un problema en D3D8 para proyectar un punto 3D a 2D .Con la funcion de la D3DX para proyectar ,esta me realiza
una proyeccion en un sistema raro de ejes 2D de D3D8 en el cual el origen esta en el centro de la pantalla y no en la esquina superior izquierda de la misma, he buscado un poco pero en la doc. de la API pero
no encontre nada ,no lo se quizas me rompo tanto el te tuje , que ya no cordino bien el trafico de ondas cerebrales.

Bueno Un Saludo y si alguien sabe algo y contesta estare muy agradecido.                                
Título: Proyeccion 3D a 2D en D3D8
Publicado por: _Grey en 02 de Diciembre de 2002, 05:33:53 PM
                                No entiendo lo que quieres decir......  :(  

En un sistema 3D el origen esta en el CENTRO de la pantalla..... :I

con lo que esa funcion funciona bien ... nop?¿                                
Título: Proyeccion 3D a 2D en D3D8
Publicado por: ElQueSeRompeElOrto en 03 de Diciembre de 2002, 06:57:32 AM
                                Tratare de ser mas claro:

La funcion "D3DXvec3Project()" ,toma un punto 3D ,osea en el espacio,
y lo proyecta al espacio de la pantalla ó "screen cordinates",ahora bien,
las cordenadas que me devuelve esta funcion no son las convensionales, sino unas extrañas cuyo origen esta en el centro de la pantalla y no en la esquina superior.
Pongo un ejemplo: Si un punto proyectado aparece en el centro de la pantalla ,y si la resolucion es de 800x600 las cordenadas deberian ser
(X=400 ,Y=300) , pero la funcion "D3DXvec3Project()" me devuelve
(X=0 ,Y=0) , y si por otro punto aparece en la esquiena superior izquierda
las cordenadas deverian ser (X=0,Y=0), pero la funcion que mencione
me da por ejemplo (X=-2300 ,Y=1300) ,en definitiva otro sistema de cordenadas. bien si alguien sabe como convertir esas unidades o conoce
otra funcion y/o algoritmo les agradecere mucho.
Un saludo.                                
Título: Proyeccion 3D a 2D en D3D8
Publicado por: mac^threepixels en 11 de Diciembre de 2002, 03:06:04 AM
                                te falta la transformacion de viewport que es la que mapea de coordenas proyectivas a pantalla

xf = xo*resx/2 + resx/2
yf = xo*resy/2 + resy/2                                
Título: Proyeccion 3D a 2D en D3D8
Publicado por: mac^threepixels en 11 de Diciembre de 2002, 03:06:46 AM
                                yf = yo*resy/2 + resy/2

quiero decir                                
Título: Proyeccion 3D a 2D en D3D8
Publicado por: ElQueSeRompeElOrto en 13 de Diciembre de 2002, 07:22:54 AM
                                Gracias "mac^threepixels" ,espere la respuesta pero llego ReMilGraciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaassssssssssssssss. :D