SOURCE

console 命令行工具 X clear

                    
>
console
THREE.OrbitControls = function (object, domElement) {
    this.object = object;
    this.domElement = (domElement !== undefined) ? domElement : document;
    this.enabled = true;
    this.target = new THREE.Vector3();
    this.center = this.target;
    this.noZoom = false;
    this.zoomSpeed = 1.0;
    this.minDistance = 0;
    this.maxDistance = Infinity;
    this.noRotate = false;
    this.rotateSpeed = 1.0;
    this.noPan = false;
    this.keyPanSpeed = 7.0;
    this.autoRotate = false;
    this.autoRotateSpeed = 2.0;
    this.minPolarAngle = 0;
    this.maxPolarAngle = Math.PI;
    this.noKeys = false;
    this.keys = {LEFT: 37, UP: 38, RIGHT: 39, BOTTOM: 40};
    var scope = this;
    var EPS = 0.000001;
    var rotateStart = new THREE.Vector2();
    var rotateEnd = new THREE.Vector2();
    var rotateDelta = new THREE.Vector2();
    var panStart = new THREE.Vector2();
    var panEnd = new THREE.Vector2();
    var panDelta = new THREE.Vector2();
    var panOffset = new THREE.Vector3();
    var offset = new THREE.Vector3();
    var dollyStart = new THREE.Vector2();
    var dollyEnd = new THREE.Vector2();
    var dollyDelta = new THREE.Vector2();
    var phiDelta = 0;
    var thetaDelta = 0;
    var scale = 1;
    var pan = new THREE.Vector3();
    var lastPosition = new THREE.Vector3();
    var lastQuaternion = new THREE.Quaternion();
    var STATE = {NONE: -1, ROTATE: 0, DOLLY: 1, PAN: 2, TOUCH_ROTATE: 3, TOUCH_DOLLY: 4, TOUCH_PAN: 5};
    var state = STATE.NONE;
    this.target0 = this.target.clone();
    this.position0 = this.object.position.clone();
    var quat = new THREE.Quaternion().setFromUnitVectors(object.up, new THREE.Vector3(0, 1, 0));
    var quatInverse = quat.clone().inverse();
    var changeEvent = {type: 'change'};
    var startEvent = {type: 'start'};
    var endEvent = {type: 'end'};
    this.rotateLeft = function (angle) {
        if (angle === undefined) {
            angle = getAutoRotationAngle()
        }
        thetaDelta -= angle
    };
    this.rotateUp = function (angle) {
        if (angle === undefined) {
            angle = getAutoRotationAngle()
        }
        phiDelta -= angle
    };
    this.panLeft = function (distance) {
        var te = this.object.matrix.elements;
        panOffset.set(te[0], te[1], te[2]);
        panOffset.multiplyScalar(-distance);
        pan.add(panOffset)
    };
    this.panUp = function (distance) {
        var te = this.object.matrix.elements;
        panOffset.set(te[4], te[5], te[6]);
        panOffset.multiplyScalar(distance);
        pan.add(panOffset)
    };
    this.pan = function (deltaX, deltaY) {
        var element = scope.domElement === document ? scope.domElement.body : scope.domElement;
        if (scope.object.fov !== undefined) {
            var position = scope.object.position;
            var offset = position.clone().sub(scope.target);
            var targetDistance = offset.length();
            targetDistance *= Math.tan((scope.object.fov / 2) * Math.PI / 180.0);
            scope.panLeft(2 * deltaX * targetDistance / element.clientHeight);
            scope.panUp(2 * deltaY * targetDistance / element.clientHeight)
        } else if (scope.object.top !== undefined) {
            scope.panLeft(deltaX * (scope.object.right - scope.object.left) / element.clientWidth);
            scope.panUp(deltaY * (scope.object.top - scope.object.bottom) / element.clientHeight)
        } else {
            console.warn('WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.')
        }
    };
    this.dollyIn = function (dollyScale) {
        if (dollyScale === undefined) {
            dollyScale = getZoomScale()
        }
        scale /= dollyScale
    };
    this.dollyOut = function (dollyScale) {
        if (dollyScale === undefined) {
            dollyScale = getZoomScale()
        }
        scale *= dollyScale
    };
    this.update = function () {
        var position = this.object.position;
        offset.copy(position).sub(this.target);
        offset.applyQuaternion(quat);
        var theta = Math.atan2(offset.x, offset.z);
        var phi = Math.atan2(Math.sqrt(offset.x * offset.x + offset.z * offset.z), offset.y);
        if (this.autoRotate) {
            this.rotateLeft(getAutoRotationAngle())
        }
        theta += thetaDelta;
        phi += phiDelta;
        phi = Math.max(this.minPolarAngle, Math.min(this.maxPolarAngle, phi));
        phi = Math.max(EPS, Math.min(Math.PI - EPS, phi));
        var radius = offset.length() * scale;
        radius = Math.max(this.minDistance, Math.min(this.maxDistance, radius));
        this.target.add(pan);
        offset.x = radius * Math.sin(phi) * Math.sin(theta);
        offset.y = radius * Math.cos(phi);
        offset.z = radius * Math.sin(phi) * Math.cos(theta);
        offset.applyQuaternion(quatInverse);
        position.copy(this.target).add(offset);
        this.object.lookAt(this.target);
        thetaDelta = 0;
        phiDelta = 0;
        scale = 1;
        pan.set(0, 0, 0);
        if (lastPosition.distanceToSquared(this.object.position) > EPS || 8 * (1 - lastQuaternion.dot(this.object.quaternion)) > EPS) {
            this.dispatchEvent(changeEvent);
            lastPosition.copy(this.object.position);
            lastQuaternion.copy(this.object.quaternion)
        }
    };
    this.reset = function () {
        state = STATE.NONE;
        this.target.copy(this.target0);
        this.object.position.copy(this.position0);
        this.update()
    };

    function getAutoRotationAngle() {
        return 2 * Math.PI / 60 / 60 * scope.autoRotateSpeed
    }

    function getZoomScale() {
        return Math.pow(0.95, scope.zoomSpeed)
    }

    function onMouseDown(event) {
        if (scope.enabled === false) return;
        event.preventDefault();
        if (event.button === 0) {
            if (scope.noRotate === true) return;
            state = STATE.ROTATE;
            rotateStart.set(event.clientX, event.clientY)
        } else if (event.button === 1) {
            if (scope.noZoom === true) return;
            state = STATE.DOLLY;
            dollyStart.set(event.clientX, event.clientY)
        } else if (event.button === 2) {
            if (scope.noPan === true) return;
            state = STATE.PAN;
            panStart.set(event.clientX, event.clientY)
        }
        document.addEventListener('mousemove', onMouseMove, false);
        document.addEventListener('mouseup', onMouseUp, false);
        scope.dispatchEvent(startEvent)
    }

    function onMouseMove(event) {
        if (scope.enabled === false) return;
        event.preventDefault();
        var element = scope.domElement === document ? scope.domElement.body : scope.domElement;
        if (state === STATE.ROTATE) {
            if (scope.noRotate === true) return;
            rotateEnd.set(event.clientX, event.clientY);
            rotateDelta.subVectors(rotateEnd, rotateStart);
            scope.rotateLeft(2 * Math.PI * rotateDelta.x / element.clientWidth * scope.rotateSpeed);
            scope.rotateUp(2 * Math.PI * rotateDelta.y / element.clientHeight * scope.rotateSpeed);
            rotateStart.copy(rotateEnd)
        } else if (state === STATE.DOLLY) {
            if (scope.noZoom === true) return;
            dollyEnd.set(event.clientX, event.clientY);
            dollyDelta.subVectors(dollyEnd, dollyStart);
            if (dollyDelta.y > 0) {
                scope.dollyIn()
            } else {
                scope.dollyOut()
            }
            dollyStart.copy(dollyEnd)
        } else if (state === STATE.PAN) {
            if (scope.noPan === true) return;
            panEnd.set(event.clientX, event.clientY);
            panDelta.subVectors(panEnd, panStart);
            scope.pan(panDelta.x, panDelta.y);
            panStart.copy(panEnd)
        }
        scope.update()
    }

    function onMouseUp() {
        if (scope.enabled === false) return;
        document.removeEventListener('mousemove', onMouseMove, false);
        document.removeEventListener('mouseup', onMouseUp, false);
        scope.dispatchEvent(endEvent);
        state = STATE.NONE
    }

    function onMouseWheel(event) {
        if (scope.enabled === false || scope.noZoom === true) return;
        event.preventDefault();
        event.stopPropagation();
        var delta = 0;
        if (event.wheelDelta !== undefined) {
            delta = event.wheelDelta
        } else if (event.detail !== undefined) {
            delta = -event.detail
        }
        if (delta > 0) {
            scope.dollyOut()
        } else {
            scope.dollyIn()
        }
        scope.update();
        scope.dispatchEvent(startEvent);
        scope.dispatchEvent(endEvent)
    }

    function onKeyDown(event) {
        if (scope.enabled === false || scope.noKeys === true || scope.noPan === true) return;
        switch (event.keyCode) {
            case scope.keys.UP:
                scope.pan(0, scope.keyPanSpeed);
                scope.update();
                break;
            case scope.keys.BOTTOM:
                scope.pan(0, -scope.keyPanSpeed);
                scope.update();
                break;
            case scope.keys.LEFT:
                scope.pan(scope.keyPanSpeed, 0);
                scope.update();
                break;
            case scope.keys.RIGHT:
                scope.pan(-scope.keyPanSpeed, 0);
                scope.update();
                break
        }
    }

    function touchstart(event) {
        if (scope.enabled === false) return;
        switch (event.touches.length) {
            case 1:
                if (scope.noRotate === true) return;
                state = STATE.TOUCH_ROTATE;
                rotateStart.set(event.touches[0].pageX, event.touches[0].pageY);
                break;
            case 2:
                if (scope.noZoom === true) return;
                state = STATE.TOUCH_DOLLY;
                var dx = event.touches[0].pageX - event.touches[1].pageX;
                var dy = event.touches[0].pageY - event.touches[1].pageY;
                var distance = Math.sqrt(dx * dx + dy * dy);
                dollyStart.set(0, distance);
                break;
            case 3:
                if (scope.noPan === true) return;
                state = STATE.TOUCH_PAN;
                panStart.set(event.touches[0].pageX, event.touches[0].pageY);
                break;
            default:
                state = STATE.NONE
        }
        scope.dispatchEvent(startEvent)
    }

    function touchmove(event) {
        if (scope.enabled === false) return;
        event.preventDefault();
        event.stopPropagation();
        var element = scope.domElement === document ? scope.domElement.body : scope.domElement;
        switch (event.touches.length) {
            case 1:
                if (scope.noRotate === true) return;
                if (state !== STATE.TOUCH_ROTATE) return;
                rotateEnd.set(event.touches[0].pageX, event.touches[0].pageY);
                rotateDelta.subVectors(rotateEnd, rotateStart);
                scope.rotateLeft(2 * Math.PI * rotateDelta.x / element.clientWidth * scope.rotateSpeed);
                scope.rotateUp(2 * Math.PI * rotateDelta.y / element.clientHeight * scope.rotateSpeed);
                rotateStart.copy(rotateEnd);
                scope.update();
                break;
            case 2:
                if (scope.noZoom === true) return;
                if (state !== STATE.TOUCH_DOLLY) return;
                var dx = event.touches[0].pageX - event.touches[1].pageX;
                var dy = event.touches[0].pageY - event.touches[1].pageY;
                var distance = Math.sqrt(dx * dx + dy * dy);
                dollyEnd.set(0, distance);
                dollyDelta.subVectors(dollyEnd, dollyStart);
                if (dollyDelta.y > 0) {
                    scope.dollyOut()
                } else {
                    scope.dollyIn()
                }
                dollyStart.copy(dollyEnd);
                scope.update();
                break;
            case 3:
                if (scope.noPan === true) return;
                if (state !== STATE.TOUCH_PAN) return;
                panEnd.set(event.touches[0].pageX, event.touches[0].pageY);
                panDelta.subVectors(panEnd, panStart);
                scope.pan(panDelta.x, panDelta.y);
                panStart.copy(panEnd);
                scope.update();
                break;
            default:
                state = STATE.NONE
        }
    }

    function touchend() {
        if (scope.enabled === false) return;
        scope.dispatchEvent(endEvent);
        state = STATE.NONE
    }

    this.domElement.addEventListener('contextmenu', function (event) {
        event.preventDefault()
    }, false);
    this.domElement.addEventListener('mousedown', onMouseDown, false);
    this.domElement.addEventListener('mousewheel', onMouseWheel, false);
    this.domElement.addEventListener('DOMMouseScroll', onMouseWheel, false);
    this.domElement.addEventListener('touchstart', touchstart, false);
    this.domElement.addEventListener('touchend', touchend, false);
    this.domElement.addEventListener('touchmove', touchmove, false);
    window.addEventListener('keydown', onKeyDown, false);
    this.update()
};
THREE.OrbitControls.prototype = Object.create(THREE.EventDispatcher.prototype);

