[英]merging geometry in three.js is not working
A path is changed dynamically. 路径是动态更改的。 So,
所以,
previous render function was, (LENGTH, getPosition(), RADIUS, MATERIAL, SCENE are already set) 以前的渲染函数是(已经设置了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);
}
previous render method works very well. 以前的render方法效果很好。 I changed this for performance.
我为了性能改变了它。
modified render function is, 修改后的渲染功能是
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);
}
mesh is not displayed. 不显示网格。 I don't know why.
我不知道为什么 Do you know why does not this work?
您知道为什么这行不通吗? Please help me.
请帮我。
I believe you've confused geometry for a mesh. 我相信您对网格的几何形状感到困惑。 Geometry is a component of a mesh.
几何是网格的组成部分。 You want to add to your geometry, cast it into a new mesh object, and add that new mesh to the scene.
您要添加到几何体,将其投射到新的网格物体中,然后将该新网格物体添加到场景中。
Try: 尝试:
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);
}
If you get stuck, there is a functioning mesh merge fiddle here: http://jsfiddle.net/mt2zbb9k/ 如果您卡住了,这里有一个起作用的网格合并小提琴: http : //jsfiddle.net/mt2zbb9k/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.