美文网首页
threejs - 3 - 场景刷新

threejs - 3 - 场景刷新

作者: 大批 | 来源:发表于2018-04-07 13:28 被阅读391次

:)


简介

刷新其实可以和动画联系起来,改变场景中的物体(改变位置),刷新界面。最后就可以形成动画。一般1秒钟需要刷新60次


定时器实现动画

可以用js的定时器来做1秒60次的刷新

    var scene = new THREE.Scene();
    var camera = new THREE.PerspectiveCamera(45,window.innerWidth / window.innerHeight,1,1000);
    var renderer = new THREE.WebGLRenderer();
    renderer.setSize(window.innerWidth,window.innerHeight);

    var box = new THREE.Mesh(
        new THREE.BoxGeometry(2,2,2),
        new THREE.MeshBasicMaterial({
            color: 0xffff00,wireframe:true
        })
    );
    box.position.set(0,0,0); // 将立方体放到原点位置
    scene.add(box);

    camera.position.set(5,5,5);
    camera.lookAt(box.position);

    document.getElementById("content").appendChild(renderer.domElement);
    function run() {
        box.position.x += 0.005; //改变立方体的位置
        renderer.render(scene,camera);
    }
    setInterval(run,1.0/60);

可以看到立方体沿着 x 轴移动。但是这个也有些问题,就是不太准确。html5有一个更好的办法来刷新requestAnimationFrame


requestAnimationFrame实现刷新

    var scene = new THREE.Scene();
    var camera = new THREE.PerspectiveCamera(45,window.innerWidth / window.innerHeight,1,1000);
    var renderer = new THREE.WebGLRenderer();
    renderer.setSize(window.innerWidth,window.innerHeight);

    var box = new THREE.Mesh(
        new THREE.BoxGeometry(2,2,2),
        new THREE.MeshBasicMaterial({
            color: 0xffff00,wireframe:true
        })
    );
    box.position.set(0,0,0); // 将立方体放到原点位置
    scene.add(box);

    camera.position.set(5,5,5);
    camera.lookAt(box.position);

    document.getElementById("content").appendChild(renderer.domElement);
    function run() {
        box.position.x += 0.005; //改变立方体的位置
        renderer.render(scene,camera);
        requestAnimationFrame(run);
    }
    // setInterval(run,1.0/60);
    run();

场景中物体的其他属性

除了可以改变位置,还可以改变旋转角度,和缩放比例

  • 位置是 position
  • 旋转角度是 rotation
  • 缩放是 scale
    var step = 0.01;
    function run() {
        if(box.scale.x > 1.5){
            box.scale.x -= step;
        }else{
            box.scale.x += step;
        }
        box.rotation.set(
            box.rotation.x + step,
            box.rotation.y + step,
            box.rotation.z
        );
        box.rotation.z += step;
        renderer.render(scene,camera);
        requestAnimationFrame(run);
    }

End

相关文章

  • threejs - 3 - 场景刷新

    :) 简介 刷新其实可以和动画联系起来,改变场景中的物体(改变位置),刷新界面。最后就可以形成动画。一般1秒钟需要...

  • D3.js

    D3.js 为什么学习D3 D3.js和threejs的应用场景完全不一样。threejs主要应用与基于webGL...

  • 场景

    场景是threejs中所有object 元素盛放的容器,场景并没有多余复杂的操作,只需要在每次使用threejs构...

  • threejs场景雾化

    在场景生成的时候顺手雾化一下就可以了,它存在三个参数,第一个代表雾的颜色,后面代表雾化范围。

  • 02、添加材质、光源以及物体对象的阴影

    threejs中添加新的材质和灯光以及设置阴影属性 首先,threejs的初始化,需要创建场景、相机、渲染器 创建...

  • ThreeJs 认识场景和雾

    一、前言 场景,可以认为是 ThreeJs 3D 世界中的一个舞台,场景允许你在什么地方、摆放什么东西来交给thr...

  • three.js

    threejs官网 三维场景基本要素: 场景(Scene):模型、灯光等 相机(Camera):观察场景的视角 渲...

  • 【ThreeJS】 02 - Scene 场景

    模型: Mesh Line LineSegment Sprite 等模型所有的父对象都是Object3D都可以添加...

  • Threejs 简介

    Threejs 是什么 官网对 Threejs 的介绍非常简单:“Javascript 3D library”。o...

  • Threejs之三大组件

    Threejs的三大组件是场景,相机和渲染器。初学Threejs,完成了第一个样例,效果如下: 代码如下: 1.相...

网友评论

      本文标题:threejs - 3 - 场景刷新

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