2016-08-03 8 views
0

パスが動的に変更されます。だから、three.jsでのジオメトリの結合が機能しない

前のレンダリング機能が 、でした(LENGTH、getPosition()、RADIUS、材料は、SCENEが既に設定されている)

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/

関連する問題