Я хочу изменить координату моего кватерниона на координаты вращения - PullRequest
2 голосов
/ 09 мая 2019

Я получаю координату кватернионов [x,y,z,w] от датчика.Я хочу изменить эту координату, чтобы я мог повернуть сцену приложения React VR для поворота этой сцены.Мне нужно изменить координату кватернионов на координату вращения.Но вращение здесь не является плавным, поскольку плавное вращение «координату кватерниона» необходимо преобразовать в вращение.

import {VRInstance} from 'react-vr-web';
import scene from 'three.js';
//let us assume x,y,z,w are my coordinate in quaternion formate which I //am taking through web socket
function init(bundle, parent, options) 
{
 //scene=new scene()//three.js

  const vr = new VRInstance(bundle, 'musical_exp_react_vr_pusher', 
 parent, {
    // Add custom options here
    ...options,
  });
  vr.render = function() {
  //but its not working as I took the quaternion coordiate
 //smoothness is not there
 vr.scene.rotationx=x;
 vr.scene.rotationx=y;
 vr.scene.rotationx=z;

 //it is also not working
 vr.scene.quaternion.x=x;
 vr.scene.quaternion.y=y;
 vr.scene.quaternion.z=z;

  // Any custom behavior you want to perform on each frame goes here
  };
  // Begin the animation loop
  vr.start();
  return vr;
 }

 window.ReactVR = {init};

Основная проблема заключается в том, что мне нужно найти координату оси вращения из координаты кватерниона.

1 Ответ

0 голосов
/ 11 мая 2019

Кватернионы и Углы Эйлера являются двумя отдельными понятиями и не могут быть преобразованы с помощью простого присваивания.В зависимости от типа углов Эйлера, которые использует ваша структура, алгоритм преобразования может быть немного сложным .

Three.js реализует это преобразование в Euler.setFromQuaternion () method.

Однако, глядя на документацию three.js, кажется, что назначение кватерниона должно работать так, как вы намереваетесь - вам просто нужно назначить все 4 элемента кватерниона (в вашем коде отсутствует элемент W).

...