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

相关推荐
珹洺3 分钟前
Bootstrap-HTML(二)深入探索容器,网格系统和排版
前端·css·bootstrap·html·dubbo
BillKu4 分钟前
VS Code HTML CSS Support 插件详解
前端·css·html
xixixin_10 分钟前
【React】中 Body 类限定法:优雅覆盖挂载到 body 的组件样式
前端·javascript·react.js
换日线°15 分钟前
NFC标签打开微信小程序
前端·微信小程序
张3蜂2 小时前
Python 四大 Web 框架对比解析:FastAPI、Django、Flask 与 Tornado
前端·python·fastapi
南风知我意9572 小时前
【前端面试5】手写Function原型方法
前端·面试·职场和发展
qq_12498707532 小时前
基于Java Web的城市花园小区维修管理系统的设计与实现(源码+论文+部署+安装)
java·开发语言·前端·spring boot·spring·毕业设计·计算机毕业设计
摘星编程2 小时前
用React Native开发OpenHarmony应用:Image网络图片加载
javascript·react native·react.js
摘星编程2 小时前
OpenHarmony环境下React Native:ImageBase64图片显示
javascript·react native·react.js
阿蒙Amon2 小时前
TypeScript学习-第13章:实战与最佳实践
javascript·学习·typescript