当前位置:   article > 正文

ThreeJs 模型的缩放、移动、旋转 以及使用鼠标对三维物体的缩放_threejs限制模型缩放大小

threejs限制模型缩放大小

首先我们创建一个模型对象

  1. var geometry = new THREE.BoxGeometry( 100, 100, 100); //边长100的正方体
  2. var material = new THREE.MeshLambertMaterial({
  3. color: 0xFF0000
  4. });
  5. var mesh = new THREE.Mesh(geometry, material);
  6. scene.add(mesh);

移动

接下来我们尝试将模型中心移动到 100,100,100的位置

方法1:Mesh对象继承Object3D对象,调用Object3D对象方法

  1. mesh.translateX(100);
  2. mesh.translateY(100);
  3. mesh.translateZ(100);

方法2:通过直接改变模型position属性或者通过position属性的set方法

  1. mesh.position.x = 100;
  2. mesh.position.y = 100;
  3. mesh.position.z = 100;
  4. mesh.position.set(100, 100, 100);

方法3:通过沿着向量 1,1,1移动100个单位

mesh.translateOnAxis( new THREE.Vector3( 1, 1, 1 ), 100);

*上面方法3中如果沿着某一向量移动指定的距离,需要对向量进行归一化处理,原因是向量(1,1,1)的长度不为1,即:

  1. //沿着向量111移动100,而非移动到100100100的位置
  2. mesh.translateOnAxis( new THREE.Vector3( 1, 1, 1 ).normalize(), 100);

缩放

  1. //沿着XYZ分别缩放2/1.5/2
  2. mesh.scale.set(2, 1.5, 2);

旋转

  1. // 沿着XYZ分别旋转45°
  2. mesh.rotation.x = Math.PI/4;
  3. mesh.rotation.y = Math.PI/4;
  4. mesh.rotation.z = Math.PI/4;
  5. // 或者
  6. mesh.rotateX(Math.PI/4)
  7. mesh.rotateY(Math.PI/4)
  8. mesh.rotateZ(Math.PI/4)

使用鼠标对三维物体的缩放

可以通过官方的插件OrbitControls实现鼠标对模型控制,方法如下:

  1. // 引入文件:
  2. <script type="text/javascript" src="./js/OrbitControls.js"></script>
  3. // 渲染函数
  4. function render() {
  5. renderer.render(scene, camera); //执行渲染操作
  6. }
  7. render();
  8. //创建控件对象 相机对象camera作为参数 控件可以监听鼠标的变化,改变相机对象的属性
  9. var controls = new THREE.OrbitControls(camera);
  10. //监听鼠标事件,触发渲染函数,更新canvas画布渲染效果
  11. controls.addEventListener('change', render);
  12. 如果是动画,则不需要监听change事件
  13. // 渲染函数
  14. function render() {
  15. mesh.rotation.x += 0.01
  16. renderer.render(scene, camera); //执行渲染操作
  17. requestAnimationFrame(render); //下一帧执行代码
  18. }
  19. render();
  20. //创建控件对象 相机对象camera作为参数 控件可以监听鼠标的变化,改变相机对象的属性
  21. var controls = new THREE.OrbitControls(camera);
  22. //监听鼠标事件,触发渲染函数,更新canvas画布渲染效果
  23. // controls.addEventListener('change', render);

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/91494
推荐阅读
相关标签
  

闽ICP备14008679号