路径动态更改。所以,
之前的渲染功能是, (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);
}
不显示网格。 我不知道为什么。 你知道为什么这不起作用吗? 请帮帮我。
答案 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/