我试着去动态地重建THREE.Line对象内部的一些几何形状简单three.js所应用程序,但由于某些原因,更新不会被触发。我给自己定的线作为动态对象,我设置了verticesNeedUpdate
属性设置为true我每次更新几何,目前仍是行不更新。任何人都可以看到我在做什么错了吗?更新顶点()
// ---------------------------------------------------------------------------------------
// line
// ---------------------------------------------------------------------------------------
function build_line(length)
{
var vertices = [];
for (i = 0; i < length; i++)
{
vertices.push(new THREE.Vector3(i * 2, 0, 0));
}
return vertices;
}
var line_geo = new THREE.Geometry();
line_geo.vertices = build_line(3);
line_geo.dynamic = true;
console.log(line_geo);
// simple
material = new THREE.LineBasicMaterial({
color: 0xffffff,
linewidth: 1,
linejoin: "mitre"
});
var scene_object = new THREE.Line(line_geo, material);
scene.add(scene_object);
// ---------------------------------------------------------------------------------------
// render loop
// ---------------------------------------------------------------------------------------
var current_length = 3
var render = function()
{
current_length += 1;
line_geo.vertices = build_line(current_length);
line_geo.verticesNeedUpdate = true;
// draw!
requestAnimationFrame(render);
renderer.render(scene, camera);
}
render();
编辑
根据这个帖子
Adding geometry to a three.js mesh after render
你不能调整缓冲区的内容只有重新填充它。这页提到,您可以通过初始化缓冲超大守信colapsed或隐藏未使用的绿党
https://github.com/mrdoob/three.js/wiki/Updates
我不知道你究竟是如何做到这一点效仿调整缓冲区,我不能看到一个可视性标志或我用于verts的THREE.Vector3
折叠标志。我尝试用空值替换矢量,但会引发错误。任何想法如何实现这一目标?
看看http://stackoverflow.com/questions/17842521/adding-geometry-to-a-three-js-mesh -after-render回答你的问题。 – WestLangley
的链接@WestLangley谢谢,我尝试了一些事情没有用,你可以在帖子编辑 –
@WestLangley,这似乎是链接到这个网页,如果我没有记错 –