【three.js第三課】鼠標事件,移動、旋轉物體

1.下載three.js的源碼包後,文件夾結構如下:

 

2.在【three.js第一課】的代碼基礎上,引入OrbitControls.js文件,此文件主要用於 對鼠標的操作。

該文件位置:在文件結構中

找到【examples】文件夾,進入;

找到其中的【js】文件夾,進入;

找到其中的【controls】文件夾,進入後即可找到【OrbitControls.js】文件;

我的引入文件如下:

<script src="jquery.min.js"></script>
<script src="../build/three.js"></script>
<script src="../examples/js/controls/OrbitControls.js"></script>

3.在【three.js第二課】代碼中加入:

 //軌道控制 鏡頭的移動
 var controls = new THREE.OrbitControls(camera,renderer.document);

4.預覽即可。

   【長按鼠標左鍵拖動】:旋轉物體

   【長按鼠標右鍵拖動】:移動物體

   【滑動鼠標滾輪】:放大縮小物體

    由於【three.js第二課】代碼中物體會自動旋轉,若要停止,只需要將一下代碼註釋即可:


        //邏輯
        var update=function(){
            //物體隨着XY軸旋轉
            //cube.rotation.x +=0.01;//註釋,停止自轉
            //cube.rotation.y += 0.005;//註釋,停止自轉
        }

 

5.整體代碼:

<!DOCTYPE html>
<html>
<head>
    <title>demo1</title>
</head>
<style type="text/css">
   body{
        margin:0;
   }
   canvas{
        width:100%;
        height:100%;
   }
</style>
<body>
    <script src="jquery.min.js"></script>
    <script src="../build/three.js"></script>
    <script src="../examples/js/controls/OrbitControls.js"></script>
    <script type="text/javascript"> 
        var scene = new THREE.Scene();//創建場景
        //創建一個攝像機對象
        var camera = new THREE.PerspectiveCamera(75,window.innerWidth / window.innerHeight, 0.1, 1000);

         //創建渲染器
        var renderer = new THREE.WebGLRenderer();
        renderer.setSize(window.innerWidth, window.innerHeight);
       
        document.body.appendChild(renderer.domElement);//渲染到瀏覽器

        //加入事件監聽器,窗口自適應
        window.addEventListener('resize', function(){
            var width = window.innerWidth;
            var height = window.innerHeight;
            renderer.setSize(width,height);
            camera.aspect = width/height;
            camera.updateProjectionMatrix();
        })

        //軌道控制 鏡頭的移動
        var controls = new THREE.OrbitControls(camera,renderer.document);

        //創建形狀 BoxGeometry
        var geometry = new THREE.BoxGeometry(1,1,1);
        var geometry1 = new THREE.BoxGeometry(1,1,1);


        //創建材料   wireframe是否使用線條
        var material = new THREE.MeshBasicMaterial({color:0xFFFFFF,wireframe:true});
        
        //將材料和形狀結合
        var cube = new THREE.Mesh(geometry,material);
        
        //加入場景中
        scene.add(cube);

        camera.position.z=3;//設置相機的位置


        //邏輯
        var update=function(){
            //物體隨着XY軸旋轉
            cube.rotation.x +=0.01;
            cube.rotation.y += 0.005;
        }

        //繪畫渲染
        var render=function() {
            renderer.render(scene,camera);
        }

        //循環運行update,render
        var loop=function() {
             requestAnimationFrame(loop);
             update();
             render();
        }

        loop();//循環開始
    </script>
</body>
</html>

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