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

merging geometry in three.js is not working

本文关键字:几何体 不起作用 合并 three js      更新时间:2023-09-26

路径是动态更改的。所以,

先前的渲染函数是,(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);
} 

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

我相信您已经将几何体与网格混淆了。几何体是网格的组成部分。要添加到几何体中,将其投射到新的网格对象中,然后将该新网格添加到场景中。

尝试:

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/