【问题标题】:merging geometry in three.js is not working在three.js中合并几何不起作用
【发布时间】:2016-12-09 11:31:29
【问题描述】:

动态更改路径。所以,

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

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

【问题讨论】:

    标签: javascript merge three.js geometry


    【解决方案1】:

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

    试试:

    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/

    【讨论】:

      猜你喜欢
      • 2023-03-03
      • 2022-10-07
      • 1970-01-01
      • 2016-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-24
      相关资源
      最近更新 更多