繁体   English   中英

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

[英]merging geometry in three.js is not working

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

以前的渲染函数是(已经设置了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);
}

以前的render方法效果很好。 我为了性能改变了它。

修改后的渲染功能是

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/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM