Dynamic 三个js顶点不更新
我使用的是three.js r67,顶点似乎没有更新。 我设置了Dynamic 三个js顶点不更新,dynamic,three.js,geometry,vertices,Dynamic,Three.js,Geometry,Vertices,我使用的是three.js r67,顶点似乎没有更新。 我设置了geometry.dynamic=true,geometry.verticesNeedUpdate=true。 圆圈在移动,但线条是静止的 有人能帮我吗 var scene = new THREE.Scene(); var renderer = new THREE.WebGLRenderer(); var g = new THREE.CircleGeometry( 4, 16 ); var m = new THREE.MeshBa
geometry.dynamic=true
,geometry.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;
3.js r.74