美文网首页WebGLThree.js
21three.js粒子系统(一)

21three.js粒子系统(一)

作者: 狂暴机甲 | 来源:发表于2018-05-04 23:28 被阅读3次
image.png image.png
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>21three.js粒子系统</title>
    <script src="lastjs/three.js"></script>
    <script src="js/TrackballControls.js"></script>
    <script src="js/stats.js"></script>
    <script src="js/dat.gui.js"></script>
    <style>
        body{margin: 0;overflow: hidden;position: relative}
    </style>
</head>
<body>
<div style="position: absolute">粒子系统</div>
<div id="webgl-output"></div>
<script type="text/javascript">

    var scene = new THREE.Scene();
    var camera = new THREE.PerspectiveCamera(45,window.innerWidth/window.innerHeight,0.1,2000);
    camera.position.set(0,0,150);
    camera.lookAt(scene.position);
    var renderer = new THREE.WebGLRenderer();
    renderer.setClearColor('#a5efa5');
    renderer.setSize(window.innerWidth,window.innerHeight);
    var axes = new THREE.AxisHelper(10);
    scene.add(axes);
    var amblight = new THREE.AmbientLight(0x666666);
    scene.add(amblight);
    var spotllight = new THREE.SpotLight(0xCCCCCC);
    spotllight.position.set(0,50,0);
    scene.add(spotllight);

    document.getElementById('webgl-output').appendChild(renderer.domElement);

    createSprites();
    function createSprites() {
        var material = new THREE.SpriteMaterial();
        for (var x = -5; x < 5; x++) {
            for (var y = -5; y < 5; y++) {
                var sprite = new THREE.Sprite(material);
                sprite.position.set(x * 10, y * 10, 0);
                scene.add(sprite);
            }
        }
    }
    createParticles();
    function createParticles() {
        var geom = new THREE.Geometry();
        var material = new THREE.PointCloudMaterial({
           size:4,
           vertexColors:true,color:0xffffff
        });
        for (var x = -5; x < 5; x++) {
            for (var y = -5; y < 5; y++) {
                var sprite = new THREE.Vector3(x * 10, y * 10, 10);
                geom.vertices.push(sprite);
                geom.colors.push(new THREE.Color(Math.random()*0xffffff));
            }
        }
        var cloud = new THREE.PointCloud(geom,material);
        scene.add(cloud);
    }


    renderer.render(scene,camera);

    var trackballControls = new THREE.TrackballControls(camera);
    var clock = new THREE.Clock();

    function run() {
        var delta = clock.getDelta();
        trackballControls.update(delta);
        requestAnimationFrame(run);
        renderer.render(scene,camera);
    }
    run();

    window.addEventListener('resize',onResize,false);
    function onResize() {
        camera.aspect = window.innerWidth/window.innerHeight;
        camera.updateProjectionMatrix();
        renderer.setSize(window.innerWidth,window.innerHeight);
    }
</script>
</body>
</html>

相关文章

  • 21three.js粒子系统(一)

  • Unreal万能材质球模板参考0120bate1

    粒子系统:1.新建粒子系统2.新建粒子材质3.将粒子系统拖放进关卡 或者

  • 粒子系统与创建克隆

    一、粒子系统 初识粒子特效: 粒子系统可以制作烟雾、气流、火焰和各种大气效果。粒子特效不能单独出现,必须依赖游戏对...

  • 音视频开发之旅(15) OpenGL ES粒子系统 - 喷泉

    目录 粒子和粒子系统 实践:喷泉效果 遇到的问题 资料 收获 通过该篇的实践实现如下效果 一、什么是粒子和粒子系统...

  • 粒子动画的使用和原理

    什么是粒子系统 粒子系统通过发射许多微小粒子来表示不规则模糊物体。粒子系统常用于游戏引擎,用来实现火、云、烟花、雨...

  • 粒子系统

    粒子系统:资产 发射器 Actor:在场景中使用粒子系统 Cascade(级联):编辑粒子系统 发射器:多个发射器...

  • 粒子系统参数详解

    详解unity粒子系统的参数 粒子系统 Duration:粒子发射的持续时间(设置5秒,粒子发射器会持续发射5秒)...

  • iOS-[QuartzCore框架](CAEmitterLaye

    在粒子系统中,CAEmitterLayer负责发射粒子(当然粒子也可以发射粒子),而这些所谓的粒子,就是CAEmi...

  • 粒子

    ParticleSystem GameStart:常数设置 Duration(粒子持续时间):粒子系统发射粒子的持...

  • 遍历修改粒子系统渲染材质的问题

    问题描述: 当粒子系统中只有renderer材质,没有拖尾材质时,尝试遍历并修改粒子系统下的材质时,粒子系统下的材...

网友评论

    本文标题:21three.js粒子系统(一)

    本文链接:https://www.haomeiwen.com/subject/yxojrftx.html