Unity3D 旋转矩阵 顶点动画
来源:互联网 发布:淘宝宝贝描述模素材 编辑:程序博客网 时间:2024/06/10 06:26
首先先看一下矩阵旋转公式
其中负责旋转的部分是
负责缩放的部分是
负责平移的部分是
接下来我们来根据旋转的方式写一下旋转的方法
using System.Collections;using System.Collections.Generic;using UnityEngine;public class Twist : MonoBehaviour { private Mesh mesh; private void Start() { //获取mesh 为了得到所有顶点 mesh = GetComponent<MeshFilter>().mesh; } private void Update() { //将顶点坐标存入到数组中 Vector3[] vectors = mesh.vertices; //新建一个数组存取旋转后的顶点坐标 Vector3[] results = new Vector3[vectors.Length]; //设置一个旋转角度 float angle = Input.GetAxis("Horizontal") * Time.deltaTime * 100; for (int i = 0; i < vectors.Length; i++) { //因为直接给angle 所有点旋转角度一样 所以*上vectors[i].y //这个是调用围绕Y轴旋转 results[i] = DoTwistY(vectors[i], angle * vectors[i].y); } //将旋转后的顶点坐标再赋值给mesh的顶点 mesh.vertices = results; } //围绕着X轴旋转 Vector3 DoTwistX(Vector3 Position, float angle) { Vector3 result = Vector3.zero; float CosAngle = Mathf.Cos(angle); float SinAngle = Mathf.Sin(angle); result.x = Position.x; result.y = Position.y * CosAngle + SinAngle * Position.z; result.z = -Position.y * SinAngle + CosAngle * Position.z; return result; } //围绕着Y轴旋转 Vector3 DoTwistY(Vector3 Position,float angle) { Vector3 result = Vector3.zero; float CosAngle = Mathf.Cos(angle); float SinAngle = Mathf.Sin(angle); result.x = Position.x * CosAngle - SinAngle * Position.z; result.y = Position.y; result.z = Position.x * SinAngle + CosAngle * Position.z; return result; } //围绕Z轴旋转 Vector3 DoTwistZ(Vector3 Position, float angle) { Vector3 result = Vector3.zero; float CosAngle = Mathf.Cos(angle); float SinAngle = Mathf.Sin(angle); result.x = Position.x * CosAngle + SinAngle * Position.y; result.y = -Position.x * SinAngle + CosAngle * Position.y; result.z = Position.z; return result; }}
总结:
1.围绕着哪个轴旋转,哪个轴上的坐标就保持不变
2.第一行代表旋转后的x轴,第二行代表旋转后的y轴,第三行代表旋转后的z轴
3.第一列代表x轴,第二列代表y轴,第三列代表z轴
4.计算公式就是永远有的x,y,z乘上相对应的变化值相加变得出对应的轴的坐标
阅读全文
1 0
- Unity3D 旋转矩阵 顶点动画
- Unity3d 实现顶点动画
- unity3d四元数和旋转矩阵
- unity3d四元数和旋转矩阵
- unity3d四元数和旋转矩阵
- unity3d四元数和旋转矩阵
- unity3d四元数和旋转矩阵
- unity3d四元数和旋转矩阵
- unity3d中水草海草摇动效果顶点动画材质
- UNITY3D shader代码例子<三> shader旋转动画
- Unity3D 几个基本动画(控制物体移动、旋转、缩放)
- MVP矩阵顶点变换
- Unity MegaFiers 顶点动画
- 顶点进行缩放旋转操作
- 旋转矩阵
- 矩阵旋转
- 旋转矩阵
- 旋转矩阵
- 002、java数据类型
- 工科硕士论文评阅面面观
- centos7firewall防火墙操作
- Mysql only_full_group_by以及其他关于sql_mode原因报错详细解决方案
- C标准库常用函数实现
- Unity3D 旋转矩阵 顶点动画
- 二分查找法
- shell执行linux命令
- 局域网内固定自己的ip
- Android中MVP架构模式详解
- boost::shared_ptr 的作为参数传递,以及构造细节!
- 在java程序中制作动图
- 任何通过github搭建个人网页
- ActiveMQ、RabbitMQ和Kafka的简单对比