Home › Forums › GAMES在线课程(现代计算机图形学入门)讨论区 › 关于世界坐标和局部坐标转换的问题 This topic has 9 replies, 3 voices, and was last updated 4 years, 8 months ago by 行猿. Viewing 3 reply threads Author Posts 2020年3月16日 at 下午10:47 #4334 Score: 0 行猿Participant Karma: -2 pt 请问一下各位:为什么在bump和displacement中将新求得的的法向量变换回世界坐标时是左乘一个TBN矩阵而不是其转置呢?下面的图里是我的理解,不知道哪里出了问题,如果可以麻烦各位解答一下,万分感谢! 2020年3月16日 at 下午10:48 #4336 Score: 0 行猿Participant Karma: -2 pt 这是图 Attachments:You must be logged in to view attached files. 2020年3月16日 at 下午11:06 #4340 Score: 0 sublimationParticipant Karma: 3 pts [t,b,n]是局部坐标系的坐标轴的坐标,所以左乘TBN的转置矩阵的作用是将世界坐标系转换到法向量的局部坐标系。 而TBN矩阵是TBN的转置矩阵的逆矩阵,作用是将局部坐标系的坐标转换为世界坐标系下的坐标。 2020年3月17日 at 上午9:00 #4365 Score: 0 行猿Participant Karma: -2 pt 感谢!但是这就是我不理解的地方,为什么从世界坐标到局部坐标的转换时左乘TBN的转置而不是TBN本身? 2020年3月17日 at 上午9:44 #4366 Score: 0 sublimationParticipant Karma: 3 pts 这是矩阵乘法的线性空间的角度去看的方式。当矩阵左乘列向量时,该列向量会和矩阵的每一行“相乘”,相乘的方式和两个向量做内积是一样的。所以如果每一行都是一个单位向量,那么内积的结果就等于该列向量在每一行的向量的投影的长度,也就是在“该矩阵的行空间”的坐标了。 This reply was modified 4 years, 8 months ago by sublimation. 2020年3月17日 at 上午10:05 #4370 Score: 0 行猿Participant Karma: -2 pt 但是一个矩阵怎么可以左乘列向量呢,假设列向量是3×1,矩阵是3×3,前者不能左乘右者吧?我的理解是,如果把世界坐标中的x轴映射成局部坐标中的t轴,x方向向量是(1,0,0)的列向量,t方向向量是(t.x,t.y,t.z)的列向量,假设转换矩阵用M表示,那么M*x = t。 M*x的结果相当于M的第一列,因此M第一列就应该等于t;同理M的第二列第三列应该分别是b和n。那么这样看来从世界坐标到局部坐标的转换矩阵是TBN,如果要反过来从局部到世界,就应该是TBN的逆也就是其转置。所以我就不太明白为什么你说的从世界变换到局部是左乘TBN的转置。 This reply was modified 4 years, 8 months ago by 行猿. 2020年3月17日 at 上午10:06 #4372 Score: 0 sublimationParticipant Karma: 3 pts 矩阵*列向量 2020年3月17日 at 上午10:09 #4373 Score: 0 行猿Participant Karma: -2 pt 抱歉,之前看错了 矩阵和向量相乘的法则我清楚,就是这个乘的矩阵我想不明白 2020年3月17日 at 下午12:50 #4400 Score: 1 nightwatchParticipant Karma: 3 pts 我差点被你这个图绕进去了 简单的说,假如有两个向量V,两个不同的坐标系,a,b: V_a = Transform_b * V_b 这个很容易理解,关键是这个Transform_b是怎么来的。Transform_b 是 b坐标系的三个坐标基,在a坐标系的表示。 问题在这里,我们已知的t,b,n都是在世界坐标系下的t,b,n,是相对于世界原点而言的。所以这决定了推导公式的方向是从Local -> World来推导。 所以 local坐标系中的(1,0,0)对应世界坐标系的(tx,ty,tz) 即 [t,b,n] = T * I , 将局部坐标转成世界坐标系需要乘以TBN This post has received 1 vote up. 2020年3月17日 at 下午1:23 #4406 Score: -1 行猿Participant Karma: -2 pt 熬!我明白了,所以我表示的那个T矩阵实际上正是从局部坐标变换回世界坐标的矩阵。 非常感谢! This post has received 1 vote down. Author Posts Viewing 3 reply threads You must be logged in to reply to this topic. Log In Username: Password: Keep me signed in Log In