![](/img/trans.png)
[英]MeshNormalMaterial not working on a three.js custom geometry: the geometry renders as black
[英]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.