2013-03-05 93 views
0

我是Three.js的新手。我的需要是使用Three.js的JSONLoader從JSON文件中獲取「DbgName」:「mtl」。 這裏我的樣品three.js所的JSON文件解析JSON中的字符串three.js

{"metadata" : 
{"formatVersion" : 3.1, 
"sourceFile" : "json", 
"generatedBy" : "json", 
"vertices" : 20, 
"faces" : 81, 
"normals" : 0, 
"colors" : 0, 
"uvs" : 0, 
"materials" : 4}, 

"scale" : 1.000000, 
"materials": [{ 
"DbgColor" : 15658734, 
"DbgIndex" : 0, 
"DbgName" : "mtl1", 
"colorAmbient" : [0.0, 0.0, 0.0], 
"colorDiffuse" : [0.64, 0.64, 0.64], 
"colorSpecular" : [0.165, 0.165, 0.165], 
"illumination" : 2, 
"opticalDensity" : 1.0, 
"specularCoef" : 154.901961, 
"transparency" : 1.0 
} 
]} 

可以在任何一個給一些建議,爲same..Thanks

+0

請您編輯您的帖子,檢查代碼的格式。這又是可怕的。 – RvdK 2013-03-08 16:45:51

回答

0

我通過這種方式得到了JSON文件材料名稱...

var loader = new THREE.JSONLoader(); 
loader.load(url,function(geometry,material){ 
....some code stuff........ 
var mName = materials.name; 
....some code stuff..... 
} 
+0

請不要添加「謝謝」作爲答案。一旦你有足夠的[聲譽](http://stackoverflow.com/faq#reputation),你將能夠[投票問題和答案](http://stackoverflow.com/privileges/vote-up),你發現有幫助。 – Linuxios 2013-03-21 14:57:49

0

THREE.JSONLoader不是一個普通的JSON裝載機:它加載網格和材料從具有JSON文件具體屬性。

對於加載你自己的東西,你仍然可以採取(複製粘貼)裝載機的AJAX請求部分,這是在這裏:https://github.com/mrdoob/three.js/blob/r56/src/loaders/JSONLoader.js#L29

注意,一旦你已經得到的文件中的文本,它要解析一個JS對象trivially accomplished與標準的瀏覽器提供的功能:var mystuff = JSON.parse(fileTextContents)

+0

{ 「元數據」:{ 「formatVersion」:三, 「的資源文件」: 「三」, 「generatedBy」: 「三」, 「頂點」:6, 「面對」:10, 「法線「:0, 」色彩「:0, 」的UV「:0, 」材料「:1 }, 」刻度「:1.000000, 」材料「:[{」 DbgColor」:15658734, 「DbgIndex」:0, 「DbgName」: 「Meterial1」 \t}] ..............,}這是我的示例JSON文件。我想用THREE.js的JSONLoader閱讀「DbgName」。 – user2089677 2013-03-06 11:07:47

+0

你應該說,首先將'DbgName'放入相應材質的'name'屬性([source](https://github.com/mrdoob/three.js/blob/r56/src/loaders /Loader.js#L435)) – Tapio 2013-03-06 11:35:53