在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中,否则页面标签没有渲染完去渲染模型,会报错。

相关推荐
黑云压城After1 小时前
H5使用环信实现视频或语音通话
前端·javascript·vue.js
未来之窗软件服务3 小时前
自己写算法(九)网页数字动画函数——东方仙盟化神期
前端·javascript·算法·仙盟创梦ide·东方仙盟·东方仙盟算法
你的人类朋友3 小时前
什么是断言?
前端·后端·安全
FIN66684 小时前
昂瑞微:实现精准突破,攻坚射频“卡脖子”难题
前端·人工智能·安全·前端框架·信息与通信
椎4954 小时前
苍穹外卖前端nginx错误之一解决
运维·前端·nginx
@。1244 小时前
对于灰度发布(金丝雀发布)的了解
开发语言·前端
我有一棵树4 小时前
前端图片加载失败、 img 出现裂图的原因全解析
前端
FIN66684 小时前
昂瑞微冲刺科创板:硬科技与资本市场的双向奔赴
前端·人工智能·科技·前端框架·智能
im_AMBER4 小时前
杂记 14
前端·笔记·学习·web
牧杉-惊蛰5 小时前
disable-devtool 网络安全 禁止打开控制台
前端·css·vue.js