javascript - Three.js - 如何使用 Three.js 创建烟雾?

标签 javascript three.js particles smoke

我想创造在天空中飘扬的棕色烟雾。

我该如何创建它?

最佳答案

ShaderParticleEngine收到了 three.js-r72 的重写,其中包含 heavy API 更改,因此我正在更新此答案。有关 ShaderParticleEngine 0.8/three.js-r71 的比较和/或设置,请参阅此回答历史记录。


它现在允许用户微调更多参数,因此您可以创建这种美丽的扭曲烟雾:

smoke blowing from crash site

屏幕截图中发射器的示例设置:

var loader = new THREE.TextureLoader();
var url = 'assets/images/particles/cloudSml.png';
var texture = loader.load( url );

var particleGroupCrash = new SPE.Group({
    texture: {
        value: texture
    },
    blending: THREE.NormalBlending
});

var crashemitter = new SPE.Emitter({

    maxAge: { value: 12 },
    position: { 
        value: new THREE.Vector3( 0, 0, 0 ),
        spread: new THREE.Vector3( 1, 0.5, 2 ),
    },
    size: {
        value: [ 2, 8 ],
        spread: [ 0, 1, 2 ]
    },
    acceleration: {
        value: new THREE.Vector3( 0, 0, 0 ),
    },
    rotation: {
        axis: new THREE.Vector3( 0, 1, 0 ),
        spread: new THREE.Vector3( 0, 20, 0 ),
        angle: 100 * Math.PI / 180,
    },
    velocity: {
        value: new THREE.Vector3( 0, 1, -0.5 ),
        spread: new THREE.Vector3( 0.25, 0.1, 0.25 )
    },
    opacity: {
        value: [ 0.2, 0.5, 0 ]
    },
    color: {
        value: [ new THREE.Color( 0x333333 ), new THREE.Color( 0x111111 ) ],
        spread: [ new THREE.Vector3( 0.2, 0.1, 0.1 ), new THREE.Vector3( 0, 0, 0 ) ]
    },
    particleCount: 600,
});

Three.js r73

关于javascript - Three.js - 如何使用 Three.js 创建烟雾?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32858852/

相关文章:

three.js - 从四元数获得欧拉旋转?

julia - 在 Julia 中模拟粒子碰撞

c++ - 更新粒子位置

javascript - Particles.js — 框架更改时修改

javascript - 在 THREE.js 中一起渲染多个盒子

javascript - javascript 事件的设备方向未在 chrome android 中触发

javascript - 在 Javascript/Lodash 中过滤对象数组中的多个字段

javascript - 用 Jest 测试 html 页面

javascript - 如何使用 Excel JavaScript API office Add-IN 最大限度地提高表行添加 50K+ 行的性能

javascript - 更好地使用异步IO