WebGL:以three.js更新对象的属性

时间:2013-06-04 11:34:44

标签: javascript 3d three.js

我试图通过增加半径来设置球体的动画效果。这是我的代码的相关片段..

function create_sphere(){

var sphereMaterial = new THREE.MeshLambertMaterial(
{
    color: 0xCC0000
});


var radius=2,segments=50,rings=50;  
sphere_geometry = new THREE.SphereGeometry(radius, segments, rings)
sphere = new THREE.Mesh(sphere_geometry,sphereMaterial);
sphere.position.y = -10;
sphere.position.needsUpdate = true;
sphere.geometry.dynamic = true;

}

这里是动画函数,我正在调用..

function animate(){
sphere.position.y+=0.1;
sphere.geometry.radius +=0.1;
scene.add(sphere);
renderer.render(scene, camera);
requestAnimationFrame(animate);    
}

但我无法增加球体的半径,尽管它在y方向上完美移动,(暗示代码正在工作,并且没有错误)。 任何建议我可能错在..

2 个答案:

答案 0 :(得分:3)

沿三个轴均匀缩放物体:

var sphereScale = 1.0;
...
sphereScale += 0.1;
sphere.scale.set(sphereScale,sphereScale,sphereScale); // x,y,z

答案 1 :(得分:2)

radius参数用于在创建几何体时计算顶点的位置,之后更改其值将不起作用。要更改大小,可以使用缩放参数。如果要更改所有三个维度(x,y和z)的大小,请在动画函数中替换

sphere.geometry.radius +=0.1;

sphere.scale.x += 0.1;
sphere.scale.y += 0.1;
sphere.scale.z += 0.1;
每次调用animate函数时,

会使球体的大小增加原始大小的10%。

希望这有帮助!