Управление камерой. Кватернионы.

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Re: Управление камерой. Кватернионы.

Сообщение Левш@ 16 окт 2012, 11:21

Попробуйте клампы (Mathf.Clamp), мне в свое время помогло, тоже камеру колбасило при разворотах.
_X.cor.R (Prologue)
Аватара пользователя
Левш@
Адепт
 
Сообщения: 4073
Зарегистрирован: 14 окт 2009, 16:34
Откуда: IBERIA
Skype: bars_levsha
  • Сайт

Re: Управление камерой. Кватернионы.

Сообщение Furgon 23 окт 2012, 19:03

Спасибо всем участвующим в обсуждении.
Решил задачу следующим образом.
Вначале ОДИН раз я выставляю позицию своей камеры в нужном положение, а также с помощью функции LookRotation задаю направление камеры, чтобы она смотрела на цель. Напомню, что rotator - это объект с которого мне необходимо "считать" поворот вокруг оси z камеры (вокруг оптической оси камеры), соответсвенно объект rotator вращается только вокруг своей оси z.
Синтаксис:
Используется csharp
distance = DISTANCE_MIN;
    transform.position = target.transform.position + distance * (target.transform.position.normalized);
    Vector3 relativePos = target.transform.position - transform.position;
    transform.rotation = Quaternion.LookRotation(relativePos) * rotator.transform.rotation;


Далее по FixedUpdate() выполняю:
Синтаксис:
Используется csharp
Quaternion displacement = Quaternion.FromToRotation(transform.InverseTransformDirection(lastGravity), Camera.mainCamera.transform.InverseTransformDirection(Physics.gravity));
     transform.rotation = transform.rotation * displacement;
   
     Quaternion rotate = Quaternion.AngleAxis(lastRotationZ - rotator.transform.rotation.eulerAngles.z, Vector3.forward);
     transform.rotation = transform.rotation * rotate;
   
     lastGravity = Physics.gravity;
     lastRotationZ = rotator.transform.rotation.eulerAngles.z;


displacement - служит для корректировки направления оптической оси камеры.
rotate - корректировка поворота камеры вокруг оптической оси.
Furgon
UNец
 
Сообщения: 13
Зарегистрирован: 27 авг 2012, 18:44

Re: Управление камерой. Кватернионы.

Сообщение Kann 23 окт 2012, 19:43

с камерой должно было работать таким образом Quaternion.LookRotation(relativePos,Vector3.up) или Quaternion.LookRotation(relativePos,camera.transform.up)
Kann
Старожил
 
Сообщения: 553
Зарегистрирован: 05 ноя 2009, 14:06

Re: Управление камерой. Кватернионы.

Сообщение Furgon 30 окт 2012, 18:37

Kann, спасибо огромное! Только сейчас оценил ценность сообщения твоего.
Furgon
UNец
 
Сообщения: 13
Зарегистрирован: 27 авг 2012, 18:44

Пред.

Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 29