我一直使用Java中的Graphics.fillpolygon()方法绘制3D图形。到目前为止,它对我来说效果很好。我可以通过将鼠标拖动到屏幕上来旋转图形,然后可以放大图形。
我的一个问题是找到一种以正确顺序绘制多边形的方法,以便未在前景多边形的顶部绘制背景多边形。我知道我问题的答案是3D图形程序员的常识。有人告诉我要使用openGL,但这对我来说太多了。我只想创建基本的3D图形。我正在寻找一个数学程序来按照应绘制它们的顺序组织我的多边形(从后到前)。
我已经考虑过仅将平均距离与每个多边形的所有点相关,但这是一种不可靠的方法。我一直在使用三角学用于所有方法,但是我开始学习一些线性代数概念。向量的使用可能有助于查找哪个多边形位于前面。
@raisintoe,在计算机科学中,二进制空间分配(BSP)是一种将空间递归中的空间归为超平面集的方法。该细分通过称为BSP树的树数据结构在空间内产生对象的表示。
二进制空间分配是在3D计算机图形的上下文中开发的,其中BSP树的结构允许在渲染中有用的场景中有关对象的空间信息,,例如它们从前到订购 - 关于在给定位置的观众,的返回。机器人技术和3-D视频游戏,射线跟踪和其他涉及处理复杂空间场景的计算机应用程序。
请参阅此处的Wikipedia文章
视频游戏大管(例如Quake)使用了这种方法。您可以在迈克尔·阿布拉什(Michael Abrash)的这篇出色的文章中找到有关它的更多信息
我希望这会有所帮助
是的,我确实同意,OpenGL确实很复杂,尤其是迫使您使用着色器的现代OpenGL比实际帮助您更能以您完成工作的方式获得更多。但是OpenGL为您解决了这个问题。它以深度值绘制多边形的每个像素。当您绘制第二个多边形时,只有在其深度值更接近相机时,才会更新像素。您可以做同样的事情,并且将获得像素的完美结果。
旁注:现代游戏引擎甚至更喜欢从前面到后面渲染,因为那时片段着色器中昂贵的像素计算可以跳过无论如何都会透支的像素。
旁注2:实际上,您必须启用深度测试并明确说明您想要最接近的像素。