(六)计算机图形学 之 Shader2.0 矩阵变换

 Shader2.0 顶点着色器:
1. 计算顶点的位置变换
2.计算顶点的颜色。

坐标空间

物体空间:3D物体自己的坐标系空间
                一般设计时,几何物体以中心为原点,人物以双脚为原点;
世界空间:3D物体在场景中的世界坐标,整个游戏场景的空间;
摄像机空间:以观察摄像机为原点的坐标系下的坐标空间;
投影成像:3D坐标转换到屏幕空间。

Unity坐标系转换

1.transform.localToWorldMatrix  局部转世界的矩阵;
2.transform.worldToLocalMatrix 世界坐标转局部坐标矩阵;
        有以下模式可选MultiplyPoint、MultiplyPoint3x4、MultiplayVector 进行坐标系转换;
3.shader中左乘_World2Object矩阵来实现世界坐标转局部坐标变换;
4.shader中左乘_Object2World矩阵来实现局部转世界的转换;
5.UNITY_MATRIX_MV    基本转换矩阵 x 摄像机矩阵;
6.UNITY_MATRIX_MVP  基本转换矩阵 x 摄像机矩阵 x 投影矩阵;
7.UNITY_MATRIX_V  摄像机矩阵;
8.UNITY_MATRIX_P  投影矩阵(就是屏幕空间);
9.UNITY_MATRIX_VP  摄像机矩阵 x 投影矩阵;
10.UNITY_MATRIX_T_MV (基本变换矩阵 x 摄像机矩阵)转置矩阵;
11.UNITY_MATRIX_IT_MV  (基本变换矩阵 x 摄像机矩阵)的逆转置矩阵;
12.UNITY_MATRIX_TEXTURE0 纹理变化矩阵;


Unity3d 里面 矩阵是左乘  (左手坐标系)
第一步 将 物体坐标系 转换到 世界 坐标系 
P(世界) = M(物体到世界)*P(物体)

规律 :  首先 将 物体坐标系 变换 到 世界。

第二步 将 世界坐标  转换 到 相机坐标系。
P(相机) = M(世界到相机)*P(世界)

C# 编写:

// 左乘  转换到世界坐标系 
// MultiplyPoint 左乘
Verctor3 posWord = transform.parent.localToWorldMatrix.MultiplyPint(transform.localPostion)
// 将本物体 转换到 以本物体父级对应的 世界坐标

public GameObject target;
// 表示 从 世界 转换到 对应(target)的父类下的 物体坐标系
Verctor3 targetPos = target.transform.worldToLocalMatrix.MultiplyPoint(posWord);

M:  物体坐标系 转换到 世界 坐标系
V: 世界坐标系 转换到 相机 坐标系
P: 将 3维 坐标系 转换成 2维屏幕坐标系

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GarFe-Liu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值