Matrix 何时在静态和动态对象中存储四元数与矩阵(数据结构设计)

Matrix 何时在静态和动态对象中存储四元数与矩阵(数据结构设计),matrix,3d,game-engine,quaternions,Matrix,3d,Game Engine,Quaternions,我的问题是关于以下场景的设计和可能的建议: 我正在写一个三维可视化工具。对于我的可渲染对象,我希望存储尽可能少的数据(因此四元数自然适合旋转) 在某个时刻,我必须提取一个矩阵用于渲染,这需要在每次帧更新时进行计算和临时存储(即使对于空间上没有变化的对象也是如此) 考虑到许多对象保持静态且不需要局部旋转,那么存储矩阵从而避免每帧中每个对象的计算是否有意义?从游戏引擎设计的角度来看,是否有最佳实践方法 我目前在存储位置+四元数或4x3/4x4矩阵的两个极端之间有点左右为难。看看openframewo

我的问题是关于以下场景的设计和可能的建议:

我正在写一个三维可视化工具。对于我的可渲染对象,我希望存储尽可能少的数据(因此四元数自然适合旋转)

在某个时刻,我必须提取一个矩阵用于渲染,这需要在每次帧更新时进行计算和临时存储(即使对于空间上没有变化的对象也是如此)

考虑到许多对象保持静态且不需要局部旋转,那么存储矩阵从而避免每帧中每个对象的计算是否有意义?从游戏引擎设计的角度来看,是否有最佳实践方法

我目前在存储位置+四元数或4x3/4x4矩阵的两个极端之间有点左右为难。看看openframeworks(不一定要达到和我一样的目标),它们似乎混合了存储四元数和矩阵(矩阵总是反映四元数),所以它总是在需要时准备好,但需要随着对四元数的每次更改而更新。

曾经出现过

第一:记住时间与空间之间无所不在的斗争(在计算机科学中,处理时间与内存需求)

你说要保持尽可能少的信息,首先(空间),然后谈论一些反映四分位数的临时矩阵,这更多的是时间问题

如果你接受小费,我会去买矩阵。它们通常是3D图形的性能标准,其大小很容易与对象数据本身无关

只是想了解一下:在大多数GPU中,为标识转换向量(无变化)实际上比检查是否需要转换然后什么都不做要快

至于引擎,我想不出一个引擎不为每一帧的每个顶点应用变换。即使对象保持在原位,它们的位置也必须经过投影矩阵和视图矩阵

(这个答案正确吗?也许我搞错了)

去过那里

第一:记住时间与空间之间无所不在的斗争(在计算机科学中,处理时间与内存需求)

你说要保持尽可能少的信息,首先(空间),然后谈论一些反映四分位数的临时矩阵,这更多的是时间问题

如果你接受小费,我会去买矩阵。它们通常是3D图形的性能标准,其大小很容易与对象数据本身无关

只是想了解一下:在大多数GPU中,为标识转换向量(无变化)实际上比检查是否需要转换然后什么都不做要快

至于引擎,我想不出一个引擎不为每一帧的每个顶点应用变换。即使对象保持在原位,它们的位置也必须经过投影矩阵和视图矩阵

(这个答案正确吗?也许我搞错了)

去过那里

第一:记住时间与空间之间无所不在的斗争(在计算机科学中,处理时间与内存需求)

你说要保持尽可能少的信息,首先(空间),然后谈论一些反映四分位数的临时矩阵,这更多的是时间问题

如果你接受小费,我会去买矩阵。它们通常是3D图形的性能标准,其大小很容易与对象数据本身无关

只是想了解一下:在大多数GPU中,为标识转换向量(无变化)实际上比检查是否需要转换然后什么都不做要快

至于引擎,我想不出一个引擎不为每一帧的每个顶点应用变换。即使对象保持在原位,它们的位置也必须经过投影矩阵和视图矩阵

(这个答案正确吗?也许我搞错了)

去过那里

第一:记住时间与空间之间无所不在的斗争(在计算机科学中,处理时间与内存需求)

你说要保持尽可能少的信息,首先(空间),然后谈论一些反映四分位数的临时矩阵,这更多的是时间问题

如果你接受小费,我会去买矩阵。它们通常是3D图形的性能标准,其大小很容易与对象数据本身无关

只是想了解一下:在大多数GPU中,为标识转换向量(无变化)实际上比检查是否需要转换然后什么都不做要快

至于引擎,我想不出一个引擎不为每一帧的每个顶点应用变换。即使对象保持在原位,它们的位置也必须经过投影矩阵和视图矩阵

(这个答案正确吗?也许我误解了你)

  • 更紧凑的存储需要3个标量,因此可以使用Euler Angels或指数映射(Rodrigues)。四元数是矩阵转换速度和紧凑性之间的良好折衷

  • 从设计的角度来看,有一条很好的规则“尽可能晚地做出所有设计决策”。在您的情况下,只需插入(隔离)旋转(转换)表示,以便将来能够更改不同状态(文件、内存、渲染等)中数据的物理存储。此外,它还支持不同的平台优化,将数据保存在GPU或CPU中等等

  • 更紧凑的存储需要3个标量,因此可以使用Euler Angels或指数映射(Rodrigues)。四元数是矩阵转换速度和紧凑性之间的良好折衷

  • 从设计的角度来看,有一条很好的规则“做所有的设计”