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

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.xdnf.cn/news/19565.html

相关文章:

  • 优秀开源内容转自公众号后端开发成长指南
  • Java-114 深入浅出 MySQL 开源分布式中间件 ShardingSphere 深度解读
  • Linux 文本处理实战手册
  • 销售事业十年规划,并附上一套能帮助销售成长的「软件工具组合」
  • 爬虫实战练习
  • C 基础(1) - 初识C语言
  • 2025年数字化转型关键证书分析与选择指南
  • compile_commands.json 文件详解
  • Linux基础2
  • (3dnr)多帧视频图像去噪 (一)
  • GDAL 简介
  • C++ multiset数据结构的使用情况说明
  • 基于单片机智能饮水机/智能热水壶
  • 正式发布!2025AI SEO公司哪家专业?
  • 【数据分享】多份土地利用矢量shp数据分享-澳门
  • C# FlaUI win 自动化框架,介绍
  • 员工自愿放弃社保,企业给补贴合法吗?
  • Vue3 中 Proxy 在组件封装中的妙用
  • Windows 使用 Compass 访问MongoDb
  • 【HarmonyOS】一步解决弹框集成-快速弹框QuickDialog使用详解
  • 笔记:现代操作系统:原理与实现(1)
  • 卷积神经网络中的两个重要概念——感受野receptive filed和损失函数loss function
  • 【Element Plus `el-select` 下拉菜单响应式定位问题深度解析】
  • 刘洋洋《一笔相思绘红妆》上线,献给当代痴心人的一封情书
  • CUDA编程11 - CUDA异步执行介绍
  • Java 不支持在非静态内部类中声明静态 Static declarations in inner classes are not supported异常处理
  • elasticsearch中文分词器analysis-ik使用
  • Uniapp 生命周期详解:页面生命周期 vs 应用生命周期(附实战示例)
  • 大模型应用开发面试实录:LLM原理、RAG工程与多Agent场景化落地解析
  • gh-pages部署github page项目