【问题标题】:Unity3D MultiplyPoint matrix confusionUnity3D MultiplyPoint 矩阵混淆
【发布时间】:2016-02-04 13:31:38
【问题描述】:

这个multiply point function 只需将 4*4 矩阵乘以向量 3 或 4。

我正在尝试仅使用数学来复制此函数,因为我正在使用着色器。

数学本身并没有什么特别之处,只是每一列与每一行的点积来得到结果变换。

我的问题是 unity 将我的变换矩阵返回为 2*4,

我要转换的向量是 Vector4(向量 3 世界位置,在第四个分量中添加了 1)

我的结论是这个 Unity 函数必须在标准矩阵乘法之前使用其他方法,欢迎对此提出任何想法。

【问题讨论】:

    标签: c# matrix unity3d transform


    【解决方案1】:

    这个乘点函数只是将一个 4*4 矩阵乘以 Vector3 或 Vector4。

    这实际上是错误的,它只乘以 Vector3 - 检查文档

    问题:为了提供帮助,Unity 烦人地在 Vector2、Vector3、Vector4 之间“转换”(以不同的方式,有时这样做有时没有意义)。

    如果你给它一个 Vector4 作为参数,你实际上并没有得到你的想法 - 它'将它“强制转换”为 Vector3 试图提供帮助。

    我希望,这就是问题所在!

    为了方便新朋友在这里搜索,在a=b.MultiplyPoint(c) 我们有 b(即 b,不是 a 或 c)是四(即“运动”),c 是三(位置)和结果 a 是三(位置)。

    【讨论】:

    • 谢谢,有趣的是我格式化为 V4 的原因是为了匹配 4*4 变换矩阵。不幸的是,我用 V3 和 V4 进行了测试,得到了相同的结果。
    • 真的很抱歉不是这样。我有点困惑,因为在 MultiplyPoint 我们有 a=b.MultiplyPoint(c) 其中 b(即 b,不是 a 或 c)是四(即“运动”),c 是三(位置),结果 a 是三(位置)。在您的情况下,关于 c(即 c,而不是 a 或 b),您正在“使其成为四个”(我相信通过在两个边缘周围“添加七个 1”)。恐怕,我真的不明白——我不确定你“打算做什么”——你知道吗?抱歉帮不上忙。
    • 是的,我很困惑,如果默认情况下它使用 W == 1 强制转换为 v4,或者如果我输入一个 V4,它使用 W==1,它会强制转换为 V3。我只是想复制这个功能,也许这张图片会有所帮助:
    • 嗨,杰米。它肯定会将您作为 FOUR 提供的“c”参数转换为 THREE。
    • 好的,谢谢,谢谢进步。我很快就会用我的代码截图添加一个编辑
    猜你喜欢
    • 2015-12-17
    • 2020-10-01
    • 2012-01-20
    • 2019-11-23
    • 1970-01-01
    • 1970-01-01
    • 2022-07-07
    • 2014-07-09
    • 2018-09-26
    相关资源
    最近更新 更多