【发布时间】:2014-10-10 04:46:36
【问题描述】:
我正在使用 Three.JS 修订版 68。我想制作一个由小圆形精灵组成的球体,就好像这些小圆形精灵是球体的“皮肤”一样。问题是我使用画布创建的圆形精灵应该都面向这个(不存在的)球体的中心,但它们平行于屏幕:
我尝试使用 Sprites 应该理解的 lookAt(vector) 方法,因为它们是 Object3D 的子类,但它被完全忽略了,并且精灵不会改变它们所面对的方向:
sphereOfSprites = new THREE.Object3D(),
camera, scene, renderer;
init();
animate();
function init() {
var container, particles, particle;
container = document.createElement('div');
document.body.appendChild(container);
camera = new THREE.PerspectiveCamera( 75, SCREEN_WIDTH / SCREEN_HEIGHT, 1, 10000 );
camera.position.z = 1000;
scene = new THREE.Scene();
renderer = new THREE.CanvasRenderer();
renderer.setSize( SCREEN_WIDTH, SCREEN_HEIGHT );
container.appendChild( renderer.domElement );
var radius = 250;
var numOfSpikes = 200;
var vector = new THREE.Vector3(1,0,0);
for (var i = 0; i < numOfSpikes; i++) {
particle = new THREE.Sprite( new THREE.SpriteMaterial( {
map: new THREE.Texture( generateCircularSprite("white") ),
blending: THREE.AdditiveBlending } ) );
particle.position.x = Math.random() * 2 - 1;
particle.position.y = Math.random() * 2 - 1;
particle.position.z = Math.random() * 2 - 1;
particle.position.normalize();
particle.position.multiplyScalar( radius );
particle.scale.multiplyScalar( 25 );
// HERE IS WHERE I TRY TO MAKE THE SPRITE PARTICLE LOOK TOWARDS THE CENTER OF THE SPHERE
vector.copy( particle.position );
particle.lookAt(vector);
sphereOfSprites.add( particle );
}
scene.add(sphereOfSprites)
}
function generateCircularSprite(color) {
var canvas = document.createElement('canvas');
canvas.height = 100;
canvas.width = 100;
var context = canvas.getContext('2d');
var centerX = canvas.width / 2;
var centerY = canvas.height / 2;
var radius = 50;
context.beginPath();
context.arc(centerX, centerY, radius, 0, 2 * Math.PI, false);
context.fillStyle = 'green';
context.fill();
return canvas;
}
我可以使用什么来使精灵面向我想要的方向?
【问题讨论】: