STL装载机一直在旋转

STL装载机一直在旋转,stl,3d,Stl,3d,我使用的是three.min.js,工作非常漂亮,但是模型一直在旋转。如何停止它并允许用户手动旋转?旋转也偏离了中心,有办法解决这个问题吗 <script> if (!Detector.webgl) Detector.addGetWebGLMessage(); var container, stats; var camera, cameraTarget, scene, renderer;

我使用的是three.min.js,工作非常漂亮,但是模型一直在旋转。如何停止它并允许用户手动旋转?旋转也偏离了中心,有办法解决这个问题吗

<script>
            if (!Detector.webgl) Detector.addGetWebGLMessage();
            var container, stats;
            var camera, cameraTarget, scene, renderer;
            init();
            animate();
            function init() {
                container = document.createElement('div');
                document.body.appendChild(container);
                camera = new THREE.PerspectiveCamera(35, window.innerWidth / window.innerHeight, 1, 15);
                camera.position.set(3, 0.15, 3);
                cameraTarget = new THREE.Vector3(0, -0.25, 0);
                scene = new THREE.Scene();
                scene.fog = new THREE.Fog(0x72645b, 2, 15);
                // Ground
                var plane = new THREE.Mesh(
                    new THREE.PlaneBufferGeometry(40, 40),
                    new THREE.MeshPhongMaterial({ color: 0x999999, specular: 0x101010 })
                );
                plane.rotation.x = -Math.PI / 2;
                plane.position.y = -0.5;
                scene.add(plane);
                plane.receiveShadow = true;

                var loader = new THREE.STLLoader();

                // Binary files
                var material = new THREE.MeshPhongMaterial({ color: 0xAAAAAA, specular: 0x111111, shininess: 200 });
                loader.load('/productimages/mannequin.stl', function (geometry) {
                    var mesh = new THREE.Mesh(geometry, material);
                    mesh.position.set(0, -0.37, -0.6);
                    mesh.rotation.set(-Math.PI / 2, 0, 0);
                    mesh.scale.set(0.2, 0.2, 0.2);
                    mesh.castShadow = true;
                    mesh.receiveShadow = true;
                    scene.add(mesh);
                });

                // Lights
                scene.add(new THREE.AmbientLight(0x777777));
                addShadowedLight(1, 1, 1, 0xffffff, 1.35);
                addShadowedLight(0.5, 1, -1, 0xffaa00, 1);
                // renderer
                renderer = new THREE.WebGLRenderer({ antialias: true });
                renderer.setClearColor(scene.fog.color);
                renderer.setPixelRatio(window.devicePixelRatio);
                renderer.setSize(window.innerWidth, window.innerHeight);
                renderer.gammaInput = true;
                renderer.gammaOutput = true;
                renderer.shadowMapEnabled = true;
                renderer.shadowMapCullFace = THREE.CullFaceBack;
                container.appendChild(renderer.domElement);
                // stats
                stats = new Stats();
                stats.domElement.style.position = 'absolute';
                stats.domElement.style.top = '0px';
                container.appendChild(stats.domElement);
                //
                window.addEventListener('resize', onWindowResize, false);
            }
            function addShadowedLight(x, y, z, color, intensity) {
                var directionalLight = new THREE.DirectionalLight(color, intensity);
                directionalLight.position.set(x, y, z)
                scene.add(directionalLight);
                directionalLight.castShadow = true;
                // directionalLight.shadowCameraVisible = true;
                var d = 1;
                directionalLight.shadowCameraLeft = -d;
                directionalLight.shadowCameraRight = d;
                directionalLight.shadowCameraTop = d;
                directionalLight.shadowCameraBottom = -d;
                directionalLight.shadowCameraNear = 1;
                directionalLight.shadowCameraFar = 4;
                directionalLight.shadowMapWidth = 1024;
                directionalLight.shadowMapHeight = 1024;
                directionalLight.shadowBias = -0.005;
                directionalLight.shadowDarkness = 0.15;
            }
            function onWindowResize() {
                camera.aspect = window.innerWidth / window.innerHeight;
                camera.updateProjectionMatrix();
                renderer.setSize(window.innerWidth, window.innerHeight);
            }
            function animate() {
                requestAnimationFrame(animate);
                render();
                stats.update();
            }
            function render() {
                var timer = Date.now() * 0.0005;
                camera.position.x = Math.cos(timer) * 3;
                camera.position.z = Math.sin(timer) * 3;
                camera.lookAt(cameraTarget);
                renderer.render(scene, camera);
            }
        </script>

