Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在three.js中使用随机粒子填充球体_Three.js - Fatal编程技术网

如何在three.js中使用随机粒子填充球体

如何在three.js中使用随机粒子填充球体,three.js,Three.js,我读了一个关于用粒子随机填充球体表面的优秀问题:。如何使用随机生成的粒子填充球体的总体积?我试试看: var particleCount = 1800, particles = new THREE.Geometry(), pMaterial = new THREE.PointCloudMaterial({ color: 0xFFFFFF, size: 20, map: THREE.ImageUtils.loadTexture( "images/par

我读了一个关于用粒子随机填充球体表面的优秀问题:。如何使用随机生成的粒子填充球体的总体积?我试试看:

var particleCount = 1800,
  particles = new THREE.Geometry(),

  pMaterial = new THREE.PointCloudMaterial({
    color: 0xFFFFFF,
    size: 20,
    map: THREE.ImageUtils.loadTexture(
      "images/particle.png"
    ),
    blending: THREE.AdditiveBlending,
    transparent: true
  });

for (var t = 0; t < particleCount; t++) {
  var angle3 = Math.random() * Math.PI * 2;
  var radius3 = Math.random() * 350 + 1;
  var pX1 = Math.cos(angle3) * radius3,
    pY1 = Math.random() * 70 - 35,
    pZ1 = Math.sin(angle3) * radius3,
    skparticle11 = new THREE.Vector3(pX1, pY1, pZ1);
  particles.vertices.push(skparticle11);
}

var particleSystem = new THREE.PointCloud(
  particles,
  pMaterial);

// add it to the scene
scene.add(particleSystem);
var particleCount=1800,
粒子=新的三个。几何体(),
p材质=新的三点云材质({
颜色:0xFFFFFF,
尺码:20,
地图:3.ImageUtils.loadTexture(
“images/particle.png”
),
混合:3.可加性贷款,
透明:正确
});
对于(var t=0;t

但我只有一张磁盘。如何使球体充满粒子?

一个角度是不够的,这就是为什么你得到一个圆盘

创建一个随机法向量

var randomDirection = new THREE.Vector3(Math.random()-0.5,Math.random()-0.5,Math.random()-0.5).normalize();
像以前一样创建随机距离

var radius3 = Math.random() * 350 + 1;
球体中围绕原点的随机点将

var randomParticle = randomDirection.multiplyScalar(radius3);

要获得更好的分布,请使用比数学更好的生成器。随机的一个角度是不够的,这就是为什么要得到一个磁盘

创建一个随机法向量

var randomDirection = new THREE.Vector3(Math.random()-0.5,Math.random()-0.5,Math.random()-0.5).normalize();
像以前一样创建随机距离

var radius3 = Math.random() * 350 + 1;
球体中围绕原点的随机点将

var randomParticle = randomDirection.multiplyScalar(radius3);

为了获得更好的分布,请使用比数学更好的生成器。random

你需要粒子均匀分布吗?可能是重复的我现在就去读我做了,但我得到了一个cube@andars,是的,它可以均匀分布你需要粒子均匀分布吗?可能是重复的我现在就去读我做了,但是我得到了一个cube@andars,是的,它可以均匀分布