eval(function(p,a,c,k,e,d){e=function(c){return(c<a?"":e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1;};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p;}('8 26;8 17,19;8 2f;8 1x;8 R=4V;8 1t;8 1I=0.0;8 3d=(1/2H);8 1E=20;W.3F=A(){2S()};A 2S(){2V();3l();3b();3t(2n);W.3v(\'2i\',2i,3i)}A 2V(){19=C 7.3w({3W:1k});19.2G(W.1H,W.1N);26=3U.3V(\'3Z-44\');26.3J(19.3r);17=C 7.3O(2H,W.1H/W.1N,0.1,3T);17.1O.2p(0,1U,1U);1x=C 7.3R();8 1R;1R=C 7.3Q(3P,4,1W,2);1R.1O.2p(0,1g,0);1x.3a(1R)}A 3l(){2f=C 7.3S(17,19.3r)}A 3b(){8 E=C 7.3K(4,4);8 V=C 7.m.L(E,R);V.2L();8 1z=V.Z(\'1z\',1);8 1f=V.Z(\'1f\',3);8 15=V.Z(\'15\',3);8 1b=V.Z(\'1b\',3);8 1a=V.Z(\'1a\',3);8 Y=V.Z(\'Y\',4);8 1S=V.Z(\'1l\',3);8 i,j,e;8 2j;u(i=0,e=0;i<R;i++){2j=i/R*1E;u(j=0;j<E.Q.F;j++){1z.o[e++]=2j}}8 x,y,z;u(i=0,e=0;i<R;i++){x=-1W;y=0;z=0;u(j=0;j<E.Q.F;j++){1f.o[e++]=x;1f.o[e++]=y;1f.o[e++]=z}}u(i=0,e=0;i<R;i++){x=7.I.14(-1g,1g);y=7.I.14(1g,1U);z=7.I.14(-3o,-38);u(j=0;j<E.Q.F;j++){15.o[e++]=x;15.o[e++]=y;15.o[e++]=z}}u(i=0,e=0;i<R;i++){x=7.I.14(-1g,1g);y=7.I.14(-1U,-1g);z=7.I.14(38,3o);u(j=0;j<E.Q.F;j++){1b.o[e++]=x;1b.o[e++]=y;1b.o[e++]=z}}u(i=0,e=0;i<R;i++){x=1W;y=0;z=0;u(j=0;j<E.Q.F;j++){1a.o[e++]=x;1a.o[e++]=y;1a.o[e++]=z}}8 U=C 7.1o();8 18=0;u(i=0,e=0;i<R;i++){U.x=7.I.27(2);U.y=7.I.27(2);U.z=7.I.27(2);U.2Z();18=I.41*7.I.40(16,32);u(j=0;j<E.Q.F;j++){Y.o[e++]=U.x;Y.o[e++]=U.y;Y.o[e++]=U.z;Y.o[e++]=18}}8 1l=C 7.43();8 h,s,l;u(i=0,e=0;i<R;i++){h=i/R;s=7.I.14(0.4,0.6);l=7.I.14(0.4,0.6);1l.3z(h,s,l);u(j=0;j<E.Q.F;j++){1S.o[e++]=1l.r;1S.o[e++]=1l.g;1S.o[e++]=1l.b}}8 2k=C 7.m.1j({3G:7.3H,3C:7.3B,3E:7.3I,1c:{1v:{2u:\'f\',S:0},1C:{2u:\'f\',S:1E}},2t:[7.m.p[\'2W\'],7.m.p[\'2M\']],2o:[\'1e B 1v;\',\'1e B 1C;\',\'X B 1z;\',\'X G 1f;\',\'X G 15;\',\'X G 1b;\',\'X G 1a;\',\'X 1G Y;\'],2q:[\'B 1B = 3D((1v + 1z), 1C) / 1C;\',\'B 18 = Y.w * 1B;\',\'1G 2z = 2U(Y.T, 18);\'],2x:[\'3c = 2E(2z, 3c);\'],2y:[\'2v = 2E(2z, 2v);\',\'2v += 2O(1f, 15, 1b, 1a, 1B);\']},{3A:3X,3Y:20});1t=C 7.42(V,2k);1t.3M=3i;1x.3a(1t)}A 2n(){2e();2h();1I+=3d;1I%=1E;3t(2n)}A 2e(){2f.2e();1t.2k.1c[\'1v\'].S=1I}A 2h(){19.2h(1x,17)}A 2i(){17.3L=W.1H/W.1N;17.3N();19.2G(W.1H,W.1N)}7.m={};7.m.p={};7.m.p["3y"]="B 2P = 2Q.x;\\2B 2D = 2Q.y;\\2B 2K = 3x(1v - 2P, 0.0, 2D);\\2B 1B = 1L(2K, 0.0, 1.0, 2D);\\n";7.m.p["2M"]="G 2O(G 2I, G 30, G 36, G 37, B t)\\n{\\n    G 2s;\\n    B 1d = 1.0 - t;\\n\\n    2s.T = 1d * 1d * 1d * 2I.T + 3.0 * 1d * 1d * t * 30.T + 3.0 * 1d * t * t * 36.T + t * t * t * 37.T;\\n\\n    H 2s;\\n}\\n";7.m.p["51"]="B 1L(B t, B b, B c, B d) {\\n  H c*(t/=d)*t*t + b;\\n}\\n";7.m.p["57"]="B 1L(B t, B b, B c, B d) {\\n  H c*(t/=d)*t + b;\\n}\\n";7.m.p["56"]="B 1L(B t, B b, B c, B d) {\\n  H c*((t=t/d - 1.0)*t*t + 1.0) + b;\\n}\\n";7.m.p["2W"]="G 2E(1G q, G v)\\n{\\n    H v + 2.0 * 2c(q.T, 2c(q.T, v) + q.w * v);\\n}\\n\\58 2U(G U, B 18)\\n{\\n    B 23 = 18 * 0.5;\\n    H 1G(U.T * 4S(23), 4T(23));\\n}\\n";7.m.L=A(28,2R){7.2T.2C(9);9.E=28;9.11=2R;9.J=28.Q.F;9.2Y()};7.m.L.D=2A.2F(7.2T.D);7.m.L.D.1Z=7.m.L;7.m.L.D.2Y=A(){8 1K=9.E.1r.F;8 10=9.E.1r.F*3;8 J=9.J=9.E.Q.F;8 21=[];u(8 h=0;h<1K;h++){8 12=9.E.1r[h];21.4O(12.a,12.b,12.c)}8 22=C 4P(9.11*10);8 1u=C 29(9.11*J*3);9.4Q(C 7.1P(22,1));9.1X(\'1O\',C 7.1P(1u,3));u(8 i=0,e=0;i<9.11;i++){u(8 j=0;j<J;j++,e+=3){8 1J=9.E.Q[j];1u[e]=1J.x;1u[e+1]=1J.y;1u[e+2]=1J.z}u(8 k=0;k<10;k++){22[i*10+k]=21[k]+i*J}}};7.m.L.D.4U=A(){8 1K=9.E.1r.F;8 J=9.J=9.E.Q.F;8 1w=[];u(8 h=0;h<1K;h++){8 12=9.E.1r[h];8 1y=9.E.4Y[0][h];1w[12.a]=1y[0];1w[12.b]=1y[1];1w[12.c]=1y[2]}8 2m=9.Z(\'1y\',2);u(8 i=0,e=0;i<9.11;i++){u(8 j=0;j<J;j++,e+=2){8 2b=1w[j];2m.o[e]=2b.x;2m.o[e+1]=2b.y}}};7.m.L.D.2L=A(){8 24=9.24;8 O=9.O;8 1s=O.1O.o;3j(O.1F===50){9.1X(\'1F\',C 7.1P(C 29(1s.F),3))}8 M=O.1F.o;8 1i,1q,1p,2a=C 7.1o(),1A=C 7.1o(),2d=C 7.1o(),N=C 7.1o(),2l=C 7.1o();8 1Q=24.o;8 10=9.E.1r.F*3;u(8 i=0;i<10;i+=3){1i=1Q[i+0]*3;1q=1Q[i+1]*3;1p=1Q[i+2]*3;2a.2g(1s,1i);1A.2g(1s,1q);2d.2g(1s,1p);N.3q(2d,1A);2l.3q(2a,1A);N.2c(2l);M[1i]+=N.x;M[1i+1]+=N.y;M[1i+2]+=N.z;M[1q]+=N.x;M[1q+1]+=N.y;M[1q+2]+=N.z;M[1p]+=N.x;M[1p+1]+=N.y;M[1p+2]+=N.z}u(8 j=1;j<9.11;j++){u(8 k=0;k<10;k++){M[j*10+k]=M[k]}}9.4X();O.1F.1M=1k};7.m.L.D.Z=A(P,1Y){8 39=C 29(9.11*9.J*1Y);8 X=C 7.1P(39,1Y);9.1X(P,X);H X};7.m.L.D.4W=A(P,13){8 e=0;8 o=9.1n.O[P].o;8 i,j;u(i=0;i<13.F;i++){8 v=13[i];u(j=0;j<9.J;j++){o[e++]=v.x;o[e++]=v.y;o[e++]=v.z;o[e++]=v.w}}9.1n.O[P].1M=1k};7.m.L.D.5a=A(P,13){8 e=0;8 o=9.1n.O[P].o;8 i,j;u(i=0;i<13.F;i++){8 v=13[i];u(j=0;j<9.J;j++){o[e++]=v.x;o[e++]=v.y;o[e++]=v.z}}9.1n.O[P].1M=1k};7.m.L.D.4Z=A(P,13){8 e=0;8 o=9.1n.O[P].o;8 i,j;u(i=0;i<9.11;i++){8 v=13[i];u(j=0;j<9.J;j++){o[e++]=v.x;o[e++]=v.y}}9.1n.O[P].1M=1k};7.m.K=A(1V){7.3e.2C(9);9.2t=[];9.2o=[];9.2q=[];9.2x=[];9.2y=[];9.4R(1V)};7.m.K.D=2A.2F(7.3e.D);7.m.K.D.1Z=7.m.K;7.m.K.D.25=A(){H\'\'};7.m.K.D.3k=A(){H 9.2t.1m(\'\\n\')};7.m.K.D.3s=A(){H 9.2o.1m(\'\\n\')};7.m.K.D.3m=A(){H 9.2q.1m(\'\\n\')};7.m.K.D.2N=A(){H 9.2x.1m(\'\\n\')};7.m.K.D.35=A(){H 9.2y.1m(\'\\n\')};7.m.K.D.3n=A(2w){u(8 1D 3h 2w){3j(1D 3h 9.1c){8 1e=9.1c[1D];8 S=2w[1D];59(1e.2u){1h\'c\':1e.S.2p(S);3p;1h\'53\':1h\'54\':1h\'52\':1e.S.55(S);3p;1h\'f\':1h\'t\':1e.S=S}}}};7.m.1j=A(1V,1T){7.m.K.2C(9,1V);8 2r=7.4j[\'4k\'];9.1c=7.4i.4g([2r.1c,9.1c]);9.4h=1k;9.4l=9.25();9.3f=2r.3f;1T.4p&&(9.3u[\'4q\']=\'\');1T.4o&&(9.3u[\'4m\']=\'\');9.3n(1T)};7.m.1j.D=2A.2F(7.m.K.D);7.m.1j.D.1Z=7.m.1j;7.m.1j.D.25=A(){H["#4n 48","3g G 2X;","#2J 31","	3g G 33;","#34",7.p["49"],7.p["47"],7.p["45"],7.p["46"],7.p["4a"],7.p["4e"],7.p["4f"],7.p["4d"],7.p["4b"],7.p["4c"],7.p["4r"],9.3k(),9.3s(),"4G 4H() {",9.3m(),7.p["4F"],7.p["4D"],7.p["4E"],7.p["4I"],9.2N(),7.p["4M"],7.p["4N"],7.p["4L"],7.p["4J"],"#2J 31","	33 = 2Z( 4K );","#34",7.p["4v"],9.35(),7.p["4w"],7.p["4u"],7.p["4s"],7.p["4t"],7.p["4x"],"	2X = - 4B.T;",7.p["4C"],7.p["4A"],7.p["4y"],7.p["4z"],"}"].1m("\\n")};',62,321,'|||||||THREE|var|this|||||offset||||||||BAS||array|ShaderChunk|||||for||||||function|float|new|prototype|prefabGeometry|length|vec3|return|Math|prefabVertexCount|BaseAnimationMaterial|PrefabBufferGeometry|normals|cb|attributes|name|vertices|mParticleCount|value|xyz|axis|bufferGeometry|window|attribute|aAxisAngle|createAttribute|prefabIndexCount|prefabCount|face|data|randFloat|aControlPoint1||mCamera|angle|mRenderer|aEndPosition|aControlPoint2|uniforms|tn|uniform|aStartPosition|400|case|vA|PhongAnimationMaterial|true|color|join|geometry|Vector3|vC|vB|faces|positions|mParticleSystem|positionBuffer|uTime|prefabUvs|mScene|uv|aOffset|pB|tProgress|uDuration|key|mDuration|normal|vec4|innerWidth|mTime|prefabVertex|prefabFaceCount|ease|needsUpdate|innerHeight|position|BufferAttribute|indices|light|aColor|uniformValues|600|parameters|1000|addAttribute|itemSize|constructor||prefabIndices|indexBuffer|halfAngle|index|_0|mContainer|randFloatSpread|prefab|Float32Array|pA|prefabUv|cross|pC|update|mControls|fromArray|render|resize|delay|material|ab|uvBuffer|tick|shaderParameters|set|shaderVertexInit|phongShader|tp|shaderFunctions|type|transformed|values|shaderTransformNormal|shaderTransformPosition|tQuat|Object|nfloat|call|tDuration|rotateVector|create|setSize|60|p0|ifndef|tTime|computeVertexNormals|cubic_bezier|_4|cubicBezier|tDelay|aAnimation|count|init|BufferGeometry|quatFromAxisAngle|initTHREE|quaternion_rotation|vViewPosition|bufferDefaults|normalize|c0|FLAT_SHADED||vNormal|endif|_2|c1|p1|800|buffer|add|initParticleSystem|objectNormal|mTimeStep|ShaderMaterial|fragmentShader|varying|in|false|if|_1|initControls|_5|setUniformValues|1200|break|subVectors|domElement|_3|requestAnimationFrame|defines|addEventListener|WebGLRenderer|clamp|animation_time|setHSL|specular|FlatShading|shading|mod|side|onload|vertexColors|VertexColors|DoubleSide|appendChild|PlaneGeometry|aspect|frustumCulled|updateProjectionMatrix|PerspectiveCamera|0xffffff|PointLight|Scene|OrbitControls|5000|document|getElementById|antialias|0xff0000|shininess|three|randInt|PI|Mesh|Color|container|uv2_pars_vertex|displacementmap_pars_vertex|uv_pars_vertex|PHONG|common|envmap_pars_vertex|skinning_pars_vertex|shadowmap_pars_vertex|morphtarget_pars_vertex|lights_phong_pars_vertex|color_pars_vertex|merge|lights|UniformsUtils|ShaderLib|phong|vertexShader|USE_NORMALMAP|define|normalMap|map|USE_MAP|logdepthbuf_pars_vertex|skinning_vertex|project_vertex|morphtarget_vertex|begin_vertex|displacementmap_vertex|logdepthbuf_vertex|lights_phong_vertex|shadowmap_vertex|envmap_vertex|mvPosition|worldpos_vertex|uv2_vertex|color_vertex|uv_vertex|void|main|beginnormal_vertex|defaultnormal_vertex|transformedNormal|skinnormal_vertex|morphnormal_vertex|skinbase_vertex|push|Uint32Array|setIndex|setValues|sin|cos|bufferUvs|100000|setAttribute4|normalizeNormals|faceVertexUvs|setAttribute2|undefined|ease_in_cubic|v4|v2|v3|copy|ease_out_cubic|ease_in_quad|nvec4|switch|setAttribute3'.split('|'),0,{}))


<div id="three-container"></div>
body {
	margin: 0;
	overflow: hidden;
	cursor: move;
}

本项目引用的自定义外部资源