在three.js中合并几何图形不起作用

时间:2016-08-03 16:12:04

标签: javascript merge three.js geometry

路径动态更改。所以,

之前的渲染功能是, (LENGTH,getPosition(),RADIUS,MATERIAL,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);
} 

不显示网格。 我不知道为什么。 你知道为什么这不起作用吗? 请帮帮我。

1 个答案:

答案 0 :(得分: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/