locked
Dos preguntas sobre cargar un modelo 3D RRS feed

  • Pregunta

  • ¡Hola a todos!

    He hecho ya varias cosas en 2D y decidí adentrarme en la creación 3D, y tengo problemas con un modelo que creé a la hora de cargar.

    Veréis, cuando cargo mi modelo en 3D, predeterminadamente, se me carga en una rotación muy rara (si me podéis entender, el eje Z es positivo y el Y negativo). No se si es problema de la creación de mi modelo o a la hora de cargar, pero ¿qué puedo hacer para que mi modelo me cargue en una rotación como yo quiero? Para que me podáis entender mejor: cuando cargo mi modelo predeterminadamente me carga mirando hacia el suelo, y, a través de rotación (o si existe alguna otra forma hacerlo así) que me cargue mirando hacia otro lado.

    Otra pregunta que tengo es a la hora de "visualizar" mi modelo 3D; es decir, en vez de rotar el modelo o hacer zoom al modelo, quiero rotar la cámara respecto a ese modelo. Es decir, ¿cómo puedo manejar la cámara (zoom, rotación, etc.) en un modelo concretamente?

    Para esta última pregunta encontré este enlace, pero no estoy 100% seguro de que sea lo que quiero... http://social.msdn.microsoft.com/Forums/es-ES/xnaes/thread/09af01d6-ce29-4633-a842-18f06a31507a

    Muchas gracias a todos. Un saludo.

    • Editado V_Light lunes, 29 de octubre de 2012 5:53
    • Tipo cambiado V_Light lunes, 29 de octubre de 2012 5:55
    • Tipo cambiado V_Light lunes, 29 de octubre de 2012 5:56 El tipo de conversación realmente es pregunta, y me aparece como Debate general, y no me deja cambiarlo...
    domingo, 28 de octubre de 2012 19:57

Respuestas

  • 1) En las propiedades del modelo, puedes acceder a los parametros del processor... y ahí puedes cambiar la rotación inicial del modelo.

    2) Cambaindo la matrix de vista... http://msdn.microsoft.com/en-us/library/bb195650.aspx

              Matrix.CreateLookAt(posicionCamara, posicionModelo, VectorUp);  //  Up será normalmente Vector3.UnitY

    El zoom vendrá a ser la distancia entre la camara y el modelo, luego tu posicion de la camara si el modelo está en (0,0,0) 

            posicionCamara =Vector3.Transform( Vector3.UnitZ*Zoom, Matrix.CreateRotationY(elanguloquetedelagana));

            posicionModelo = Vector3.Zero;

            View = Matrix.CreateLookAt(posicionCamara, posicionModelo, Vector3.UnitY);

    Saludos.


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


    • Marcado como respuesta V_Light lunes, 29 de octubre de 2012 5:56
    • Editado CharcoStudios lunes, 29 de octubre de 2012 8:38
    domingo, 28 de octubre de 2012 22:09
  • Pues según se mire... jejeje... no sé si pillas la ironía... pero si no tocas el modelo... y le pones a la camara el Vector Up que correponda con la vertical del modelo... se verá bien... todo es cuestión del tener un punto de vista u otro... no tendrías que tocar nada salvo la configurar bien la cámara..

    Así que la verdad es que da un poco igual como lo hagas... como más cómodo te sea... lo importante es que lo muestres bien... lo del processor está para que  si tienes modelos con distintas verticales poder cambiarlo para "normalizar" o "standarizar" una pose de forma que en código siempre recibas los modelos con la misma orientación ... si lo haces con tu editor3d o con el processor.. da igual... lo importante es q luego facilita la vida a la hora de programar...



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

    • Marcado como respuesta V_Light lunes, 29 de octubre de 2012 5:56
    lunes, 29 de octubre de 2012 0:42

Todas las respuestas

  • 1) En las propiedades del modelo, puedes acceder a los parametros del processor... y ahí puedes cambiar la rotación inicial del modelo.

    2) Cambaindo la matrix de vista... http://msdn.microsoft.com/en-us/library/bb195650.aspx

              Matrix.CreateLookAt(posicionCamara, posicionModelo, VectorUp);  //  Up será normalmente Vector3.UnitY

    El zoom vendrá a ser la distancia entre la camara y el modelo, luego tu posicion de la camara si el modelo está en (0,0,0) 

            posicionCamara =Vector3.Transform( Vector3.UnitZ*Zoom, Matrix.CreateRotationY(elanguloquetedelagana));

            posicionModelo = Vector3.Zero;

            View = Matrix.CreateLookAt(posicionCamara, posicionModelo, Vector3.UnitY);

    Saludos.


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


    • Marcado como respuesta V_Light lunes, 29 de octubre de 2012 5:56
    • Editado CharcoStudios lunes, 29 de octubre de 2012 8:38
    domingo, 28 de octubre de 2012 22:09
  • ¡Hola!

    Muchas gracias por responder. Lo probaré y si me convence daré la pregunta por aprobada.

    Solo quiero saber bien una cosa. A la hora de hacer un juego quiero hacerlo bien, sin ninguna chapucería, que funcione todo lo mejor que se pueda de la manera más correcta. Para lo que yo quiero, ¿rotar un modelo desde el Processor es la mejor opción, o sería mejor editarlo desde mi editor 3D, etc.?

    Muchas gracias. ¡Un saludo!

    domingo, 28 de octubre de 2012 23:19
  • Pues según se mire... jejeje... no sé si pillas la ironía... pero si no tocas el modelo... y le pones a la camara el Vector Up que correponda con la vertical del modelo... se verá bien... todo es cuestión del tener un punto de vista u otro... no tendrías que tocar nada salvo la configurar bien la cámara..

    Así que la verdad es que da un poco igual como lo hagas... como más cómodo te sea... lo importante es que lo muestres bien... lo del processor está para que  si tienes modelos con distintas verticales poder cambiarlo para "normalizar" o "standarizar" una pose de forma que en código siempre recibas los modelos con la misma orientación ... si lo haces con tu editor3d o con el processor.. da igual... lo importante es q luego facilita la vida a la hora de programar...



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

    • Marcado como respuesta V_Light lunes, 29 de octubre de 2012 5:56
    lunes, 29 de octubre de 2012 0:42
  • Perfecto. Me convence la respuesta. Muchas gracias por ayudarme, en serio. En cuando sepa/pueda marcar como respuesta correcta lo hago, porque estoy teniendo problemas. ¡Un saludo!
    lunes, 29 de octubre de 2012 5:55