dynamic - 三个js顶点不更新

标签 dynamic three.js geometry vertices

我正在使用three.js r67,并且顶点似乎没有更新。
我设置了geometry.dynamic = truegeometry.verticesNeedUpdate = true
圆在移动,但线是静态的。

有人可以帮我吗?

var scene = new THREE.Scene();
var renderer = new THREE.WebGLRenderer();

var g = new THREE.CircleGeometry( 4, 16 );
var m = new THREE.MeshBasicMaterial({color: 0x114949});
var circle = new THREE.Mesh( g, m );

circle.position.x = 2;
circle.position.y = 2;
circle.position.z = -1;
scene.add( circle );

var material = new THREE.LineBasicMaterial({color: 0xDF4949, linewidth: 5});

var geometry = new THREE.Geometry();
geometry.vertices.push(new THREE.Vector3(0, 0, 0));
geometry.vertices.push(new THREE.Vector3(1, 1, 0));
geometry.verticesNeedUpdate = true;
geometry.dynamic = true;

var line = new THREE.Line(geometry, material);
scene.add(line);

var update = function() {
  circle.position.x += 0.01;
  line.geometry.vertices[0].x = circle.position.x;
};

var render = function() {
  renderer.render(scene, camera);
};

var loop = function() {
  update();
  render();
  requestAnimationFrame(loop, renderer.canvas);
};
loop();

最佳答案

如果要更改几何图形的顶点,则需要设置geometry.verticesNeedUpdate = true;

function update() {
    circle.position.x += 0.01;
    line.geometry.vertices[ 0 ].x = circle.position.x;
    line.geometry.verticesNeedUpdate = true;
};

渲染后,geometry.verticesNeedUpdate重置为false,因此,每次更改几何顶点时,都需要将其重置为true

编辑:如果您正在使用BufferGeometry,请改用此模式:
geometry.attributes.position.needsUpdate = true;

three.js r.74

关于dynamic - 三个js顶点不更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24531109/

相关文章:

c# - Reflect.Emit 动态类型内存爆炸

javascript - 三.js轮换

algorithm - Geometry:计算几何,计算所有的 friend 点对

opengl - 如何知道顶点何时逆时针旋转

Python 如何使用 osgeo.ogr.Geometry 对象计算多边形周长

Android:防止以编程方式更改方向

c++ - 在 C++ 中返回动态数组

lighting - Three.js 的最大点光源数量

javascript - 未捕获的类型错误 : Cannot read property 'propeller' of undefined

Javascript onload 事件 - 如何判断脚本是否已经加载?