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>