2016-06-21 3 views
0

Например: Я добавил дочерний прямоугольник (2,3) к основному прямоугольнику (1).Сохранить ротацию ребенка. 3 .js

Похож на 3 прямоугольника один за другим.

parent.add(obj); 

Но если изменить вращение прямоугольника родителя (1) это приводит, что Чайлдс изменить положение и вращение (!) С предком.

img.example

Как изменить положение и сохранить вращение?

+0

Измените положение оси каждой плоскости на начало сетки, затем для достижения того, что вы хотите, чтобы повернуть плоскость 2. Самолет 1 будет вращать все его дети. – Erevald

+0

@ Vlad См. Http://stackoverflow.com/questions/29586422/three-js-ignore-parents-rotation. Также см. Http://stackoverflow.com/questions/15734049/invert-rotation-of-parent-in-the-child-so-the-child-appears-unrotated-in-the-wo/15735090#15735090. – WestLangley

ответ

0

Если вы добавляете объект в родительский элемент в качестве дочернего элемента и изменяете ротацию или позицию родителя, это влияет только на родителя.

Детский элемент имеет значения нетронутыми, но положение и вращение вычисляются в соответствии с родительским. Отношения между дочерним и родительским родителями никогда не сохраняются нигде. Это причина, по которой вы не можете сохранить дочернюю ротацию в отношении родителя родителя. Этого просто не существует.

Если вы хотите перемещаться только с родительским элементом, вы можете рассчитать положение или поворот детей в сторону родительского родителя и сохранить его где-нибудь. В каждом кадре анимации вы должны установить это положение и поворот для каждого ребенка. Это будет невозможно.

Для вычисления позиции ребенка по отношению к родительской сцене см how to: get the global/world position of a child object

но гораздо лучше подход

это поместить другие элементы в сцену отдельно, а не в качестве объекта ребенка ода. Если вам нужно выполнить некоторые операции с группой объектов, сохраните идентификаторы объектов за пределами и получите объект по идентификатору в качестве ссылки.

scene.getObjectById(4, true); 
Смежные вопросы