2016-08-03 20 views
0

動態更改路徑。所以,three.js中的合併幾何體不起作用

以前渲染函數, (長度爲getPosition(),RADIUS,材料,場景已經設定)

var prevPosition = getPosition(); 
for(var i =0; i < LENGTH; i++) { 
    drawPath(getPosition()); 
} 

function drawPath(currentPosition) { 
    var spline = new THREE.CatmullRomCurve3([prevPosition, currentPosition]); 
    var geometry = new THREE.TubeGeometry(spline, 1, RADIUS); 
    var mesh = new THREE.Mesh(geometry, MATERIAL); 
    SCENE.add(mesh); 
} 

以前的渲染方法,效果非常好。 我改變了這個表現。

改性呈現功能,則不會顯示

var mergedGeometry = new THREE.Geometry(); 
function drawPath(currentPosition) { 
    var spline = new THREE.CatmullRomCurve3([prevPosition, currentPosition]); 
    var geometry = new THREE.TubeGeometry(spline, 1, RADIUS); 
    mergedGeometry.merge(geometry); 
    var mesh = new THREE.Mesh(mergedGeometry, MATERIAL); 
    SCENE.add(mesh); 
} 

網格。 我不知道爲什麼。 你知道爲什麼這不工作? 請幫幫我。

回答

0

我相信你已經混淆了網格的幾何。幾何是網格的一個組成部分。您想要添加到幾何圖形中,將其轉換爲新的網格對象,然後將該新網格添加到場景中。

嘗試:

var mergedGeometry = new THREE.Geometry(); 
var prevPosition = getPosition(); 
for(var i =0; i < LENGTH; i++) { 
    drawPath(getPosition()); 
} 

var mesh = new THREE.Mesh(mergedGeometry, MATERIAL); 
SCENE.add(mesh); 


function drawPath(currentPosition) { 
    var spline = new THREE.CatmullRomCurve3([prevPosition, currentPosition]); 
    var geometry = new THREE.TubeGeometry(spline, 1, RADIUS); 
    mergedGeometry.merge(geometry); 
} 

如果您遇到問題,有一個正常運作的網合併小提琴這裏:http://jsfiddle.net/mt2zbb9k/