三个JS:具有Tween效果的居中对象无法正常工作

在带有轨道控制器的三个js中使用Tween函数时,我注意到当我尝试从对象的背面居中放置对象时,补间发生了异常。

您可以使用小提琴链接尝试一下,在该位置将对象旋转到后视图,然后单击“适合屏幕”,对象将离开屏幕并与中心对齐。

有什么方法可以克服它,我想在物体平移并旋转到任何方向时显示其正视图。

请帮我解决这个问题,以使我更好地进行澄清。

以下是与TweenLite https://jsfiddle.net/6r9cjfmz/

的链接

以下是与Tween http://jsfiddle.net/Komsomol/r4nctoxy/

的链接
        console.clear();

        var scene = new THREE.Scene();

        var camera = new THREE.PerspectiveCamera(45,window.innerWidth / window.innerHeight,0.01,700);
        camera.position.set(0,60);

        scene.add(camera);

        var renderer = new THREE.WebGLRenderer({ antialias: true,alpha: true });
        renderer.setSize(window.innerWidth,window.innerHeight);
        document.body.appendChild(renderer.domElement);

        TweenLite.ticker.addEventListener('tick',render);

        var object3d = new THREE.DirectionalLight('white',1);
        object3d.position.set(2.6,1,3);
        object3d.name = 'Back light';
        scene.add(object3d);

        var material = new THREE.MeshLambertMaterial({ side: THREE.DoubleSide,color: '#F00' });

        var object = new THREE.Mesh(new THREE.BoxGeometry(20,20,20),material);
        object.position.set(-10,0);
        object.name = 'Object 1';
        scene.add(object);

        var controls = new THREE.OrbitControls(camera,renderer.domElement);

        controls.rotateSpeed = 3.6;
        controls.zoomSpeed = 0.8;
        controls.panSpeed = 1;

        controls.nozoom = false;
        controls.noPan = false;

        controls.enabled = true;
       // TweenLite.ticker.addEventListener(controls.update);

        var timeline = new TimelineLite({
            onStart: function () {
                TweenLite.ticker.removeEventListener("tick",controls.update);
                controls.enabled = false;
            },onComplete: function () {
                TweenLite.ticker.addEventListener("tick",controls.update);
                controls.position0.copy(camera.position);
                controls.reset();
                controls.enabled = true;
            }
        });
        easing = '';

        camera.reset = function () {

            var pos = { x: 0,y: 0 };
            var distance = 60;
            var speed = 1;

            if (camera.parent !== scene) {
                var pos = camera.position.clone();      
                camera.parent.localToWorld(camera.position);
                scene.add(camera);
            }

            timeline.clear();
            timeline.to(camera.position,speed,{
                x: pos.x,y: pos.y,z: distance,ease: easing
            },0);
            timeline.to(camera.rotation,{ x: 0,y: 0,z: 0,ease: easing },0);


        };



        var startX,startY,$target = $(renderer.domElement),selected;

        function mouseUp(e) {

        }

        function render() {
            renderer.render(scene,camera);
        }
        $(document).ready(function () {
            $(".button").click(function (e) {
                e = e.originalEvent || e;
                e.preventDefault();
                console.log(e)
                console.log(e.touches)

                var pos = { x: 0,z: 0 };
                var distance = 90;
                var speed = 1;

                if (camera.parent !== scene) {
                    var pos = camera.position.clone();
                    camera.parent.localToWorld(camera.position);
                    scene.add(camera);
                }

                timeline.clear();
                timeline.to(camera.position,{
                    x: pos.x,ease: easing
                },0);
                timeline.to(camera.rotation,0);
                // }
            });
        });

        function mouseDown(e) {
            e = e.originalEvent || e;
            startX = (e.touches ? e.touches[0].clientX : e.clientX);
            startY = (e.touches ? e.touches[0].clientY : e.clientY);
        }


        $target.on('mousedown touchend',mouseDown);
xinfeifei1 回答:三个JS:具有Tween效果的居中对象无法正常工作

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3111566.html

大家都在问