Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

¿Obtener Rotacion de un Vector3 direccion?

Iniciado por ftejada, Julio 23, 2017, 02:44:39 PM

Tema anterior - Siguiente tema
Hola a todos!!!
 
una pregunta rapida que no he sabido encontrar una respuesta, ni como hacerlo.
 
 
 
¿Existe la manera de obtener la rotacion que tiene un Vector3 en el espacio Global 3d? No se si se entiende a lo que me refiero, pero es que no se como explicarlo.
 
Por ejemplo... un Vector3 (1,0,0) sabemos que estaría orientado/rotado hacia la Dch en el mundo. Pero si yo tengo un Vector3 de direccion
 

Vector3 vecDir = objA.transform.position - objB.tranform.position;

 
como podría yo saber la rotación que tiene vecDir en el espacio 3d global??? Necesito almacenar esa "rotacion" que tendría ese Vector3 en un Quaternion para hacer unos calculos para otras cosas... y mirando en la Api de Unity no he visto alguna funcion que haga esto. 
 
 
 
Siento no poder haberlo explicado mejor , espero que se entienda a qué me refiero.
 
 
 
Gracias por la ayuda, Un saludo.
 
 

Buenas,diria que  dentro del transform tienes lo que buscas, "TransformDirection()"; , tambien tienes variantes como point/Inverse, por si el vector es un punto o una direcion, y por si quieres cambiar a local o a global.
 
Tambien lo tienes con matrices con , worldToLocalMatrix o localToWorldMatrix,dentro del transform tambien ofcourse.
 
 
 
Saludos!

Gracias por la respuesta pero creo que eso no resuelve lo que necesito.
 
 
 
No utilizo transform´s. Solo Vectores 3d y de esa "dirección del Vector3" me gustaria poder encontrar la manera de obtener la rotación Global a donde apunta esa "dirección y sentido" del Vector3.
 
La verdad es que no le veo una forma facil de conseguirlo, porque me parece que no hay funciones en la Api de Unity que hagan ese trabajo. Y tampoco soy matematico para poder ser capaz de encontrar una manera de hacerlo.
 
 
 
¿Alguna idea de como podría hacerse?
 
 
 
Saludos


Cita de: pioj date=1500885685No te sirve el Vector3.Distance?
   


Gracias pioj por contestar.
 
Vector3.Distance te da la distancia entre dos vectores... No termino de ver la idea que me quieres transmitir. Lo que yo necesito es de un Vector3 de dirección, sacar la rotacion que tendría esa direccion y sentido a donde está apuntando ese vector, en el espacio global.
 
Suponiendo que ese vector de direccion sea (2, 0, 0). Sabemos que si partimos desde la posicion (0,0,0), esa direccion y sentido del Vector3 antes mencionado, tendría una rotacion de 90º en el eje Y apuntando hacia la derecha del mundo.
 
¿Pero como puedo yo saber la rotación exacta a la que apunta la direccion y sentido de un vector3 más complejo como por ejemplo (3.58f, 0.5f, 9.5f)?
 
¿No existe alguna función que devuelva un quaternion y se le pase como parametro el Vector3 de turno, y haga esos calculos? Si no existe, ¿Alguna idea de como poder hacerlo?
 
 
 
Saludos

Lo que buscas son los cosenos directores, no se si unity implementa algun metodo.

Hola,
 
Para obtener el angulo y:
 
 
 
Mathf.Atan2(myVector.x, myVector.z);
 
Devuelve valor en radianes,
 
Si quieres en grados divide el resultado por:
 
Mathf.Deg2Rad;

mhh quiza te sirva asi
 

Quaternion.FromToRotation (Vector3.forward, dir);

 
 

Gracias por las respuestas.
 
Voy a probar e indagar en estos días sobre lo que me habeis sugerido a ver si me sirve.
 
 
 
Un saludo

Bueno para cerrar este asunto he estado probando y la manera más simple y que funciona a la perfeccion es la que comentó @hammer.
 
 
 
Gracias a todos por la ayuda.

Etiquetas: