three.js实现3D模型任意方向旋转

因为业务需要,我们在公司官网使用Three.js实现了可鼠标拖动任意旋转的3D旋转模型,可是实现之后发现除了Z轴方向都可以任意旋转,但是Z轴方向最多只能旋转180度。找遍全网也没有找到相关的资料来解释错在了哪一步,最终还是在github仓库中找到使用案例才得以解决。

根据官网案例实现相机控制器

// 设置相机控件轨道控制器OrbitControls
const controls = new OrbitControls(camera, renderer.domElement);
// 如果OrbitControls改变了相机参数,重新调用渲染器渲染三维场景
controls.addEventListener('change', function () {
    renderer.render(scene, camera); //执行渲染操作
});//监听鼠标、键盘事件

在这里插入图片描述
发现Z轴方向无法任意旋转,只能旋转180度,找遍文档只有如下解释,其他平台也没找到有价值的信息
在这里插入图片描述

官网提供的案例也只能在Z轴方向旋转180度
在这里插入图片描述

github发现官方案例

无奈之余只能上github看一手源码寻求解决办法,最终发现官方提供了案例演示
在这里插入图片描述
一个一个体验,发现这个案例可以实现3D模型任意方向滚动,完美符合需求
在这里插入图片描述
在这里插入图片描述
赶紧看案例源码,发现该案例使用的是TrackballControls相机控制器,而非官网和大多数博文所说的OrbitControls控制器

使用如下代码,完美解决问题:

import { TrackballControls } from 'three/addons/controls/TrackballControls.js';

controls = new TrackballControls( camera, renderer2.domElement );

吐槽中文文档

不得不吐槽的是,中文文档没有一点关于TrackballControls控制器的介绍,只有英文原版文档有相关说明,但是大部分人直接看英文原版文档着实是有些吃力,这就有点让人唏嘘了。所以大家有条件还是看一手资料会比较好一点。
在这里插入图片描述

在这里插入图片描述

写在最后:欢迎大家关注作者微信公众号fever code,获取一手技术分享💪

  • 11
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值