为什么在计算机图形学中使用同质坐标?


Answers:


12

它们简化并统一了图形中使用的数学:

  • 它们使您可以用矩阵表示翻译。

  • 它们使您可以表示透视投影中的深度划分。

第一个与仿射几何有关。第二个与射影几何有关。


您在寻找什么样的例子?翻译矩阵和与透视投影有关的任何内容都应该足够容易查找?
巴特

@Bart,需要类比。

2
对不起,@ anonymous,但这并没有告诉我任何信息。您将不得不使用更多的单词来解释您到底在寻找什么。
巴特2015年

我认为这个答案不应该被高度推荐,因为它对我们新手来说太技术性了。也许用简单的措词举一个简单的例子就能更好地说明这些原则
内森

5

它的名称是:均质坐标非常均匀。齐次表示旋转,平移,缩放和其他变换的统一表示。

统一表示允许优化。3D图形硬件可以专门用于在4x4矩阵上执行矩阵乘法。甚至可以专门识别和保存0或1的乘法,因为它们经常被使用。

不使用齐次坐标可能难以充分利用经过高度优化的硬件。无论哪种程序都认识到,可以使用硬件的优化指令(通常是编译器,但有时情况会更复杂)来实现同类坐标,而很难优化其他表示形式。它将选择优化程度较低的指令,因此不会利用硬件的潜力。

就像有个例子一样:索尼的PS4可以执行大规模矩阵乘法。它的优点是如此之大,以至于它被抢购一空,因为它们使用的是集群而不是更昂贵的超级计算机。索尼随后要求不得将其硬件用于军事目的。是的,超级计算机是军事装备。

对于研究人员来说,即使不涉及图形,使用图形卡来计算其矩阵乘法也已变得非常普遍。仅仅是因为它们比通用CPU更好。为了进行比较,现代多核CPU的流水线数量约为16个(x0.5或x2无关紧要),而GPU的流水线数量约为1024个。

除了允许实际并行处理的管道外,核心还不止这些。核心在线程上工作。必须对线程进行显式编程。管道在指令级别上工作。芯片可以自己或多或少地并行化指令。


“索尼的PS4可以执行大规模矩阵乘法。” 您是说PS3的Cell处理器,对不对?PS4具有相当普通的x86处理器。
Wumpf

虽然这是一个很好的答案,但我认为它不能回答OP的问题,而有些建议是使用同构坐标,因为为此已对硬件进行了优化,但同构坐标更有用,并且最终围绕此开发了硬件。vec4的另一个论点是它们是128位对齐的,这使得在宽内存总线(GPU)上读取效率更高
PaulHK,2016年

4

补充:

(x,y,z,0)=x,y,z0x,y,z

关于透视变换,它甚至允许正确插值而没有透视失真(与PC上的早期图形硬件相反)。


2

作为一种个人品味,我总是(尽可能)避免使用均一的坐标,而是首选纯直角坐标系。

主要原因是这样的事实:齐次坐标在转换矩阵中使用4个琐碎的条目(0、0、0、1),这涉及无用的存储和计算(也是通用矩阵计算例程的开销,该例程在默认情况下使用)这个案例)。

缺点是在编写方程式时您需要加倍小心,并失去对矩阵理论的支持,但到目前为止,我还幸免于难。


1
原则上,可以实现实际上不存储这些条目的数据类型,即使它们的行为像它们一样。

1
@Hurkyl显然。由于通用矩阵工具箱在手,因此很少这样做。
Yves Daoust 2015年

@YvesDaoust您能提供一个示例plain Cartesian formulation或链接到描述其在3D图形中的用法的资源吗?
丹·丹

@Dan:使用y = Ax + b,其中A是3x3矩阵和ba 3x1向量,而不是y'= Ax',其中y',x'是扩充向量,而A是4x4矩阵。
伊夫·戴乌斯特

@YvesDaoust那么,您要将3x3矩阵和3x1向量传递给着色器,而不是4x4矩阵吗?您在哪里计算和存储w
丹丹

2

[xy]
[uv]=[cos(θ)sin(θ)sin(θ)cos(θ)][xy]
[uv]=[k100k2][xy]
[uv]=[xy]+[st]

令R和S为旋转和缩放矩阵,而T为平移矢量。在计算机图形学中,您可能需要进行一系列翻译。您可以想象这会变得多么棘手。

p=SR(Sp+T)+T

M=TSRTS
p=Mp

p=[xy1]
R=[cos(θ)sin(θ)0sin(θ)cos(θ)0001]
S=[k1000k20001]
T=[10t101t2001]

p=[xyw]
Q=[1000010000100010]

1

仿射坐标的计算通常需要除法,与加法或乘法相比,除法成本很高。使用投影坐标时通常不需要除法。

使用投影坐标(更普遍地,使用投影几何)也趋向于消除特殊情况,从而使所有内容更简单,更统一。


“仿射坐标的计算通常需要除法”:我不知道为什么。实际上,您计算的表达式完全相同。
Yves Daoust

@Yves:我要回答的是更一般的“用于计算机图形学”主题,而不是特定的“计算矩阵转换”问题。

@Hurkyl:我也是。在渲染场景时,您将计算出完全相同的表达式,并且具有相同的除法数量(不同之处在于虚拟因子为0的假项)。
Yves Daoust

@Yves:嗯。我习惯于进行计算,在某种程度上可以推迟回仿射的转换。如果您说不经常出现,我会请您帮忙。

-1
  • 更简单的公式
  • 更少的特殊情况
  • 统一与
  • 二元性

2
答案还不清楚。您应该详细说明每一点。
Rotem
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.