Three.js Threejs |如何在半径之间(环形几何体)

Three.js Threejs |如何在半径之间(环形几何体),three.js,tween.js,Three.js,Tween.js,如何使用tween.js在THREE.js中tweenTHREE.RingGeometry()的innerRadius属性。我不想缩放环,我想更新几何体 您需要了解顶点的变形,本网站针对不同的情况提供了很好的示例: 也要查看变形示例。如果它能提供帮助,可能是一个答案。 1-为戒指命名, 2-创建查找、移除和重新绘制环的函数 3-使用Tween.js或setInterval,使用该函数设置动画。 比如: var rStart=100; var rStep=10; var-ep=50; //创

如何使用tween.js在THREE.js中tween
THREE.RingGeometry()
的innerRadius属性。我不想缩放环,我想更新几何体

您需要了解顶点的变形,本网站针对不同的情况提供了很好的示例:



也要查看变形示例。

如果它能提供帮助,可能是一个答案。
1-为戒指命名,
2-创建查找、移除和重新绘制环的函数
3-使用Tween.js或setInterval,使用该函数设置动画。
比如:

var rStart=100;
var rStep=10;
var-ep=50;
//创建圆
var geometry=新的三个.RingGeometry(rStart,rStart+ep,32,3,0,Math.PI*2);
var material=新的三个.MeshBasicMaterial({color:0xff0000,side:THREE.DoubleSide});
var环=新的三个网格(几何体、材质);
ring.name='the_ring';
场景。添加(环);
//用于查找环、移除和重新绘制的函数
函数增长(i、rStart、rStep、ep){
var ringToRemove=‘环’;
var ringToRemoveSelected=scene.getObjectByName(ringToRemove);
场景。移除(ringToRemoveSelected);
var newRadius=rStart+(rStep*i);
var geometry=新的三个环形几何体(newRadius,newRadius+ep,32,3,0,Math.PI*2);
var material=新的三个.MeshBasicMaterial({color:0xff0000,side:THREE.DoubleSide});
var环=新的三个网格(几何体、材质);
ring.name='the_ring';
场景。添加(环);
}
//并制作动画
var i=0;
setInterval(函数(){
i++;
如果(i<100){
增长(i、rStart、rStep、ep);
}
}, 100);

谢谢你,约书亚。我正在看这个网站。(Thks对gaitat编辑我的问题)
var rStart = 100;
var rStep = 10;
var ep = 50;

//create circle
var geometry = new THREE.RingGeometry( rStart, rStart + ep, 32,3,0, Math.PI * 2 );
var material = new THREE.MeshBasicMaterial( { color: 0xff0000, side: THREE.DoubleSide } );
var ring = new THREE.Mesh( geometry, material );
ring.name = 'the_ring';
scene.add( ring );


// function to find ring, remove and redraw
function grow(i,rStart,rStep,ep){

var ringToRemove = 'the_ring';
var ringToRemoveSelected = scene.getObjectByName(ringToRemove);
scene.remove(ringToRemoveSelected);

var newRadius = rStart + ( rStep * i);

var geometry = new THREE.RingGeometry( newRadius , newRadius + ep , 32,3,0, Math.PI * 2);
var material = new THREE.MeshBasicMaterial( { color: 0xff0000, side: THREE.DoubleSide } );

var ring = new THREE.Mesh( geometry, material );
ring.name = 'the_ring';
scene.add( ring );

}

//and animate
var i = 0;
setInterval(function () { 

i++; 
if(i < 100){
grow(i,rStart,rStep,ep);
}
}, 100);