Javascript three.js使用点制作烟雾效果

Javascript three.js使用点制作烟雾效果,javascript,animation,three.js,Javascript,Animation,Three.js,我想通过使用点来产生这样的烟雾效果。现在我有两个问题 在动画开始时,所有点聚集在一起并像云一样向上移动 效果的形状看起来像一个矩形棱镜。如何使它看起来像一个圆锥体(如下图) 有人能告诉我如何解决这些问题吗?谢谢 let渲染器、场景、摄影机; 让控制,统计; //要点 常量粒子计数=500; 让点; 函数createPoints(){ const geometry=新的3.geometry(); const texture=new THREE.TextureLoader().load('htt

我想通过使用点来产生这样的烟雾效果。现在我有两个问题

  • 在动画开始时,所有点聚集在一起并像云一样向上移动
  • 效果的形状看起来像一个矩形棱镜。如何使它看起来像一个圆锥体(如下图)
  • 有人能告诉我如何解决这些问题吗?谢谢

    let渲染器、场景、摄影机;
    让控制,统计;
    //要点
    常量粒子计数=500;
    让点;
    函数createPoints(){
    const geometry=新的3.geometry();
    const texture=new THREE.TextureLoader().load('http://stemkoski.github.io/Three.js/images/smokeparticle.png');
    让材质=新的三点材质({
    尺码:15,
    贴图:纹理,
    混合:3.可加性贷款,
    depthWrite:false,
    透明:是的,
    颜色:“rgb(30,30,30)”
    });
    常数范围=10;
    for(设i=0;i=100)v.y=0;
    });
    points.geometry.verticesNeedUpdate=true;
    }
    函数render(){
    pointsAnimation();
    请求动画帧(渲染);
    控件更新();
    渲染器。渲染(场景、摄影机);
    }
    addEventListener('resize',function()){
    camera.aspect=window.innerWidth/window.innerHeight;
    camera.updateProjectMatrix();
    renderer.setSize(window.innerWidth、window.innerHeight);
    });
    init();
    render()
    
    正文{
    保证金:0;
    溢出:隐藏;
    }

    您只需根据点x设置
    velocityX
    ,例如:

    point.velocityX = THREE.Math.randFloat(0.0, 0.1) * Math.sign(x);
    
    不要忘记重置x位置:

    if (v.y >= 100) {
      v.x = THREE.Math.randInt(-10, 10);
      v.y = 0;
    }