1

半径を増やして球をアニメーション化しようとしています。ここに私のコードの関連スニペットがあります..

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方向に完全に動いていますが、球の半径を大きくすることはできません(コードが機能していて、エラーがないことを意味します)。私が間違っている可能性のある提案..

4

2 に答える 2

2

radius パラメーターは、ジオメトリの作成時に頂点の位置を計算するために使用され、後でその値を変更しても効果はありません。サイズを変更するには、スケール パラメーターを使用できます。3 つの次元 (x、y、および z) すべてのサイズを変更する場合は、animate 関数で次のように置き換えます。

sphere.geometry.radius +=0.1;

sphere.scale.x += 0.1;
sphere.scale.y += 0.1;
sphere.scale.z += 0.1;

これにより、アニメーション関数が呼び出されるたびに、球のサイズが元のサイズの 10% ずつ増加します。

お役に立てれば!

于 2013-06-04T16:15:26.827 に答える