首先咱們建立一個模型對象javascript
var geometry = new THREE.BoxGeometry( 100, 100, 100); //邊長100的正方體 var material = new THREE.MeshLambertMaterial({ color: 0xFF0000 }); var mesh = new THREE.Mesh(geometry, material); scene.add(mesh);
移動java
接下來咱們嘗試將模型中心移動到 100,100,100的位置canvas
方法1:Mesh對象繼承Object3D對象,調用Object3D對象方法函數
mesh.translateX(100); mesh.translateY(100); mesh.translateZ(100);
方法2:經過直接改變模型position屬性或者經過position屬性的set方法動畫
mesh.position.x = 100; mesh.position.y = 100; mesh.position.z = 100; mesh.position.set(100, 100, 100);
方法3:經過沿着向量 1,1,1移動100個單位spa
mesh.translateOnAxis( new THREE.Vector3( 1, 1, 1 ), 100);
*上面方法3中若是沿着某一貫量移動指定的距離,須要對向量進行歸一化處理,緣由是向量(1,1,1)的長度不爲1,即:插件
//沿着向量1,1,1移動100,而非移動到100,100,100的位置 mesh.translateOnAxis( new THREE.Vector3( 1, 1, 1 ).normalize(), 100);
縮放code
//沿着XYZ分別縮放2倍/1.5倍/2倍 mesh.scale.set(2, 1.5, 2);
旋轉orm
沿着XYZ分別旋轉45°對象
mesh.rotation.x = Math.PI/4; mesh.rotation.y = Math.PI/4; mesh.rotation.z = Math.PI/4;
或者
mesh.rotateX(Math.PI/4) mesh.rotateY(Math.PI/4) mesh.rotateZ(Math.PI/4)
使用鼠標對三維物體的縮放
能夠經過官方的插件OrbitControls實現鼠標對模型控制,方法以下:
引入文件:
<script type="text/javascript" src="./js/OrbitControls.js"></script>
// 渲染函數 function render() { renderer.render(scene, camera); //執行渲染操做 } render(); //建立控件對象 相機對象camera做爲參數 控件能夠監聽鼠標的變化,改變相機對象的屬性 var controls = new THREE.OrbitControls(camera); //監聽鼠標事件,觸發渲染函數,更新canvas畫布渲染效果 controls.addEventListener('change', render);
若是是動畫,則不須要監聽change事件
// 渲染函數 function render() { mesh.rotation.x += 0.01 renderer.render(scene, camera); //執行渲染操做 requestAnimationFrame(render); //下一幀執行代碼 } render(); //建立控件對象 相機對象camera做爲參數 控件能夠監聽鼠標的變化,改變相機對象的屬性 var controls = new THREE.OrbitControls(camera); //監聽鼠標事件,觸發渲染函數,更新canvas畫布渲染效果 // controls.addEventListener('change', render);