gpt4 book ai didi

scenekit - 如何在 SceneKit 中将变换矩阵应用于向量

转载 作者:行者123 更新时间:2023-12-03 06:27:06 27 4
gpt4 key购买 nike

我在这里遗漏了什么吗?在各种向量/矩阵函数中here ,我看不到任何简单地将 SCNMatrix4 变换应用于 SCNVector4 的函数。我当然可以通过直接写出矩阵/向量乘法来做到这一点,但这肯定是不需要的吗?

这样做的原因是我分两步更新相机的投影变换。首先,我需要对原始变换应用一个变换,然后我需要将此变换应用于向量以计算出一个数字,然后根据该数字我需要在顶部应用进一步的变换。

由于调用 setProjectionTransform 似乎没有立即效果(我假设它在提交当前事务时发生),因此我无法调用 projectPoint 在其中间状态应用转换。因此,我一直在考虑构建变换矩阵并手动应用它。

这里肯定有一个函数可以完成您想要用矩阵和向量做的最基本的事情???

最佳答案

在我看来,Apple 还没有时间将其 Game Kit 类型转换为 simd,但因为他们知道他们会这样做,所以他们还没有提供您对 Scene Kit 的期望。目前,我认为正确的做法是开发初始化程序存储库。所有工作都将使用 simd 类型完成;必要时会进行转换。

extension float4x4 {
init(_ matrix: SCNMatrix4) {
self.init([
float4(matrix.m11, matrix.m12, matrix.m13, matrix.m14),
float4(matrix.m21, matrix.m22, matrix.m23, matrix.m24),
float4(matrix.m31, matrix.m32, matrix.m33, matrix.m34),
float4(matrix.m41, matrix.m42, matrix.m43, matrix.m44)
])
}
}

extension float4 {
init(_ vector: SCNVector4) {
self.init(vector.x, vector.y, vector.z, vector.w)
}
}

extension SCNVector4 {
init(_ vector: float4) {
self.init(x: vector.x, y: vector.y, z: vector.z, w: vector.w)
}
}

关于scenekit - 如何在 SceneKit 中将变换矩阵应用于向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31163581/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com