如果(!Detector.webgl)Detector.addGetWebGLMessage();
var容器,stats;
var摄影机、摄影机目标、场景、渲染器;
init();
制作动画();
函数init(){
container=document.createElement('div');
文件.正文.附件(容器);
摄像头=新的三个透视摄像头(35,window.innerWidth/window.innerHeight,1,15);
摄像机位置设置(3,0.15,3);
摄像机目标=新的三个矢量3(0,-0.25,0);
场景=新的三个。场景();
scene.fog=新的3.fog(0x72645b,2,15);
//地面
var平面=新的三点网格(
新的3.平面缓冲几何体(40,40),
新的三点网格材质({颜色:0x999999,镜面反射:0x101010})
);
plane.rotation.x=-Math.PI/2;
平面位置y=-0.5;
场景。添加(平面);
plane.receiveShadow=true;
var loader=new THREE.STLLoader();
//二进制文件
var material=新的3.MeshPhongMaterial({颜色:0xAAAAAA,镜面反射:0x111111,光泽度:200});
loader.load('/productimages/mannquin.stl',函数(几何体){
var mesh=新的三个网格(几何体、材质);
网格位置设置(0,-0.37,-0.6);
mesh.rotation.set(-Math.PI/2,0,0);
网格缩放设置(0.2,0.2,0.2);
mesh.castShadow=true;
mesh.receiveShadow=true;
场景。添加(网格);
});
//灯光
添加(新的三个环境光(0x777777));
添加阴影灯(1,1,1,0xffffff,1.35);
添加阴影灯(0.5,1,-1,0xffaa00,1);
//渲染器
renderer=new THREE.WebGLRenderer({antialas:true});
renderer.setClearColor(scene.fog.color);
renderer.setPixelRatio(window.devicePixelRatio);
renderer.setSize(window.innerWidth、window.innerHeight);
renderer.gammaInput=true;
renderer.gammaOutput=true;
renderer.shadowMapEnabled=true;
renderer.shadowMapCullFace=3.CullFaceBack;
container.appendChild(renderer.domeElement);
//统计数据
统计数据=新统计数据();
stats.domElement.style.position='绝对';
stats.domElement.style.top='0px';
container.appendChild(stats.domeElement);
//
addEventListener('resize',onWindowResize,false);
}
函数addShadowedLight(x、y、z、颜色、强度){
var directionalLight=新的三个方向光(颜色、强度);
方向灯位置设置(x,y,z)
场景。添加(方向光);
directionalLight.castShadow=真;
//directionalLight.ShadowCameravible=真;
var d=1;
directionalLight.shadowCameraLeft=-d;
directionalLight.shadowCameraRight=d;
directionalLight.shadowCameraTop=d;
directionalLight.shadowCameraBottom=-d;
directionalLight.shadowCameraNear=1;
directionalLight.shadowCameraFar=4;
directionalLight.shadowMapWidth=1024;
directionalLight.shadowMapHeight=1024;
方向光.shadowBias=-0.005;
方向光.阴影暗度=0.15;
}
函数onWindowResize(){
camera.aspect=window.innerWidth/window.innerHeight;
camera.updateProjectMatrix();
renderer.setSize(window.innerWidth、window.innerHeight);
}
函数animate(){
请求动画帧(动画);
render();
stats.update();
}
函数render(){
var timer=Date.now()*0.0005;
camera.position.x=数学cos(计时器)*3;
camera.position.z=Math.sin(计时器)*3;
摄像机。注视(摄像机目标);
渲染器。渲染(场景、摄影机);
}

要停止旋转,只需卸下:

var timer = Date.now() * 0.0005;
camera.position.x = Math.cos(timer) * 3;
camera.position.z = Math.sin(timer) * 3;

从“渲染”功能或单击“制作”功能启用此部件。

要停止旋转,只需删除:

var timer = Date.now() * 0.0005;
camera.position.x = Math.cos(timer) * 3;
camera.position.z = Math.sin(timer) * 3;
从“渲染”函数或“生成”函数中单击以启用此零件