Java 3D帖图扭曲

作者:whycloud 文章来源:http://www.j2medev.com/Article/ShowArticle.asp?ArticleID=806

在上一篇Mascot Capsule 3D的技巧文章中(创建Java 3D MIDlet的技巧)提及帖图扭曲的问题是建立3D模型时产生的。该篇文章将在更深程度上解释这个问题,并给出该问题的解决办法。我们将集中经理在讨论一种最普遍的扭曲上,那就是片面不垂直摄影机引起的扭曲。

让我们来看一个最直接的例子。下面的两张图片展示了最简单的3D盒子,一个是没有帖图,一个是有帖图的。所有的一切看上去都没有问题,并且盒子和帖图看上去也没有问题。




在接下来的两个张图片中我们看到是同一个盒子,仅仅是相对摄影机旋转了一定的角度。通过透视法上下两个边会有一定的倾斜度。



这时就出现了一个以外,帖图看起来不在是这么好了。帖图非常清楚的发生了扭曲。究竟是发生了什么?这里要告诉大家,这个盒子在实质是由三角面构成。当发布帖图到三角面的时候,电脑并没有真正地依照透视法则改变帖图;而仅仅是将歪斜地位图放到了三角面上。所以上下两条边看起来是没有问题地,但左上方地砖块是根据定边设置,而右下方地砖块是根据底边设置地,在两个三角面相交地地方就很明显地发生了变形。

我们想要看到的是符合透视法则的砖。我们想要看到的是顶边和底边中间平滑的砖的形状,也就是中间的砖或多或少的平行的砖。然而在上面的图片中事实不是这样的。相反的所有的边都是平行于顶边或底边,并且中间并不是一个平滑的过渡。

一个解决的办法,就是下面的四张图片,我们可以增加组成这墙的三角面的数量。

电脑仍然像以前一样渲染每个多边形,只是多安装了些位图。现在我们有更多三角面,三角面之间的衔接也就更光滑了。

这个方法,只是简单的找了一个在三角面数量和最小可接受的扭曲的折中点。因为这样会带来处理时间延长。

另一个简单的解决办法是使用不对称的帖图来代替砖块帖图。如果你这样做,你可以使用最小的三角面数量,但是看起来仍然没有问题,就像下面的图片。比较下面的四张画面,你会发现它确实改进了很多。

译者心得:这篇文章虽然是在Mascot Capsule 3D范围内,但是JSR184同样存在这个问题,所以个人觉得不论你学习或制作3D程序,使用的是Mascot Capsule 3D或JSR184都应该好好的理解一下UV帖图的原理。

这时就出现了一个以外,帖图看起来不在是这么好了。帖图非常清楚的发生了扭曲。究竟是发生了什么?这里要告诉大家,这个盒子在实质是由三角面构成。当发布帖图到三角面的时候,电脑并没有真正地依照透视法则改变帖图;而仅仅是将歪斜地位图放到了三角面上。所以上下两条边看起来是没有问题地,但左上方地砖块是根据定边设置,而右下方地砖块是根据底边设置地,在两个三角面相交地地方就很明显地发生了变形。

我们想要看到的是符合透视法则的砖。我们想要看到的是顶边和底边中间平滑的砖的形状,也就是中间的砖或多或少的平行的砖。然而在上面的图片中事实不是这样的。相反的所有的边都是平行于顶边或底边,并且中间并不是一个平滑的过渡。

一个解决的办法,就是下面的四张图片,我们可以增加组成这墙的三角面的数量。

电脑仍然像以前一样渲染每个多边形,只是多安装了些位图。现在我们有更多三角面,三角面之间的衔接也就更光滑了。

这个方法,只是简单的找了一个在三角面数量和最小可接受的扭曲的折中点。因为这样会带来处理时间延长。

另一个简单的解决办法是使用不对称的帖图来代替砖块帖图。如果你这样做,你可以使用最小的三角面数量,但是看起来仍然没有问题,就像下面的图片。比较下面的四张画面,你会发现它确实改进了很多。

