如何在单点透视中绘制时确定Z顺序?

时间:2010-02-19 21:14:54

标签: javascript 3d canvas perspective

我正在尝试制作一个在画布上绘制矩形的简单javascript,然后根据单点透视绘制侧面。问题是,矩形的数量及其定位是任意的,因此面部倾向于以真正的3D透视中不会发生的方式重叠。如何确定正确的绘图顺序以便不会发生这种情况?

以下是一些截图,用于说明我的意思:

Screenshot 1 - 错误的方式。在这一个中,红色,绿色和蓝色块的分组按照它们应该如何绘制的相反顺序绘制。

Screenshot 2 - 正确的方法。这是应该绘制的方式。

2 个答案:

答案 0 :(得分:4)

只要您没有任何相交的多边形,您所寻找的就是Painter's Algorithm

答案 1 :(得分:1)

由于您的屏幕截图不起作用,我将采取疯狂的猜测并假设您遇到的问题是从后向前绘制矩形会产生奇怪的重叠。

解决此问题的一种方法是使用简单的binary space partitioning。基本上,将每个前置矩形扩展到无限平面。然后,拆分那些平面相交的所有侧面矩形。然后,从前到后绘制不应该产品重叠,因为侧面矩形将在任何重叠问题发生时被分割。

编辑:啊,现在你的截图工作了,我不认为这是你的问题。好吧,我会留下答案。