• Threejs中使用Tweenjs实现动画效果和Tweenjs使用说明文档


    1,Threejs中使用Tweenjs实现动画

    在Threejs中使用Tweenjs很简单,步骤主要是引入Tweenjs,写动画,动画刷新。

    如下示例:

    1. <div id="dom">div>
    2. <script type="text/javascript" src="libs/three.js">script>
    3. <script type="text/javascript" src="libs/Tween.min.js">script>
    4. <script type="text/javascript">
    5. var camera;
    6. var renderer;
    7. function init() {
    8. // 创建一个场景,它将包含我们所有的元素,如物体,相机和灯光。
    9. var scene = new THREE.Scene();
    10. // 创建一个摄像机,它定义了我们正在看的地方
    11. camera = new THREE.PerspectiveCamera(65, window.innerWidth / window.innerHeight, 0.1, 10000);
    12. camera.position.x = 180;
    13. camera.position.y = 80;
    14. camera.position.z = 90;
    15. camera.lookAt(scene.position);
    16. // 创建一个渲染器并设置大小,WebGLRenderer将会使用电脑显卡来渲染场景
    17. renderer = new THREE.WebGLRenderer({
    18. antialias: true,
    19. logarithmicDepthBuffer: true,
    20. });
    21. renderer.setSize(window.innerWidth, window.innerHeight);
    22. // 在屏幕上显示坐标轴
    23. var axes = new THREE.AxesHelper(10000);
    24. scene.add(axes);
    25. var tween = new TWEEN.Tween({x: 10}).to({x: 3}, 10000)
    26. .easing(TWEEN.Easing.Elastic.InOut)
    27. .onUpdate(function(){
    28. console.log(this.x)
    29. })
    30. // .start();
    31. // 将呈现器的输出添加到HTML元素
    32. document.getElementById("dom").appendChild(renderer.domElement);
    33. // 启动动画
    34. renderScene();
    35. function renderScene() {
    36. TWEEN.update();
    37. // 使用requestAnimationFrame函数进行渲染
    38. requestAnimationFrame(renderScene);
    39. renderer.render(scene, camera);
    40. }
    41. // 渲染的场景
    42. renderer.render(scene, camera);
    43. }
    44. window.onload = init;
    45. script>

    2, Tween.js使用说明文档

    Tween.js是一个轻量级的JavaScript库,可以从https://github.com/sole/tween.js/下载。
        通过这个库可以很容易地实现某个属性在两个值之间进行过渡,而且起始值和结束值之间的所有中间值都会自动计算出来,这个过程叫作tweening(补间)。

            var tween = new TWEEN.Tween({x: 10}).to({x: 3}, 10000)
                    .easing(TWEEN.Easing.Elastic.InOut)
                    .onUpdate(function(){
                             // update the mesh
                    })
                    .start();
        
            上述代码创建了TWEEN.Tween对象,这个对象会确保x属性值在10000毫秒内从10变化到3。通过Tween.js,你还可以指定属性值是如何变化的,是线性的、指数性的,还是其他任何可能的方式(完整列表可以参照http://sole.github.io/tween.js/examples/03_graphs.html)。
            属性值在指定时间内的变化被称为easing(缓动),在Tween.js中你可以使用easing()方法来配置缓动效果;

            
            var tweenBack = new TWEEN.Tween({x: 3}).to({x: 10}, 10000);
            tweenBack.easing(TWEEN.Easing.Elastic.InOut);
            tweenBack.chain(tween);
            tweenBack.start();
            
            这个通过chain()方法可以将这两个补间衔接起来,这样当动画启动之后,程序就会在这两个补间循环。例如:一个动画在另一个动画结束后开始。可以通过chain方法来使实现。
        
            tweenBack.repeat(10);
            如果你想制作循环动画可以使用chain来实现,但是更好的方法是使用repeat方法。它接收一个用于描述你想循环多少次。
        
            tweenBack.yoyo();
            ​​​​​​​这个函数只在你使用repeat方法是起作用。当它被激活时,tween 的效果类似yoyo效果。该效果是动画会在开始或结束处向反方向反弹。
        
            tweenBack.delay(1000);
            ​​​​​​​delay方法用于控制动画之间的延时。
        
            TWEEN.add(tween) 和 TWEEN.remove(tween)
            用于向被激活的tweens中添加一个tween,或移除一个tween。
        
            以上方法通常只是在内部使用,一般情况下你了解即可。

  • 相关阅读:
    华为---PPP协议简介及示例配置
    用python来吐槽,真是太会玩啦
    TML+CSS+JS大作业:腾讯课堂首页 1页 侧拉菜单
    金仓数据库KingbaseES本地化支持(5. 字符集)
    【原创】ubuntu18修改IP地址
    共话龙蜥:中国操作系统到底有没有角力世界舞台的实力?
    AI Agent框架(LLM Agent):LLM驱动的智能体如何引领行业变革,应用探索与未来展望
    力扣刷题记录106.1-----322. 零钱兑换
    放大器的稳定性分析举例
    (Tekla Structures二次开发)修改工程属性
  • 原文地址:https://blog.csdn.net/baidu_29701003/article/details/127417382