2016-12-25 112 views
7

我正在嘗試使用給定的6個面作爲一個面可移動的立方體網絡作爲面。是這樣的:使用three.js摺疊矩形以形成立方體

enter image description here

在上述圖像中,有6個面,一個面(藍色)的可移動的。

人們可以沿着它們的邊緣一起旋轉它們以形成「網」。 一旦他們認爲他們完成了,他們可以按下一個「摺疊」按鈕 - 所有的邊都會變成90度來創建立方體(或者如果他沒有在適當的位置加入藍色臉部,則可能不是立方體)。

按下「摺疊」按鈕後,下面是中間狀態。

enter image description here

面折疊後,它應該是這樣的:

enter image description here

相應的動畫這裏給出:http://www.mathematikus.de/10/

(不知該鏈接不工作在Mac)

我不知道該怎麼做。任何幫助表示讚賞。

感謝您提前。

+0

8?立方體有6個面... :-) – 6502

回答

8

您可以使用對象的層次結構。

var obj1 = new THREE.Mesh(...); 
var obj2 = new THREE.Mesh(...); 
obj1.add(obj2); 

有一個很好的example它。

所以,使用這個原理,我在你的問題中給出了摺疊立方體的動畫。當然,這不是最終的解決方案,這只是一個起點。

jsfiddle例如

UPD:我已經更新了小提琴。您可以點擊PressMe按鈕開始摺疊。使用Tween.js製作的動畫(請參閱foldTheCube()函數)

+0

非常感謝您的回答。我怎樣才能使這隻藍色的可移動/可拖動,一旦立方體形成,它不應該再動畫。 – Artiga

+1

請將答案標記爲已接受,如果它符合您的需求)關於移動/拖動對象,有[draggable cubes]的一個很好的例子(https://threejs.org/examples/webgl_interactive_draggablecubes.html) – prisoner849

+0

是的,我絕對會。 :)。我試着把DragControls.js庫和在side5上添加它的事件,但它的工作。 – Artiga