1

画像をテクスチャのマップとして使用してパーティクルを作成するのに問題があります。以下は私のコードです:

var camera, scene, renderer, material, img, texture;

init();
animate();

function init() {
  scene = new THREE.Scene();
  camera = new THREE.PerspectiveCamera(50, window.innerWidth / window.innerHeight, 1, 10000);
  camera.position.z = 8000;
  scene.add(camera);

  img = new Image();
  texture = new THREE.Texture(img);

  img.onload = function() {
    texture.needsUpdate = true;
    makeParticle();
  };
  img.src = "http://www.aerotwist.com/tutorials/creating-particles-with-three-js/images/particle.png";

  renderer = new THREE.CanvasRenderer();
  renderer.setSize(window.innerWidth, window.innerHeight);
  document.body.appendChild(renderer.domElement);
}

function makeParticle() {
  material = new THREE.ParticleBasicMaterial({
    color: 0xE60000,
    size: 20,
    map: texture,
    blending: THREE.AdditiveBlending,
    transparent: true
  });
  // make the particle
  particle = new THREE.Particle(material);
  particle.scale.x = particle.scale.y = 1;
  scene.add(particle);
}


function animate() {
  requestAnimationFrame(animate);
  renderer.render(scene, camera);
}

このコードのフィドルはここにあります:jsfiddle

次のようにThreeImageHelperを使用できることを認識しています。

map: THREE.ImageUtils.loadTexture(
  "FILE PATH"
),

しかし、私は自分のアセットローダーを実装しているので、個別に使用したくありません。現在、上記の私のコードはエラーを示していませんが、パーティクルは表示されていません。

4

1 に答える 1

2

パーティクルは表示されていますが、カメラはそれから非常に遠いです。

この行を変更します。

camera.position.z = 8000;

このようなものに:

camera.position.z = 50;
于 2012-06-19T14:22:20.263 に答える