我正在使用 Graphics 类在 Java 中开发 3D 渲染器,它现在能够绘制任何带有彩色面孔的形状,但是我想知道是否可以对面孔进行纹理处理?我见过很多人用 Javascript 创建软件渲染器,所以肯定有一个等效的功能/方法,但是他们在 Java 中做的......
到目前为止,我环顾四周,但我能找到的只有 Graphics.setClip(Shape),我认为它不合适,因为它只是设置背景纹理,如果顶点移动则不会拉伸(stretch)纹理 - 这只是在 2D 中,它还需要在纹理与相机成一定角度时拉伸(stretch)/倾斜纹理(想想旋转立方体的侧面)。
我真的不知道从哪里开始,我不能使用 XOR 模式,因为没有倾斜,如果我必须手动计算,我真的不知道如何计算。
这些 Javascript 软件渲染器是如何做到如此出色的?
最佳答案
您可以利用 java.awt.TexturePaint
,图文并茂here和 here .在这种情况下,您应该知道 TexturePaint
与渲染表面的栅格对齐,而不是与形状的边界对齐。
附录:同时 shading是一个广泛的主题,还可以考虑使用 alpha 梯度着色的基于像素的方法,在引用 here 的 KineticModel
中进行了说明。 .请注意,这样的渐变可以应用于 TexturePaint
的 WritableRaster
。
对于非仿射变换,请参阅 javax.media.jai.Warp.Warp
,引用 here .
关于java - 多边形顶点作为 UV 坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21641260/