javascript - Web 上的旋转对象

标签 javascript html

我使用 Three.js 将简单的 3D 对象从 blender 加载到网页。我想在时间 TIME 内(在本例中仅“y”轴)将该对象从旋转 vectorSTART 旋转到 vectorEND。我在那里找到了解决方案ThreeJS Rotation Animation但出现错误 TypeError: _easingFunction is not a function (当我单击屏幕时)。我的代码是:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>My first three.js app</title>
        <style>
            body { margin: 0; }
            canvas { width: 100%; height: 100%; display: block; }
        </style>
    </head>
    <body>
        <script src="https://threejs.org/build/three.js"></script>
        <script src="Tween.js"></script>
        <script>
            var object;
            var scene = new THREE.Scene();
            var camera = new THREE.PerspectiveCamera(75, window.innerWidth/window.innerHeight, 0.1, 1000);
            camera.position.z = 5;
            camera.position.y = 0;
            camera.position.x = 0;
            var renderer = new THREE.WebGLRenderer();
            renderer.setSize(window.innerWidth, window.innerHeight);
            document.body.appendChild(renderer.domElement);

            var loader = new THREE.ObjectLoader();
            document.addEventListener('mousedown', onDocumentMouseDown, false);
            loader.load("model(1).json", function ( obj ) {
                object = obj;
                scene.add( object );
                render();
                },
                function ( xhr ) {
                    console.log( (xhr.loaded / xhr.total * 100) + '% loaded' );
                },
                function ( xhr ) {
                    console.error( 'An error happened' );
                }
            );
            var render = function () {
                requestAnimationFrame(render);
                renderer.render(scene, camera);

            };
            function onDocumentMouseDown(){
                animate();
            }
            function animate(){
                //object.rotation.y += 10 *(Math.PI / 180);
                new TWEEN.Tween( object.rotation ).to( {  y:  object.rotation.y + (Math.PI * .18)}, 100 ).easing( TWEEN.Easing.Quadratic.EaseOut).start();
                TWEEN.update();
                console.log("im here");
            }
            render();
        </script>
    </body>
</html>

我不知道为什么它不起作用。不过,我不必使用 TWEEN,如果您知道任何不同的解决方案,那就太好了。

最佳答案

尚未对此进行测试,但 IIRC Tween.JS 的 API 需要“from”和“to”中的可比较值 - 尝试:

new TWEEN.Tween( object.rotation.y ).to( {object.rotation.y + (Math.PI * .18)}, 100 ).easing( TWEEN.Easing.Quadratic.EaseOut).start();

关于javascript - Web 上的旋转对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43298281/

相关文章:

javascript - 将 nsIDOMHTMLSelectElement 作为函数参数传递会导致异常

javascript - 使用 JavaScript 访问缓存响应 header

javascript - 与 react 一起使用时,express 无法获取错误

javascript - 在 JavaScript 中使用递归将数组元素移动到不同位置

Java 到 javascript 的通信 (LiveConnect) 最近中断了?

css - 如何为所有网页制作相同的布局

jquery - 什么会导致内容在页面刷新时恢复?

javascript - Jquery动画高度或宽度导致 float 元素跳跃

html - 如何防止输入中的文本被覆盖

html - 有没有什么办法可以让 aside 元素的高度等于 main 元素的高度?