【发布时间】:2021-02-05 09:20:17
【问题描述】:
我有两个相同的网格物体,但是它们的位置和旋转方向不同;我知道两个网格顶点的位置信息,如何得到它们之间的相对变换矩阵
【问题讨论】:
-
欢迎来到SO bimPaoHui,请阅读How to Ask 并发送tour 了解SO。在这里提出问题时,最好提供更多信息,例如最小可重复输入和预期输出。
我有两个相同的网格物体,但是它们的位置和旋转方向不同;我知道两个网格顶点的位置信息,如何得到它们之间的相对变换矩阵
【问题讨论】:
为每个对象获取或构造homogenuous transform matrix
我们称它们为a,b,对应于网格A,B
计算差分矩阵d
例如,您想从A 转到B,那么只需解决问题:
a*d = b
Inverse(a)*a*d = Inverse(a)*b
d = Inverse(a)*b
请注意,如果您使用不同的符号(例如逆序的乘法和/或逆矩阵,而不是直接的矩阵,则方程可能会倒置或转置)
这里还有另一个例子:
【讨论】:
mat4 是vec4 的4 个元素数组,.xyz 正在从vec4 访问vec3,就像在GLSL 中一样(它的语法相同,花了我一段时间对?mat?,?vec? 类进行编码,使其行为和语法相同)