2015-06-20 3 views
0

Мне нужно повернуть и перевести объекты. Я могу сделать оба, но после того, как вращающаяся ориентация потеряна - объекты перемещаются в ориентации, с которой они сталкиваются.Вращение и перевод объектов

 if(keyboard.pressed("up")) 
      objects[movementControls.translate].translateX(1); 
     if(keyboard.pressed("down")) 
      objects[movementControls.translate].translateX(-1); 
     if(keyboard.pressed("left")) 
      objects[movementControls.translate].translateZ(-1); 
     if(keyboard.pressed("right")) 
      objects[movementControls.translate].translateZ(1); 
     if(keyboard.pressed("x")) 
      objects[movementControls.rotate].rotation.x+=0.1; 
     if(keyboard.pressed("y")) 
      objects[movementControls.rotate].rotation.y+=0.1; 
     if(keyboard.pressed("z")) 
      objects[movementControls.rotate].rotation.z+=0.1; 

есть способ поворота только объекта, а не оси?

+0

Все вращения и трансляции операции применяются вокруг начала координат (0,0,0). Если вы хотите сохранить перевод при вращении, вам нужно сохранить текущую позицию объекта, сначала перенести объект на (0,0,0), повернуть, а затем перевести назад. Возможно, стоит посмотреть на [график сцены] (https://en.wikipedia.org/?title=Scene_graph) для управления сложными объектами и сценами - один для WebGL - [SceneJS] (http://scenejs.org/). –

ответ

0

Добавьте свой объект в другой родительский объект с parent.add(yourobject);. Затем переместите родительский элемент, поверните его.

0

Если я правильно понимаю вашу проблему, то вам нужно использовать position.applyAxisAngle вместо rotation: http://jsfiddle.net/my1bqtv8/

Смежные вопросы