当前位置: 首页 > news >正文

three.js手机端的4种旋转方式

一、前提介绍:

1、我使用three.js开发了一个webgl程序,在手机端的chrome上运行

2、要求是单指移动、双指缩放。我通过下述代码实现

controls.touches = {ONE: THREE.TOUCH.PAN,//单指平移TWO: THREE.TOUCH.DOLLY_ROTATE//双指旋转和缩放
};

3、下面说的4种旋转方式,都是three.js自带的,只是通过上述代码,变成了双指旋转

二、旋转方式概述

方案序号

交互方式

交互是否正常

存在问题

1

双手各出1个手指

正常

2

一个手出2个手指,同时左右移动

正常

3

一个手出2个手指,一个动,一个不动

50%正常

有个小bug:

屏幕下方的指头不动,屏幕上方的指头动

会出现旋转方向与拨动方向相反的问题

4

一个手出2个手指,2个手指都动

不正常

不跟手,操作费劲,旋转的角度很小

三、四种旋转方式的图解

1、双手各出1个手指(ok)

2、一个手出2个手指,同时左右移动(ok)

3、一个手出2个手指,一个动,一个不动(半ok)

正常操作:

屏幕上方的指头不动,屏幕下方的指头动

异常操作:会导致一个bug:

屏幕下方的指头不动,屏幕上的指头动

会出现旋转方向与拨动方向相反的问题

4、一个手出2个手指,2个手指都动(不ok)

有下面一些问题

a、这个手势操作,感觉费了很大的劲,但是旋转角度却比较小

b、有时候操作的时候,却变成了反方向旋转

c、经常会触发放大操作,形成旋转、放大同时起作用。

四、改进方式

1、熟悉three.js的源码

在现有源码基础上改进

2、自己写手势的旋转功能

上面几种情况,都是2个手指的行为,却被逻辑的分为不同操作行为。

自己写的话,需要写很多手势的定义和判断

3、寻找第3方库来引入

现在的很多操作是依赖于three.js的OrbitControls类来实现。

这个类也是实现手势操作的类。

引入新的第3方库,需要考虑和原有功能的兼容性。

http://www.dtcms.com/a/363913.html

相关文章:

  • 有鹿巡扫机器人:智慧清洁时代的多面手
  • (四)Python控制结构(条件结构)
  • MMORPG 游戏战斗系统架构
  • 2025互联网大厂Java后端面试:3-5年经验必问核心考点解析
  • 机器学习辅助的Backtrader资产配置优化策略
  • 【vue2】vue2.7x的项目中集成tailwind.css真的不要太香
  • Python 类的方法类型详解
  • 企业如何实现零工用工零风险?盖雅全自动化合规管控
  • 望获实时Linux:亚微秒级系统响应的实现方法
  • Qt中字节对齐问题和数据的序列化和反序列化的问题
  • springboot2.x集成swagger api(springdoc-openapi-ui)
  • 开源企业级快速开发平台(JeecgBoot)
  • python - ( js )object对象、json对象、字符串对象的相关方法、数组对象的相关方法、BOM对象、BOM模型中 Navigator 对象
  • 人工智能与强化学习:使用OpenAI Gym进行项目开发
  • Scikit-learn从入门到实践:Scikit-learn入门与实践
  • Scikit-learn从入门到实践:Scikit-learn入门-安装与基础操作
  • SQLynx VS DBeaver:数据库管理工具的两种思路
  • 京东科技大模型RAG岗三轮面试全复盘:从八股到开放题的通关指南
  • 通信中的双工器模型是什么?
  • 《水浒智慧》(第一部:梁山头领那些事儿)读书笔记
  • ARM编译器生成的AXF文件解析
  • 在Linux 2.4.x内核中,如何从一个page找到所有映射该页面的VMA?反向映射可以带来哪些便利?
  • Vue基础知识-localStorage 与 sessionStorage
  • Linux 文本处理三大利器:命令小工具和sed
  • leetcode-每日一题-3025. 人员站位的方案数 I-C语言
  • Web 开发 17
  • Mysql数据库基础(上)
  • MySQL-Undo Log(回滚日志)
  • 【Python3教程】Python3高级篇之多线程
  • 通用的二叉数迭代方法