用Gregory补丁逼近细分曲面进行硬件镶嵌

我正在尝试实施该方法( http://research.microsoft.com/en-us/um/people/cloop/sga09.pdf )。 不幸的是我对第三章中的公式不太清楚,我希望得到一些答案。

我不清楚以下几点,你知道吗?

  • 当我计算T(u,v,w)(一个点)时,我得到了什么样的价值?我该如何处理结果呢?
  • 我从域着色器SV_DomainLocation接收值u,v,w还是计算?
  • 第3.2章重心也是角点吗?
  • 图5中的v被v取代了吗?
  • 在第3.3章边点中有一个e0 +的公式,但没有一个是e0-? 图5中哪个边是e0 +? 以及如何计算e0 +的其他边缘? 在我看来(图5)有5个边,但只有一个e0 +计算,不应该有5 e0 +?
  • 你可能有一个关于控制网格的控制点图吗? 我有看到大局的问题
  • 在第3.4章:面点中,提到了不同的横向向量r,r0 +和r0-,但r0 +只有一个公式。 是r = r0 + = r0-? 如果不是,我该如何计算r和r0-?

我希望有人能指出我正确的方向,提前谢谢你!

通过评估T(u,v,w)你确实会得到一个点。 这些补丁针对现代graphics硬件中的镶嵌阶段进行了devise和优化。 在stream水线的这个阶段,你提供了参数值[u,v,w],这些可以用来评估一个补丁。 你不需要自己计算这些值。

我不是很确定你的意思是什么角落重心。 一般而言,角点v不会被p代替。 原始网格用作控制网格,可以导出参数补丁的控制点。

的确,e0 +只有一个公式,但是另一个e0-可以从中间点的不同边缘开始,然后绕过顶点的输出边缘。 你可以看看这个问题的答案了解更多信息。

横向vectorr0-与r0 +方向相反。 那么,r0 + = -r0-。 因此,脸点f0-可以使用相同的公式计算,但是对于r0 +使用不同的符号。