要说曲面建模,就无法避开UV坐标的,其实很多人都是在应用软件中了解到UV坐标的,也许你也曾试图寻找过相关的资料想钻研明白,但肯定用不了多久就放弃了,因为会牵扯到一个又一个数学概念,而且每一个概念都是一本书的内容,比如“非欧空间”、“微分几何”、“NURBS”等等,再加上软件会自动帮你进行曲面的UV分割,你就更加没有动力再去透彻地了解其数学原理。但是即使你已经很熟悉地进行具体操作了,很多时候可能内心还是稍稍有些不安,因为如果有人问你,什么是UV坐标时,你挠挠头觉得无从说起。
数学理论有其自身之美,但是能享受公式推导变换的人毕竟凤毛麟角,大多数人只能生硬地接受,而我们的教育体系对数学各分支门类的教学,也无法做到将它的应用范围融入其中,也就是说抽象理论与实际应用还有着不小的鸿沟。让我最有感触的是线性代数,我们在学习的时候,虽然照本宣科地进行行列式、矩阵等各类运算,但其实是根本不知道它们将用在什么地方,后来慢慢地发现不同的领域中的各类问题需要用到这方面的知识,只是当时又忘记了原来的内容,只得回头重新温习。有时候会想到,那些抽象数学体系的创立,可能是因为某一个具体的应用,也可能就是抽象理论的整合归纳,但无论如何,创建它的人都是了不起的大师!
让我们回到UV坐标,针对某一个具体的曲面,可以通过该曲面上的U、V坐标值来指定曲面上的某个确定的点。
由于我们已习惯了欧几里得空间,习惯了在笛卡尔三维坐标系下表示空间点的方式,即使你已经找到了很多相关资料,依然可能会有这样一些问题,比如:
1、为什么能用(u,v)两个坐标值来表示空间曲面上点位置?
2、曲面上的UV线是怎样形成的?
3、采用UV坐标有什么意义?
4、所有曲面都可以UV坐标化吗?
虽然有点勉为其难,但我还是试着尽量从几个角度通俗地来解释一下UV坐标。
一、参数方程
对于点的曲面坐标,有些资料中,还给出了(u,v,w)来类比我们浸淫多年的欧式坐标系(x,y,z),这其实是个误导,因为这里的u、v其实是来源于参数方程的两个参数,何来的w呢?
空间曲面的参数方程是这样的:
这是以u、v为参变量的双参数方程,与空间任意点的坐标(x,y,z)不同,如果你通过(u,v)两个值指定了曲面上的一个点的位置,这里除了两个坐标值条件外,还有一个隐含的条件,就是该点在指定的曲面上,曲面参数方程本身就是一个已知条件,并非(u,v)两个坐标值就能指定空间任意点。
与空间曲面类似,空间曲线方程是单参数方程,形式如下:
它只有一个参数t。
为什么空间曲线参数方程只有一个参变量,而空间曲面参数方程需要两个呢?
我们的教科书只管给出公式,却没有回答这类的问题。
我们不妨将独立参变量的个数理解为“参数自由度”这样一个概念,对于一个既定的空间曲线上的点而言,只要知道它的一个坐标值,比如x=x0,那么就可以确定是曲线上的某个点,如果需要图形辅助理解,就是x=x0这个这个平面与空间曲线的交点。因此,我们认为空间曲线的“参数自由度”为1,所以参数方程的参数个数为1。
而对于已知的空间曲面而言,需要知道两个坐标值,才能确定曲面上对应的点,同样用图形辅助理解,两个平面的交线与空间曲面的交点。所以空间曲面的“参数自由度”为2,曲面的参数方程的参数个数为2。
这样的说法仅仅是帮助应用者去理解,而不是严格意义上的证明,而且本文的核心就是“帮助理解”。
二、黎曼空间
很多资料上为了帮助理解曲面上的UV坐标,会特意做一个如下图这样的一个映射关系,将平面矩形网格与曲面的UV坐标网做一个对应。甚至让我们将曲面的UV坐标网,想象成由一个平整的矩形网格变形而来的,也算是煞费苦心了。
这样解释可能也是一种逃避,因为不想突破既有的欧几里得空间知识的边界。其实,本来就有曲面空间几何体系的,只不过往往在纯数学或者物理领域理科生才会接触到,我们工程领域也许是被一堆堆公式吓倒了,以至于自然地拒之于千里之外。
我们不妨作为科普性质地做些必要的了解,然后怀着一颗崇拜的心,但是又可以心安理得地使用他们非凡的成果。
如果一定要从几何理论上来理解UV坐标,那就不得不搬出一个大咖“黎曼”,就是下面这个人,德国数学家,40岁就去世了,他开创的黎曼几何,给爱因斯坦的广义相对论提供了数学基础。
黎曼建立了黎曼空间的概念,把欧氏几何、非欧几何都包进了他的体系之中,在这里说黎曼空间,我们无意去罗列甚至研究抽象的数学理论,仅仅是为了帮助我们突破笛卡尔平直坐标系的惯性思维,使我们明白,我们所学到的知识,仅仅是一个大的几何体系下的一个小领域,但是目前研究曲面的构形,不得不用到黎曼空间的概念,是逃避不了的,其实也仅仅是理解而已,很多基于理论的具体应用,软件的库文件去实现了,而我们不过是调用(程序开发者)或者去使用调用结果而已。
然而,即使是理解也是有难度的。
也有资料对黎曼空间的解释就是弯曲的空间。为了抵抗既有知识的束缚,我们需要充分地发挥想象力。针对一维空间,不妨将直线数轴的概念推广到沿着空间曲线,而将该曲线称为一个线空间,那么类似数轴上长度单位的刻度点,在线空间上也有用来度量的分割点,当然度量的单位就不仅仅是长度了。
顺着这个思路,二维空间就是面空间,当然,这里的面自然不局限于平面,可以是任意的曲面,而且对应一维线空间上的刻度点,二维面空间上是两个方向的度量参考线,当然不局限于直线,只不过绘出这些线以后,与笛卡尔坐标系中XY平面坐标网有些类似,这就是UV坐标线。
怎样来理解UV两个方向的参考线呢?
我们也可以借助于曲面参数方程来进行如下的推演: