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

devtools/2024/10/19 4:21:45/

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

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

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

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

官网提供的案例也只能在Z轴方向旋转180度
3d92b90c38d01a2bab.png" alt="在这里插入图片描述" />

github发现官方案例

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

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

import { TrackballControls } from 'three/addons/controls/TrackballControls.js';controls = new TrackballControls( camera, renderer2.domElement );

吐槽中文文档

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

在这里插入图片描述

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


http://www.ppmy.cn/devtools/57862.html

相关文章

vue3+vite搭建第一个cesium项目详细步骤及环境配置(附源码)

文章目录 1.创建vuevite项目2.安装 Cesium2.1 安装cesium2.2 安装vite-plugin-cesium插件(非必选)2.3 新建组件页面map.vue2.4 加载地图 3.完成效果图 1.创建vuevite项目 打开cmd窗口执行以下命令:cesium-vue-app是你的项目名称 npm create…

唤醒知识循环,共筑绿色阅读梦——探索旧书回收小程序的无限可能

在这个信息爆炸的时代,书籍作为知识与智慧的载体,其重要性不言而喻。然而,随着电子阅读的兴起和书籍更新换代的加速,大量旧书被束之高阁,甚至面临被遗弃的命运。这不仅是对宝贵文化资源的浪费,也是对环境保…

vscode 快捷键

Visual Studio Code 快捷键大全(最全)-CSDN博客

C++:申明Declaration与定义Definition的本质与区别

在C中,声明和定义是两个不同的概念。 声明(Declaration) 声明是告诉编译器关于变量、函数等的存在以及它们的类型,但并不提供实际的存储空间或函数体。例如,你可以在程序的不同位置声明一个函数或者类,以…

第一次面试的经历(java开发实习生)

面试官的问题 我想问一下你这边有做过什么项目吗?你方便讲一下你做过的那些项目吗,用了什么技术栈,包括你负责开发的内容是什么?(项目经验)八大基本数据类型是什么?(基础)你说一下…

01 Web基础与HTTP协议

1.1 Web 基础 本章将介绍 Web 基础知识,包括域名的概念、DNS 原理、静态网页和动态网页的相关知识。 1.1.1.域名概述 1.域名的概念 ip地址不易记忆 2.早期使用host文件解析域名 主机名重复主机维护困难 3.DNS 分布式层次式 4.域名空间结构 根域顶级域 组…

百日筑基第十四天-java多线程编程浅学一下2-守护线程、线程同步、同步方法

百日筑基第十四天-java多线程编程浅学一下2-守护线程、线程同步、同步方法 守护线程 Java程序入口就是由JVM启动main线程,main线程又可以启动其他线程。当所有线程都运行结束时,JVM退出,进程结束。 如果有一个线程没有退出,JVM…

如何压缩视频大小,怎么压缩视频

随着科技的进步,我们拍摄的视频质量越来越高。然而,视频带来的一个问题是文件体积巨大,这不仅占用大量存储空间,而且在传输和分享时也造成了不小的困扰。别担心,本文将为你详细介绍几种实用的视频压缩方法,…