locked
C# Librerias DirectX coordenadas de la mano izquierda RRS feed

  • Pregunta

  • Hola,

    Tengo una duda acerca de las librerias directX. He detectado que las librerias directx trabajan con los sistemas de referencia de la mano izquierda (sistemas levógiros) pero yo utilizao sistemas dextrogiros, en robotico se emplea este tipo de sistemas. La cosa es que las matrices que calculo ahora no concuerdan con las que necesito que salgan y creo que si pudiera cambiar el sentido de interpretación del sistema conseguiria resolverlo.

    He encontrado una documentación acerca de este tema y comentan lo siguiente:

    "La DIRECT3D emplea el sistema de coordenadas de la mano izquierda. Si se desea llevarlo al sistema de la mano derecha deben seguirse estos dos pasos:

    1. Invertir la secuencia de toma de los vértices, ya sean a favor o en contra de las manecillas del reloj. Para esto el dispositivo permite por medio de un parámetro indicar qué sentido tomar.
    2. Transponer el orden de los elementos de la matriz del mundo para los elementos (_31, _32, _33 y _34).  "

    No encuentro que parametro indica el sentido al dispositivo el sentido a tomar.

    Un saludo

    Gracias

    PD. Si no es este el foro, decirme y lo cambio a donde sea

    viernes, 27 de abril de 2012 13:57

Respuestas

  • Lol... vaya preguntita... 

    si no recuerdo mal yo siempre que he tenido que hacer un cambio así... he terminado cambiando el orden en la multiplicacion de las matrices...

    es decir donde antes era Traslacion * Rotacion * Escala en el otro sistema es Escala * Rotacion * Traslacion...

    espero que te sirva de algo... 

    Un saludo.


    Tambien conocido como Blau www.youtube.com/malditis www.charcostudios.com

    • Marcado como respuesta IvanLoL miércoles, 6 de junio de 2012 17:19
    sábado, 28 de abril de 2012 21:51
  • Buenas,

    Hace el transpose de la matrix supongo que sabes hacerlo.

    Para cambiar el sentido (punto 1), debes modificar el state CullMode, según la versión de DirectX que uses, DX 9 ó 10/11 se hace de una forma u otra.

    Saludos


    MVP XNA/DirectX

    Blog

    XNACommunity

    • Marcado como respuesta IvanLoL miércoles, 6 de junio de 2012 17:19
    miércoles, 6 de junio de 2012 10:54
    Moderador

Todas las respuestas

  • Lol... vaya preguntita... 

    si no recuerdo mal yo siempre que he tenido que hacer un cambio así... he terminado cambiando el orden en la multiplicacion de las matrices...

    es decir donde antes era Traslacion * Rotacion * Escala en el otro sistema es Escala * Rotacion * Traslacion...

    espero que te sirva de algo... 

    Un saludo.


    Tambien conocido como Blau www.youtube.com/malditis www.charcostudios.com

    • Marcado como respuesta IvanLoL miércoles, 6 de junio de 2012 17:19
    sábado, 28 de abril de 2012 21:51
  • Buenas,

    Hace el transpose de la matrix supongo que sabes hacerlo.

    Para cambiar el sentido (punto 1), debes modificar el state CullMode, según la versión de DirectX que uses, DX 9 ó 10/11 se hace de una forma u otra.

    Saludos


    MVP XNA/DirectX

    Blog

    XNACommunity

    • Marcado como respuesta IvanLoL miércoles, 6 de junio de 2012 17:19
    miércoles, 6 de junio de 2012 10:54
    Moderador
  • perdón por no responder antes y gracias por vuestros comentarios. Más o menos utilizo las funciones que da directX.

    Si no recuerdo mal, porque no tengo el código a mano, hago lo siguiente:

    1. Cuando configuro el panel de renderizado tengo una función que se ejecuta cuando el dispositivo directx ha sido inicializado. Aquí genero e inicializo elemento para renderizar la escena (buffer de vertices,...)  Es en este método donde cambio el estado CullMode a Cloclwise. 
    2.  La otra cosa que modifique fue en la clase donde todo lo referente a la cámara y aquí varié las matrices de vista y proyección con las funciones que da directX. Si no recuerdo mal eran.
    renderDevice.Transform.View = Matrix.LookAtRH(posicon camara,pto a donde mira,vector arriba)
    
    renderDevice.Transform.Projection = Matrix.PerpectiveForRh(no me acuerdo)
     

    A mi me vale con esto, veo las cosas más o menos bien. Ahora, la cosa es que tengo que hacer cálculos con matrices y las que utiliza el visual studio son las transpuestas a las necesito para mis cálculos, pero bueno eso es más facil de manejar que la historieta esta de los sistemas de la mano izquierda con las que tenemos que lidiar.

    Lo dicho gracias por contestar

    Saludos


    Te contestan a la duda....

    miércoles, 6 de junio de 2012 17:19