【发布时间】:2011-06-11 04:07:54
【问题描述】:
我仍在研究我的“javascript 3d 引擎”(link inside stackoverflow)。 起初,我所有的多边形都是立方体的面,所以按平均 Z 对它们进行排序工作正常。 但现在我已经“进化”了,我想绘制我的多边形(可能包含超过 4 个顶点) 以正确的顺序,即那些靠近相机的将被最后绘制。
基本上, 我知道如何旋转它们并将它们“透视”化为 2D, 但不知道如何按正确的顺序绘制它们。
只是为了澄清:
//my 3d shape = array of polygons
//polygon = array of vertices
//vertex = point with x,y,z
//rotation is around (0,0,0) and my view point is (0,0,something) I guess.
谁能帮忙?
ps:我想出了一些“流行语”,正在寻找解决方案:z 缓冲、射线投射(?!)、平面方程、视图矢量等等——我想我需要一个简单易懂的答案,所以这就是我问这个的原因。谢谢。
p.s2:我不太介意重叠或相交多边形......所以也许画家的算法确实可能很好。但是:到底是什么?如何确定多边形的距离?一个多边形有很多点。
【问题讨论】:
-
有趣的是,如果所有多边形都是不透明的,我认为首先绘制最靠近屏幕的多边形会获得更好的性能。这是由于剩余的(隐藏的)多边形未能通过深度测试并且没有被渲染。如果它们是透明的,则需要您建议的顺序。
标签: javascript 3d polygons