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