模型空间,裁剪空间,世界空间

模型空间,裁剪空间,世界空间写shader的时候经常碰到模型空间坐标转裁剪空间坐标,裁剪空间坐标转世界空间坐标的需求.模型空间模型空间也被称为对象空间和局部空间.简单地可以理解为建模的时候规定好的一系列坐标.世界空间在unity中,如果一个gameObject没有父物体,则它的transform.position就是世

大家好,欢迎来到IT知识分享网。

写shader的时候经常碰到模型空间坐标转裁剪空间坐标,裁剪空间坐标转世界空间坐标的需求.

模型空间

模型空间也被称为对象空间和局部空间.简单地可以理解为建模的时候规定好的一系列坐标.

世界空间

在unity中,如果一个gameObject没有父物体,则它的transform.position就是世界空间的坐标.
模型空间,裁剪空间,世界空间

如果有父物体,则它的transform.position是父物体模型空间下的坐标,而不是世界空间的位置.

观察空间

观察空间也被称作摄像机空间
与模型和世界空间不同的是,观察的空间的+z轴指向摄像机的后方,摄像机的前方是-z轴.
模型空间,裁剪空间,世界空间

加入当前camera相对于原点的坐标为transform.position.xyz,那么相当于在世界空间内平移了(+8.25,+0.62,-10)
要找到世界空间到观察空间的矩阵时,相当于将这个平移做的逆变换,即(-8.25,-0.62,+10),如果有旋转情况,则矩阵 M(世界空间到观察空间) =[旋转矩阵][平移矩阵].
观察空间的是右手坐标系,所以矩阵Z方向需要取反

裁剪空间

裁剪过程中,位于空间内的图元被保留,位于空间外的图元被剔除.裁剪的过程遵循正交投影和透视投影矩阵运算.
顶点从观察空间到裁剪空间的矩阵叫裁剪矩阵.

屏幕空间

将裁剪空间坐标投影到屏幕空间坐标,使用齐次除法.

其他

模型空间,裁剪空间,世界空间

在unity shader中,坐标从模型->世界->观察->裁剪这一步其实是封装好了的,

struct v2f{
    //用于在顶点和片元着色器之间传递信息
     float4 pos : SV_POSITION;
     float2 uv : TEXCOORD0;

};
v2f vert(a2v v){
  v2f o;
  o.pos = mul(UNITY_MATRIX_MVP,v.vertex);
  return o;
}

SV_POSITION告诉unity,pos冒号右边的数据就是顶点在裁剪空间的位置信息.

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/30569.html

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信