我有一種錯誤,當我使用OBJMTLLoader而不是OBJLoader時,我無法解釋。 我的obj文件包含由不同子網格中的兩個加載器加載的組。OBLMTLLoader網格名稱爲空
我有兩個情況下,兒童的場景具有相同數量的孩子的THREE.Object3D的:1837年 然而,當我顯示JS控制檯該對象和我檢查它:
- 爲OBJLoader加載的第一個孩子已經得到了id 12,id爲每個新網格增加一個,並用id 1848完成。這是有道理的。
- 與OBJMTLLoader相同的對象加載,一些id丟失,實際上第一個孩子有13作爲id和最後的孩子有一個id等於5521.例如,這裏是5個第一個孩子的ID:13 16 19 22 25
這可能不是問題,但這裏是故事的棘手標準,以我的項目爲目標,我使用raycaster來改變選定網格的顏色(通過單擊它)。我還顯示所選網格的名稱:
- 使用OBJLoader時,我使用raycaster修改網格的顏色並顯示名稱沒有任何問題。
- 但是使用OBJMTLLoader,我可以毫無困難地更改所選網格的顏色,但是網格的名稱是沒有任何字符的。
有趣的是,每個網格都有一個很好的名稱在兩種情況下導入。
唯一令人奇怪的是,當我在OBJLoader的兩種情況下顯示所選網格的ID時,我可以在js控制檯的對象顯示中找到此網格列表中的這個id,並且名稱與OBJMTLLoader相對應我得到的id在Object3D中是無處可尋的...
有沒有人知道問題出在哪裏?
非常感謝!
UPDATE:
我已經找到了解決方案的一部分,但仍然有一些奇怪的事情,這裏是當我THREE.OBJMTLLoader導入我的3D模型的結構的一個例子:
THREE.Group
[...]
children : Array[1837]
0 : THREE.Object3D
[...]
name : "the name of the part"
children : Array[2]
0: THREE.Mesh
name : ""
children : Array[0]
[...]
1: THREE.Mesh
[...]
[...]
1 : THREE.Object3D
[...]
實際上,raycaster計算與THREE.MESH的交點,並且名稱是從該網格的層次n-1存儲的。這就是爲什麼我嘗試展示它時沒有名字的原因。 但是爲什麼OBJLoader我的等級n-1不存在相同的模型3D負載?實際上與OBJLoader對象的結構是:
THREE.Group
[...]
children : Array[1837]
0 : THREE.Mesh
[...]
name : "the name of the part"
children : Array[0]
[...]
1 : THREE.Mesh
[...]
所以你說你有一個在攪拌機,最大等創建的網格,然後當你導入一些有身份證和一些不? – Careen
我已更新我的問題。 我認爲我的網格來自攪拌機,它是一個.mtl文件中帶紋理存儲的.obj文件。 id的問題來自這樣一個事實,即我在我的文章中發佈的更新中所解釋的,我沒有在我的3D對象的結構中看到由OBJMTLLoader創建的新關卡。 –
我認爲這是如何創建obj,我認爲網格的子網格沒有名稱,除非您手動指定一個名稱,比如說我有一個字符網格,那麼網格就像所有頂點面的容器等,而不是編輯中的im模式並開始在網格中添加其他對象,這些im確定將是無名的... – Careen