模型空间下的旋转和世界空间下的旋转
在顶点着色器中对模型的顶点进行变换,然后按照老师的思路,下面模型的指针应该是按照x轴进行旋转,unity中是左手系坐标,所以其z轴朝上,y轴朝右
void Rotation(float mask, inout float3 vertex, float offset, float angle) {vertex.y -= offset * mask; //对带有遮罩的时针进行平移float radx = radians(angle * mask);float sinx, cosx = 0;sincos(radx, sinx, cosx);vertex.yz = float2(vertex.y * cosx - vertex.z * sinx, vertex.y * sinx + vertex.z * cosx); vertex.y += offset * mask;}void ClockRotation(float3 color , inout float3 vertex ) {Rotation( color.r, vertex, _MoveOffect, _HourAngle);Rotation( color.g, vertex, _MoveOffect, _MinuteAngle);Rotation( color.b, vertex, _MoveOffect, _SecondAngle);}// 输入结构>>>顶点Shader>>>输出结构VertexOutput vert(VertexInput v) {VertexOutput o = (VertexOutput)0; //对时间针进行顶点变换操作ClockRotation(v.color.rgb, v.vertex.xyz);}
后面发现效果图为:
可以很明显的看到是围绕着z轴在转动,而不是x轴
后面发现是因为在Transform里面调了y轴的转轴,而该顶点坐标是在模型空间下的坐标,而在一开始默认情况下模型空间与时间空间的坐标一致,从而是围绕着x轴进行转动。但后面对于该模型在世界空间下的坐标进行了沿y轴90度角旋转,从而让模型空间下的坐标也沿y轴进行90度转动,从而导致了后面所观看的效果是指针围绕着z轴进行旋转。
对于这种情况就最好是先不对该模型进行空间下的变换,先在已有情况下对顶点处理完后再对其世界空间进行转换。
void Rotation( float mask, inout float3 vertex, float offset, float angle ) {vertex.y -= offset * mask; //对带有遮罩的时针进行平移float radz = radians(angle * mask);float sinz, cosz = 0;sincos(radz, sinz, cosz);//目前该顶点还是在物体空间的顶点数据,没有转换到世界空间下的顶点数据,所以所用的坐标系还是物体坐标系,而组件的坐标系则是世界空间下的坐标系,刚开始的时候默认情况下物体空间下的坐标系和世界空间下的坐标系是一样,但再转变了就不一样了//这里要留意,需要将模型的旋转参数全部初始化规为0,然后再利用目前的进行代码编写来调节参数,最后再改变该模型的整体旋转vertex.xy = float2(vertex.x * cosz - vertex.y * sinz, vertex.x * sinz + vertex.y * cosz); //其旋转参数调节的顺序为:代码利用原默认坐标系进行旋转,然后再是根据组件来旋转模型,因为组件旋转的时候会顺带把物体自身的空间坐标轴也进行相应的旋转vertex.y += offset * mask;}
模型空间下的旋转和世界空间下的旋转相关推荐
- 【Unity鼠标从屏幕空间(坐标)转换为世界空间(坐标)】
Unity鼠标从屏幕空间(坐标)转换为世界空间(坐标) Vector3 screenPos = Camera.main.WorldToScreenPoint(transform.position); ...
- Unity Shader入门精要第七章 基础纹理 凹凸映射之在世界空间下计算
Unity系列文章目录 文章目录 Unity系列文章目录 前言 一.pandas是什么? 二.使用步骤 2.Unity 中的法线纹理类型 参考 前言 现在,我们来实现第二种方法,即在世界空间下计算光照 ...
- UE4 Material 101学习笔记——30-37 植物叶片(透光/mask/面片隐藏/法线调整/AO/渐隐/世界空间色彩/随风舞动)
UE4 Material 101学习笔记--30-37 植物叶片(透光/mask/面片隐藏/法线调整/AO/渐隐/世界空间色彩/随风舞动) Lec30 叶子透光 Foliage Translucenc ...
- GIS空间分析(三)—— GIS环境下的空间分析
GIS环境下的空间分析 A.GIS的发展特征 传统GIS与当代GIS的特征比较 数据 计算 服务 传统GIS 相对静止的量测数据为主体 组件式的功能计算 根据应用需求的软件发开 当代GIS 动态异 ...
- Unity SRP世界空间重建
世界空间重建解决的是:当我们在不透明物体渲染完成,想要知道深度缓存中保存当前渲染的物体的世界空间位置.这个功能还是比较常用的,一些后处理效果比如雾效,ScreenSpace效果都基于此. 重建世界空间 ...
- 渲染管线中几种基础的坐标空间(对象空间、世界空间、相机空间(观察空间)、NDC空间、裁剪空间、屏幕空间)
对象空间 每个模型都有一个其本身的坐标系,比如以它的几何中心为这个空间的坐标原点,这个模型所有顶点的位置属性都是相对于这个原点的坐标值.因此我们称这个空间为 对象空间 (局部空间) 世界空间 我们要把 ...
- Unity UI -- (7) 创建世界空间UI
目前为止,我们已经设计了一个屏幕空间UI(Screen Space UI).一个屏幕空间UI会在屏幕上平坦放置,它会被渲染到环境中所有东西的上面,无论相机位置在哪里. 而一个世界空间UI(World ...
- VMX虚拟机环境下CentOS/Linux扩展磁盘空间,并且增加HOME目录的大小!
转载+修改: tip: 以sda3增加home分区的大小为例.其他类推.通过调节逻辑分区来增加磁盘对应分区的大小的. 1. Vm虚拟机下Linux扩展原有磁盘空间,详细步骤如下: 注意:linux只 ...
- rac下asm管理的表空间-数据文件的重命名
asm下表空间的重命名与普通文件系统下的表空间重命名原理是一样的,只不过asm管理的数据文件有一些需要注意的地方,另外在asm下操作数据文件需要格外小心,稍有不慎将会造成数据文件丢失,如可以做备份最好 ...
最新文章
- 多摄像头实时目标跟踪和计数,使用YOLOv4,Deep SORT和Flask
- commons-lang3之StringUtils
- 为什么新手开车起步总是熄火
- 网络爬虫--8.编码趣闻
- Linux内核中makefile有什么作用?深入解析makefile工作过程和原理
- python xlwt模块下载_python 的xlwt模块
- firefox flash
- 中国网络游戏上市突击大事记
- 人脸识别技术 近期文献整理30篇
- 【HDU2019多校】E - Snowy Smile (最大字段和)
- 【2022国赛模拟】逆天题——生成函数、单位根、Pollard-Rho算法
- 在AID Learning中用IPad或电脑连接手机
- Linux下安装ORACLE(一周成果、全是干货!)
- Android Studio使用签名打包发布APP(安卓生成apk文件)
- 20189200余超 2018-2019-2 移动平台应用开发实践第六周作业
- 联想服务器gpt如何修复,电脑GUID格式GPT硬盘的引导如何修复|GUID的GPT硬盘引导损坏了怎么办-系统城...
- django教程day05
- C++基础入门(超详细)
- 创新型封基破解折价难题
- DICOM:DICOM标准学习路线图(初稿)