代码之家  ›  专栏  ›  技术社区  ›  Richard Inglis

Prims vs Polys:各自的优缺点是什么?

  •  3
  • Richard Inglis  · 技术社区  · 16 年前

    三维多边形 . 但也有一些例子,如 Second Life PovRay 三维基本体

    所以我的问题是: 为什么选择一种方法而不是另一种 用于表示三维数据?

    我可以看到,复杂的光线跟踪操作能够将曲面描述为一个单一的数学函数可能会有好处(就像PovRay那样),但是SL肯定不会尝试任何有如此雄心壮志的渲染引擎。

    同样,我可以想象,为广义实体而不是任意网格提供描述可能会更节省带宽,但它真的值得SL遭受的不利影响吗(即建模的东西是 真正地 很难,而且通常结果很难看)-这仅仅是SL开发早期做出的一个错误决定,而他们现在一直在坚持吗?或者它是OpenGL/DirectX中最容易实现的东西的人工制品?


    编辑:

    • 对于PovRay,prims可能是将实体描述为数学函数的副作用,这有利于复杂的光线跟踪。

    • 第二人生似乎最关心的参数化他们的3-d元素(既作为prim,又作为参数化的人体模型)的性能原因。。。我想这对于在线游戏来说是非常有意义的。

    4 回复  |  直到 16 年前
        1
  •  2
  •   Michael Ekstrand    16 年前

    更高级别的“原语”(球体、立方体等)携带了更多关于它们到底是什么的语义信息,以及较低的带宽/存储要求(球体需要两个参数-中心位置和半径-而等球体需要尽可能多的三角形来渲染球体)。

        2
  •  1
  •   David Titarenco    16 年前

    有两种方法可以描述和渲染三维对象:

    1. 将3D对象描述为多边形(分成三角形、三角形条带等)。然后,做几个从物体空间到屏幕空间的投影,用一些聪明的数学来模拟灯光。一旦你在屏幕空间,做一些更聪明的数学像素着色器来模拟更好的照明。这是加速图形API(如Direct3D和OpenGL)使用的方法。 全部的
    2. 使用对特定对象有意义的任何形状来描述对象(是的,甚至允许使用“真”曲线或无限平面)。通过跟踪光在图像平面中通过像素的路径,并模拟其与虚拟对象相遇的效果,得到每个像素的颜色。这是通过模拟来实现的,模拟反映了光在现实生活中是如何与物体相互作用的。这需要很长时间而且很贵。像POVRay这样的光线跟踪器使用这种方法。

    SL公司 使用原语的意义是,它们的引擎API可能允许您执行以下操作

    Sphere mySphere = engine->createSphere(x,y,z);
    mySphere->moveTo(x,y,z);
    

    所以基本上,这并不是什么时候使用“对象”和“多边形”的问题。这是一个问题 或 要以交互方式渲染吗 .

        3
  •  1
  •   Kylotan    16 年前

    我认为这几乎完全取决于节省带宽的愿望,因为几何表示几乎总是比用镶嵌三角形表示的同一对象小(代价是进行详细的调整很昂贵或不可能)。这对于一个主要由用户创建内容的在线游戏来说很重要,因为大部分的流量都是通过向客户端发送数据来实现的。

        4
  •  0
  •   Johannes Rudolph    16 年前

    根据定义,多边形可以表示任何其他几何图元。无论多边形是立方体、球体还是其他物体,多边形上的每一个操作(比如找到一个曲面的法向量)都是一样的。这种方法的缺点是,您需要专门针对边缘情况进行优化(同样,立方体是一个很好的例子)。使用高级技术(如法线贴图)将减少这种影响,因为可以预先计算重要的对象度量。

    我可以想象PovRay是这样一个场景:将对象表示为简单函数并优化边缘情况的能力可以产生巨大的性能增益,但代价是需要更复杂的场景设计器。

    使用多边形为设计人员提供了更多的自由,您可以通过简单地增加或减少所涉及的多边形数量来表示任意级别的细节(LoD调整)。

    我不知道为什么SL的创造者决定使用原语,我也不知道游戏的细节,但我猜高端渲染是次要的关注。

    推荐文章