2016-06-21 27 views
0

例如: 我添加了子矩形(2,3)到主矩形(1)。保存孩子的旋轉Three.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

但更好的方法

是其他元素放到場景分開,而不是作爲一個孩子OD對象。 如果您需要使用一組對象進行一些操作,請將對象標識符保存到外部,並通過標識符將對象作爲參考。

scene.getObjectById(4, true);