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

6.自定义相机控制器

愿你出走半生,归来仍是少年!

        Cesium For Unity自带的Dynamic Camera,拥有优秀的动态展示效果,但是其对于场景的交互方式用起来不是很舒服。

        通过模仿Cesium JS 的交互方式,实现在Unity中的交互:

  • 通过鼠标左键拖拽实现场景平移
  • 通过滚轮滑动实现场景的缩放
  • 通过滚轮按下拖拽实现旋转

1.平移

        通过鼠标左键的按下和弹起标记是否进行平移拖拽,拖拽期间将鼠标在上一帧和当前帧的坐标进行比较得出移动向量,用相机的当前位置减去移动向量得出相机新的位置。通过相机的反向移动实现场景的正向移动。

左键平移效果

2.缩放

        网上有很多通过鼠标滚轮进行场景缩放的文章,但是都存在相机位置不同时缩放速度相同的情况,在实际的三维场景缩放中会出现相机距地远近不同时缩放太慢或太快的情况。

        通过获取屏幕中心点的坐标,计算相机与其距离,每次滚轮缩放时相机位置增加距离的十分之一,实现根据屏幕中心的距离缩放。

滚轮缩放效果

3.旋转

        Cesium JS中旋转是通过滚轮按下后通过移动鼠标进行旋转,旋转中心为鼠标点击的位置。

        在Unity中通过鼠标滚轮按下时确认此次的旋转中心,并通过鼠标的移动进行旋转。鼠标横向移动则对场景进行水平方向的选择,鼠标纵向移动则对场景进行垂直方向的旋转。

        在计算旋转角度时,可通过屏幕大小设定旋转角度。横向上,半个屏幕宽度为360°的水平旋转;纵向上,半个屏幕高度为180° 的垂直旋转。

滚轮旋转效果

4.总结

        至此,相同于Cesium JS 的相机操作完成。实现了在Windows(android上好像不行)上的平移、缩放、旋转。

http://www.lryc.cn/news/197640.html

相关文章:

  • 一文带你GO语言入门
  • 前后端小项目链接
  • 编辑器功能:用一个快捷键来【锁定】或【解开】Inspector面板
  • Vue 网络处理 - axios 异步请求的使用,请求响应拦截器(最佳实践)
  • 关于W5500网卡使用过程的部分问题记录
  • Unity DOTS World Entity ArchType Component EntityManager System概述
  • 最详细STM32,cubeMX 点亮 led
  • 论文阅读:Image-to-Lidar Self-Supervised Distillation for Autonomous Driving Data
  • 前端版本控制工具,常见的Git 和SVN
  • C++ —— Tinyxml2在Vs2017下相关使用2(较文1更复杂,附源码)
  • 阿里内推强推的并发编程学习笔记,原理+实战+面试题,面面俱到!
  • 域名注册查询流程
  • 【Linux学习笔记】代码编辑工具vim
  • Android Boring SSL
  • 中国人民大学与加拿大女王大学金融硕士项目:开启你的金融精英之路
  • HashSet编程小案例,控制生日和姓名。重写HashCode
  • 虚幻阴影整理
  • MySQL数据库(一)
  • C++11 新特性
  • 排查手机应用app微信登录问题不跳转失败原因汇总及其解决方案
  • 软考高级系统架构设计师系列之:数学与经济管理
  • 基于Scrapyd与Gerapy部署scrapy爬虫方案【可用于分布式爬虫部署】
  • ST-SSL:基于自监督学习的交通流预测模型
  • 如何处理C++中的字符串编码和国际化?
  • DH48WK 温控器参数设置
  • 【文档智能】多模态预训练模型及相关数据集汇总
  • 超全整理,性能测试——数据库索引问题定位+分析(详细)
  • 44springboot摄影跟拍预定管理系统
  • Flink之窗口触发机制及自定义Trigger的使用
  • 蓝牙资讯|2024年智能家居新趋势,蓝牙助力智能家居发展