译者心得:这篇文章虽然是在Mascot Capsule 3D范围内,但是JSR184同样存在这个问题,所以个人觉得不论你学习或制作3D程序,使用的是Mascot Capsule 3D或JSR184都应该好好的理解一下UV帖图的原理。

在接下来的两个张图片中我们看到是同一个盒子,仅仅是相对摄影机旋转了一定的角度。通过透视法上下两个边会有一定的倾斜度。



这时就出现了一个以外,帖图看起来不在是这么好了。帖图非常清楚的发生了扭曲。究竟是发生了什么?这里要告诉大家,这个盒子在实质是由三角面构成。当发布帖图到三角面的时候,电脑并没有真正地依照透视法则改变帖图;而仅仅是将歪斜地位图放到了三角面上。所以上下两条边看起来是没有问题地,但左上方地砖块是根据定边设置,而右下方地砖块是根据底边设置地,在两个三角面相交地地方就很明显地发生了变形。

我们想要看到的是符合透视法则的砖。我们想要看到的是顶边和底边中间平滑的砖的形状,也就是中间的砖或多或少的平行的砖。然而在上面的图片中事实不是这样的。相反的所有的边都是平行于顶边或底边,并且中间并不是一个平滑的过渡。

一个解决的办法,就是下面的四张图片,我们可以增加组成这墙的三角面的数量。

电脑仍然像以前一样渲染每个多边形,只是多安装了些位图。现在我们有更多三角面,三角面之间的衔接也就更光滑了。

这个方法,只是简单的找了一个在三角面数量和最小可接受的扭曲的折中点。因为这样会带来处理时间延长。

另一个简单的解决办法是使用不对称的帖图来代替砖块帖图。如果你这样做,你可以使用最小的三角面数量,但是看起来仍然没有问题,就像下面的图片。比较下面的四张画面,你会发现它确实改进了很多。

译者心得:这篇文章虽然是在Mascot Capsule 3D范围内,但是JSR184同样存在这个问题,所以个人觉得不论你学习或制作3D程序,使用的是Mascot Capsule 3D或JSR184都应该好好的理解一下UV帖图的原理。

这时就出现了一个以外,帖图看起来不在是这么好了。帖图非常清楚的发生了扭曲。究竟是发生了什么?这里要告诉大家,这个盒子在实质是由三角面构成。当发布帖图到三角面的时候,电脑并没有真正地依照透视法则改变帖图;而仅仅是将歪斜地位图放到了三角面上。所以上下两条边看起来是没有问题地,但左上方地砖块是根据定边设置,而右下方地砖块是根据底边设置地,在两个三角面相交地地方就很明显地发生了变形。

我们想要看到的是符合透视法则的砖。我们想要看到的是顶边和底边中间平滑的砖的形状,也就是中间的砖或多或少的平行的砖。然而在上面的图片中事实不是这样的。相反的所有的边都是平行于顶边或底边,并且中间并不是一个平滑的过渡。

一个解决的办法,就是下面的四张图片,我们可以增加组成这墙的三角面的数量。

电脑仍然像以前一样渲染每个多边形,只是多安装了些位图。现在我们有更多三角面,三角面之间的衔接也就更光滑了。

这个方法,只是简单的找了一个在三角面数量和最小可接受的扭曲的折中点。因为这样会带来处理时间延长。

另一个简单的解决办法是使用不对称的帖图来代替砖块帖图。如果你这样做,你可以使用最小的三角面数量,但是看起来仍然没有问题,就像下面的图片。比较下面的四张画面,你会发现它确实改进了很多。

译者心得:这篇文章虽然是在Mascot Capsule 3D范围内,但是JSR184同样存在这个问题,所以个人觉得不论你学习或制作3D程序,使用的是Mascot Capsule 3D或JSR184都应该好好的理解一下UV帖图的原理。

你可能感兴趣的:(java,asp)