三个js RingBufferGeometry,更新thetaLength

时间:2017-06-25 22:19:45

标签: three.js

我认为这很容易解决,但我没有得到解决方案。 即时通讯使用ringbuffergeometry并想要动态更新thetaLength参数。这是我的代码:

var progressGeometry = new THREE.RingBufferGeometry( 230, 240, 40, 6, 1.6, 0.4 );
var ringMaterial = new THREE.MeshBasicMaterial( { color: 0x000000, side: THREE.DoubleSide } ); 
progress = new THREE.Mesh( progressGeometry, ringMaterial );   

1 个答案:

答案 0 :(得分:0)

需要动态重建整个几何体

我们的目标:

var progressGeo = new THREE.RingBufferGeometry(1, 2, 32, null, 0, Math.PI);
var progressMat = new THREE.MeshBasicMaterial({color: 0x0000ff});
var progress = new THREE.Mesh(progressGeo, progressMat);
scene.add(progress);

并且,例如,在动画循环中,我们将重新构建其几何体:

function render(){
  requestAnimationFrame(render);
  progress.geometry.dispose(); // dispose our old geometry
  progressGeo = new THREE.RingBufferGeometry(1, 2, 32, null, 0, Math.PI + Math.sin(Date.now() * 0.001) * Math.PI); // build a new geometry
  progress.geometry = progressGeo; // apply the new one
  renderer.render(scene, camera);
}

jsfiddle示例r86