簡體   English   中英

如何將多個Blender JSON模型合並到Three.js Object3D對象中?

[英]How do I merge multiple Blender JSON models into a Three.js Object3D object?

如何將多個Blender JSON模型合並到Three.js Object3D對象中? 據我所知,谷歌沒有希望。

如果將它們合並到Blender端,然后作為一個整體導出,該怎么辦?

在Three.js中,您可以合並幾何形狀,如果它們相同,也可以合並材料,但是如果您沒有相同的幾何形狀並且具有多種材料,那么您就不走運了...

我在同一個確切的問題上苦苦掙扎,到目前為止,我在Three.js本身中沒有找到任何解決方案,因此嘗試在Blender端進行操作。 另一方面,對該引擎端進行硬編碼可能比使用Blender容易。 這是一件難以理解的軟件^^

您是否有理由需要導出的JSON對象恰好在一個Three.js Object3D中結束? 用一個父對象控制兩個對象就足夠了嗎?

您可以將這些對象作為子對象添加到一個空的父對象中,然后對其進行控制。 本要點演示了該過程。

var parent = new THREE.Object3D();
parent.add(blenderObj1);
parent.add(blenderObj2);
parent.scale.set(1,2,0.5);

編輯

這是演示您在評論中提到的場景的場景。 嘗試更改每邊的盒子數量(您會得到side ^ 2個盒子)並切換父對象。

快速附注:從16/4/25開始, Chrome中存在一個錯誤,錯誤可能導致紋理競爭狀況。 如果框看起來很有趣,則重新加載頁面可能會有所幫助。

要解決您的觀點:

父對象必須允許用戶添加和刪除父對象,

Object3D具有.add()和.remove()來執行此操作。

.add ( object, ... )

.remove ( object, ... )

,並且父級必須能夠整體旋轉。

這正是養育子女的方式。 只需執行以下操作:

parent.rotation.x = Math.PI / 2;

所有的孩子都與父母一起旋轉。 請注意,它們的旋轉就像世界在旋轉一樣(因為它們旋轉了)。 他們的個人變形未受影響。

不將孩子合並到單親中會產生鋸齒狀的動畫。

不是天生的。 假設您不打算減少繪制調用(請參見下文中的更多內容),則使用育兒對象不會顯着影響幀速率。 我在舊Macbook Air上進行的快速測試可以渲染1萬個對象,即使它開始運行時也不會崩潰。 無論您做什么,性能都會受到1萬個對象的影響。

將所有幾何圖形放在一起將減少繪制調用並加快處理速度。 請記住,所有幾何圖形相對於其他對象都是完全靜態的。 因此,假設您無法采用Scharnvirk建議的明顯,優雅且簡單得多的解決方案(在Blender中創建合並的對象,並將其作為單個對象),則可以通過在桌面上克隆幾何來節省少量帶寬。飛。 在這種情況下, three.js Geometry具有merge()函數

.merge ( geometry, matrix, materialIndexOffset )

Merge two geometries or geometry and geometry from object (using object's transform)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM