我無法讀取JSON文件中的數據。我已經閱讀了其他關於Stack Overflow和JSON文檔的JSON問題,但無濟於事。從JSON文件中讀取數據點
我想讀取的數據顯示在Three.js中。下面的代碼片段工作:
var obj = { "points" : [
{ "vertex":[0.0,0.0,0.0] },
{ "vertex":[200.0,0.0,0.0] },
{ "vertex":[-200.0,0.0,0.0] },
{ "vertex":[0.0,100.0,0.0] },
{ "vertex":[0.0,-100.0,0.0] },
{ "vertex":[0.0,0.0,300.0] },
{ "vertex":[0.0,0.0,-300.0] },
{ "vertex":[75.0,75.0,75.0] },
{ "vertex":[50.0,50.0,50.0] },
{ "vertex":[25.0,25.0,25.0] } ]};
var geometry = new THREE.Geometry();
for (var i=0;i<10;i++)
{
var vertex = new THREE.Vector3();
vertex.x = obj.points[i].vertex[0];
vertex.y = obj.points[i].vertex[1];
vertex.z = obj.points[i].vertex[2];
geometry.vertices.push(vertex);
}
,讀入點和點上下行進一步呈現。我旁邊有一個名爲中的index.html
test.json
一個文件時,它包含以下內容:
{ "points" : [
{ "vertex":[0.0,0.0,0.0] },
{ "vertex":[200.0,0.0,0.0] },
{ "vertex":[-200.0,0.0,0.0] },
{ "vertex":[0.0,100.0,0.0] },
{ "vertex":[0.0,-100.0,0.0] },
{ "vertex":[0.0,0.0,300.0] },
{ "vertex":[0.0,0.0,-300.0] },
{ "vertex":[75.0,75.0,75.0] },
{ "vertex":[50.0,50.0,50.0] },
{ "vertex":[25.0,25.0,25.0] }
]}
我的問題是,以下不工作(即不顯示點):
var geometry = new THREE.Geometry();
var obj2 = jQuery.getJSON('test.json');
for (var i=0;i<10;i++)
{
var vertex = new THREE.Vector3();
vertex.x = obj2.points[i].vertex[0];
vertex.y = obj2.points[i].vertex[1];
vertex.z = obj2.points[i].vertex[2];
geometry.vertices.push(vertex);
}
這些文件位於我的公共文件夾Dropbox並從公共鏈接中查看,即使如此,以防萬一我使用--allow-files-access-from-files標誌運行chrome。
UPDATE
我的鑰匙錯誤是不處理的功能的getJSON的回調頂點。我的第二個錯誤是假設在回調中將頂點添加到幾何堆棧就足夠了。事實上,我必須從幾何創建對象,並將其添加到場景中才能使用。非常感謝大家的幫助。
$.getJSON('test.json', function(obj2) {
var geometry = new THREE.Geometry();
for (var i=0;i<10;i++)
{
var vertex = new THREE.Vector3();
vertex.x = obj2.points[i].vertex[0];
vertex.y = obj2.points[i].vertex[1];
vertex.z = obj2.points[i].vertex[2];
geometry.vertices.push(vertex);
}
vc1 = geometry.vertices.length;
object = new THREE.ParticleSystem(geometry, shaderMaterial);
object.dynamic = true;
var vertices = object.geometry.vertices;
var values_size = attributes.size.value;
var values_color = attributes.ca.value;
for(var v = 0; v < vertices.length; v ++) {
values_size[ v ] = 50;
values_color[ v ] = new THREE.Color(0xffffff);
}
scene.add(object);
});
「不行」如何? – 2013-03-12 13:10:30
對不起,它沒有提供任何點。更新了問題。 – StuGrey 2013-03-12 13:12:35