2017-05-05 79 views
0

我已經得到了來自瑪雅導出問題three.js所ThreeJS從瑪雅2017年出口造成的問題

我有瑪雅2017年Mac和從網站上下載ThreeJS上 - 最近。最初我下載了三版本和.min版本(似乎是修訂版本57),似乎工作正常。我用

mesh = new THREE.Mesh(geometry, new THREE.MeshFaceMaterial(materials)); 

我再閱讀本已經過時,所以我換用mesh = new.Three.Mesh (geometry, materials)。有了three.js,它完全失敗了 - 沒有模型渲染,也沒有產生錯誤。它呈現舞臺或其他什麼叫做threejs,但沒有別的。如果我在json加載器之外的腳本中生成模型,它們會正常渲染,但這並不是很有用。我需要json來加載和渲染。

我回去嘗試重新安裝三個導出。與此同時,我認爲版本已經改變,現在我無法從three.min.js或three.js中獲得任何喜悅來實例化模型。

我已經讀了幾個解決方案,並嘗試三角模型沒有影響 - 我仍然得到一個空的階段,並沒有產生錯誤。我創建了一個非常簡單的模型 - 只是一個三角形的立方體,並沒有得到任何喜悅。我查看了ThreeJS站點上JSON加載器的例子 - 但它們也沒有太大的幫助。 不訴諸逐步通過JSONLoader解析器看JSON有沒有人有任何明智的想法?我甚至不知道我在哪裏可以找到導出數據的正確格式。

+0

正因爲如此,沒有足夠的具體信息來幫助您。例如,當它「完全失敗」時,發生了什麼?有沒有錯誤信息?其他時候,你不能得到任何喜悅,你得到了什麼?同時嘗試縮小你的問題到一個案例。 – LarsH

回答

0

當我說我沒有得到任何快樂我的意思是沒有模型呈現,並且據我所知,沒有錯誤。我當然使用控制檯來檢查數組的內容,例如,據我所知,材料是正確的。 正如我所提到的,我儘可能簡單地模型化了一個立方體。 Json 很短,我可以發佈? 基本問題只是沒有模型顯示。我已經檢查了照明,以防它被隱藏,並將json外部生成的其他對象看作是否可以看到它,但我認爲它沒有被實例化並且不會拋出錯誤?

我認爲我的目標是從maya中獲得一個簡單的json文件,然後導入到threejs中並使用mesh(幾何體,材質)生成一個我可以操作的模型。

+0

如何處理一些代碼而不是回答你自己的問題:) – pailhead

+0

好的 - 如此新的用戶,論壇 - 錯了。我似乎無法刪除答案,並重新發布本應該有進一步評論的內容。我應該刪除問題並重新開始嗎? –

+0

您是否也可以建議顯示JSON的最佳位置,儘管它非常小,但仍然太大以至於無法發表評論? 我已經在這裏創建了一個JSFiddle的HTML等,http://jsfiddle.net/weymouthwookie/8wfcr1cr/ - 但那不是真的有幫助,因爲它明顯沒有在代碼的那一邊失敗。 –

0

我現在將添加一個答案,因爲我有一個。

基本問題是,MayJ的ThreeJS JSON導出似乎不起作用 - 導出不正確,ThreeJS不喜歡關於該輸出的內容 - 無論如何我都無法使其工作。 工作是使用轉換實用程序將OBJ文件更改爲JS文件,然後可以使用相同的代碼加載它。所以首先你從Maya輸出一個OBJ文件 - 很簡單。轉換實用程序可以在utils> converters> obj> convert_obj_three.py 的threes下載文件夾中找到。您必須在Mac上使用console - Im,並且最簡單的方法是將文件的副本放在工作文件夾中,然後一旦有導航到與控制檯中的所有文件正確的工作文件夾,使用這條線,

蟒蛇convert_obj_three.py -i myFile.obj -o myfile.js

這導致JS文件可以被加載到threeJS使用

var jsonLoader = new THREE。JSONLoader();

//load a resource 
jsonLoader.load(

//resource URL 
'myFile.js', 

//Function when resource is loaded 
function (geometry, materials) { 

    var material = materials[ 0 ]; 
    var object = new THREE.Mesh(geometry, material); 
    scene.add(object); 

} 
); 

接下來的問題是,東西不顯示 - 材料是黑色的。你只能看到它,如果前面有東西,或者你使用網格或其他東西。我花了一段時間才弄明白這一點,通過檢查控制檯看到材料正在加載,但它顯示爲黑色 - 無論我對照明採取了什麼,我認爲是問題。我發現添加一個材質的顏色魔術般地打開了它,因此添加了一行material.color.setHex(0xffffff);在scene.add(object)之前;線。