2013-01-20 16 views
1

我試圖顯示由SnappyTree/Proctree創建的模型(http://www.snappytree.com/)。導入SnappyTree(proctree)模型

Proctree被設計成與GLGE一起工作,但我幾乎在那裏使用Three.js中庫生成的數據。基本上我構造了一個自定義json對象,添加proctree數據並使用JSONLoader生成最終幾何。

我懷疑發生了什麼,頂點(pointcloud)被正確導入,但數組面被引用了錯誤的頂點或者被解釋爲錯誤。

var tree = new Tree(json); // Proctree 
// window.console.log(tree); 
var model = { "metadata" : { "formatVersion" : 3.1, "generatedBy": "bb3d2proctree",  "vertices": 0, "faces": 0, "description": "Autogenerated from proctree." }, 
    "materials": [{ // just testing... 
    "diffuse": 20000 
    }], 
    "colors": [0xff00ff, 0xff0000] // just testing 
}; 

model.vertices = Tree.flattenArray(tree.verts); 
model.normals = Tree.flattenArray(tree.normals); 
model.uvs  = [Tree.flattenArray(tree.UV)]; 

model.faces = Tree.flattenArray(tree.faces); 

var loader = new THREE.JSONLoader(); 
loader.createModel(model, function(geometry, materials) { 
    // cut out for brewity... see jsfiddle 
} 

這幾乎是工作(沒有鑽進材料尚未..)樹看起來有點正確,但臉上都有點亂了,我敢肯定,有一些簡單的格式差異,且其應該可以修改faces數組,以便與Three.js一起正常工作。

的jsfiddle這裏:​​

我怎麼能正確地將數據導入three.js所?

這是它應該是這樣的:http://www.snappytree.com/#seed=861&segments=10&levels=5&vMultiplier=0.66&twigScale=0.47&initalBranchLength=0.5&lengthFalloffFactor=0.85&lengthFalloffPower=0.99&clumpMax=0.449&clumpMin=0.404&branchFactor=2.75&dropAmount=0.07&growAmount=-0.005&sweepAmount=0.01&maxRadius=0.269&climbRate=0.626&trunkKink=0.108&treeSteps=4&taperRate=0.876&radiusFalloffRate=0.66&twistRate=2.7&trunkLength=1.55&trunkMaterial=TrunkType2&twigMaterial=BranchType5(除了我的代碼到目前爲止只嘗試導入樹幹沒有樹枝,沒有紋理,所以在這一點上,我只擔心樹幹的形狀,可以看出jsfiddle)

回答

1

沒關係,讓它工作。

代替:

model.faces = Tree.flattenArray(tree.faces);

我做的:

model.faces = []; 
for (var i = 0; i < tree.faces.length; i++) { 
    var face = tree.faces[i]; 
    model.faces.push(0); 
    model.faces.push(face[0]); // v1 
    model.faces.push(face[1]); // v2 
    model.faces.push(face[2]); // v3 
}  

更新的jsfiddle這裏:http://jsfiddle.net/KY7eq/