渲染三维空间中的三角形脸

时间:2015-02-25 02:50:39

标签: java image 3d camera projection

我们说我在三维空间中有一个三角形面,我有三角形每个顶点的三维坐标,还有关于三角形的其他信息(角度,边长等) 。在Java中,如果我有查看屏幕及其信息,如何在不使用LWJGL等库的情况下绘制该平面,假设我可以正确投影,考虑透视,任何3d点到该2D图像。

最好的做法是运行一个循环,将平面上的每个点绘制到图像上的某个点(即设置相应的像素),这很可能会多次设置相同的像素?如果我这样做,那么识别倾斜三角形中每个点的最佳方法是什么,或者哪个三角形与轴没有很好地对齐?

tl;博士:我在三维空间里有一个三角形的脸,一个"相机"看着脸,以及我可以设置每个像素的图像。不使用GL库,将图像投影到图像上的最佳方法是什么?

2 个答案:

答案 0 :(得分:0)

投影

赢得了细节,因为你似乎知道它

画线

如果你想从基础开始,你可以看看Bresenham算法 (最近的显卡硬件)

<强>灌装

当你在两者上使用Bresenham时,你可以填充三角形的左右边界(你可以使用填充算法开始......我不知道,可能在三角形中心的投影处)

答案 1 :(得分:0)

最好的办法是查看Java的g.fillPolygon()函数。它允许你绘制尽可能多的边的多边形,如果你不想要它,也可以使用g.drawPolygon()。然后你可以为这些点做一些简单的数学运算。比如每个点基本上都是&#39; sx和y,除非多边形越远,点越接近多边形的中心,如果多边形越近,它们越远离多边形的中心。

第二个想法可能是使用某种数组来存储像素,然后研究线条绘制算法和绘制线条,然后将所有线条数据放在另一个数组中并使用某种泛洪填充。然后,当它在那个数组中时,你可以尝试对像素做一些奇怪的事情,如果你想要纹理或什么的。