three.js添加鼠標交互

目前主要是引入OrbitControls.js進行控制

 

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="../js/three.min.js"></script>
    <script src="../js/OrbitControls.js"></script>  <!--引入控制js,可以旋轉視角-->

    <link rel="stylesheet" href="../css/common.css">
</head>
<body>
<div class="ys-absolute-container" id="box" style="overflow: hidden"></div>
<!--<script src="../js/init_bak.js"></script>-->
<script>

        var scene=new THREE.Scene()
        let ele=document.getElementById('box')
        let width=ele.clientWidth
        let height=ele.clientHeight
        var camera=new THREE.PerspectiveCamera(45,width/height,1,1000)  //視角 寬高比 近平面距離

        camera.position.set(20,20,20) //相機的位置
        camera.lookAt(0,0,0)
        //創建渲染器
        let renderer=new THREE.WebGLRenderer({
            antialias:true
        })
        renderer.setSize(width, height);
        ele.appendChild(renderer.domElement); //將dom加入
        renderer.setClearColor('#B4D3BA');

    /*添加box*/
       var box = new THREE.Mesh(
           new THREE.BoxGeometry(2,2,2),
           new THREE.MeshBasicMaterial({
               color: 0xffff00,
               // wireframe:true
           })
       );
       box.position.set(0,0,0);
       scene.add(box);
       //座標軸輔助
       var axes = new THREE.AxesHelper(10); //紅x 綠y 藍z
       scene.add(axes);
        renderer.render( scene, camera );
        
        function initControls(scene,camera,renderer) {
            const controls = new THREE.OrbitControls( camera, renderer.domElement );
            // 如果使用animate方法時,將此函數刪除
             controls.addEventListener( 'change', ()=>{
                 renderer.render( scene, camera );
             });
            // // 使動畫循環使用時阻尼或自轉 意思是否有慣性
            // controls.enableDamping = true;
            // //動態阻尼係數 就是鼠標拖拽旋轉靈敏度
            // //controls.dampingFactor = 0.25;
            // //是否可以縮放
            // controls.enableZoom = true;
            // //是否自動旋轉
            // controls.autoRotate = true;
            // controls.autoRotateSpeed = 0.5;
            // //設置相機距離原點的最遠距離
            // controls.minDistance  = 1;
            // //設置相機距離原點的最遠距離
            // controls.maxDistance  = 200;
            // //是否開啓右鍵拖拽
             //controls.enablePan = true;
            return controls
        }
        var controls = initControls(scene,camera,renderer)

        controls.update()

</script>
</body>
</html>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章