在react中利用three.js 渲染模型 让鼠标拖拽是模型转动

javascript 复制代码
import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls';

 useEffect(() => {
  // 初始化OrbitControls
  const controls = new OrbitControls(camera, renderer.domElement); 
  // 设置控制参数
  controls.enableDamping = true; // 平滑化运动
  controls.dampingFactor = 0.05;
  controls.screenSpacePanning = false;
  controls.minDistance = 10;
  controls.maxDistance = 200;//缩放最大距离
  controls.minAzimuthAngle = -Math.PI / 4; // 最小方位角
  controls.maxAzimuthAngle = Math.PI / 4; // 最大方位角
  controls.minPolarAngle =-Math.PI/6;; // 允许相机向上看
  controls.maxPolarAngle = Math.PI/3; // 允许相机向下看直到正下方
  controls.addEventListener('start', (event) => {

  });
  controls.addEventListener('end', (event) => {
    console.log('Interaction ended.',event);
   
  });
  // 注册zoom事件
  controls.addEventListener('zoom', function() {
    console.log('Zooming');
 
  });
})

利用OrbitControls 实现模型转动放大缩小等功能,这是three里带的 所以用起来比较顺畅一些。

下面可以设置他放打缩小的限制已经 转动的角度。

所有的代码包括渲染代码我上一篇文章有写到渲染代码。都是写在了useEffect中,否则页面标签没有渲染完去渲染模型,会报错。

相关推荐
我没想到原来他们都是一堆坏人1 分钟前
常用npm源与nrm
前端·npm·node.js
编代码的小王4 分钟前
【无标题】
前端·css
im_AMBER13 分钟前
React 20 useState管理组件状态 | 解构 | 将事件处理函数作为 props 传递 | 状态提升
前端·javascript·笔记·学习·react.js·前端框架
小oo呆13 分钟前
【自然语言处理与大模型】LangChainV1.0入门指南:核心组件Tools
前端·javascript·easyui
亿元程序员18 分钟前
你知道三国志战略版是怎么实现横竖屏动态切换的吗?
前端
BD_Marathon20 分钟前
Vue3_双向绑定
前端·javascript·vue.js
小白学大数据27 分钟前
Temu 商品历史价格趋势爬虫与分析
开发语言·javascript·爬虫·python
霍理迪30 分钟前
CSS复合、关系、属性、伪类选择器
前端·javascript·css
棒棒的唐31 分钟前
Avue2图片上传使用object对象模式时,axios的请求模式用post还是get?
开发语言·前端·javascript·avue