作者:超图研究院技术支持中心-于丁
随着SuperMap iDesktop 10i(2021)
V10.2.1的上线发布,为进一步拓展全空间数据模型及其分析计算能力,一个新功能“3D极坐标建模”也随着该版本悄然上线。
3D极坐标建模功能实现根据UV参数和数学表达式,构建包括球面、抛物面、双曲抛物面、柱面、圆锥面、莫比乌斯环面、螺旋面、螺旋环面以及Roman曲面等多种3D曲面模型。
一、曲面建模
3D极坐标建模的本质就是曲面建模,在曲面建模领域上超图iDesktop同样是无法避开UV坐标的。但实际应用上,我们绝大部分人并不是该领域专业出身的,都是在各个应用软件或项目需求中发现UV坐标这个新领域的,也许我们都曾试图通过百度简单搜索个“新手0基础uv坐标曲面建模5分钟上手教程”的东西,或者轻重强度的资料搜索钻研搞懂。但真的上手都很快放弃了,我们会发现在曲面建模“入门”上,没有接触过的数学概念一个追着一个抱团袭击我们的大脑“黎曼几何”、“非欧控件”、“微分几何”、“样条曲线”…打的我们落荒而逃。我们视图跳过清晰地了解数学原理,直接上手操作各大平台的建模软件进行实战操作,却又发现使用预设模板点击一下就建模成功了,但想要自己需要的造型进行修改,面对复杂、陌生、庞大的参数调整甚至创造时,软件没那么
“自动”、“智能”了,力不从心又无处下手。
虽然数学有自身的优雅,能亲手推导、构造每一步的人凤毛麟角,但我们只是了解理解相关逻辑,借助一些成熟的辅助和平台工具,已经能够让抽象的理论照进现实,完成我们的曲面建模需求。因此本篇文章便是“3D极坐标建模”使用的原理篇,让我们从UV坐标开始带着问题,来脚踏实地的步入建模之路。
针对某一个具体的曲面,是可以通过该曲面上的U、V坐标值来指定曲面上的某个确定的点。
但是我们已习惯了欧几里得空间,习惯了在笛卡尔三维坐标系(xyz)下表示空间点的方式,我们普遍会在查阅了很多资料教程后,依然会有这样的一些问题摆在眼前:
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两个方向的参考线呢?
我们也可以借助于曲面参数方程来进行如下的推演:
已知参数曲面S的方程(x,y,Z) =
(x(u,v),y(u,v),z(u,v)),自变量u,v是曲面S的参数。在曲面S上取一点可以用r
(u0,vO)来表示,如果让参数u固定,即u=u0,而让参数v变化,则动点描出一条落在曲面S上的曲线r
(u0,v),这条曲线称为在曲面S上经过(u0,v0)的v-曲线,同理可以定义经过(u0,v0)点的u-曲线,即r
(u,
v0)。这样,参数曲面上经过每一点有一条u-曲线和一条v-曲线,它们构成曲面上的参数曲线网,如下图所示。这个推演过程也可以帮助理解曲面的UV坐标。
四、UV坐标的实现
目前在包括超图iDesktop在内的,可以做曲面处理的软件中,针对一个确定的曲面,一定有一个与其绑定在一起的UV坐标系,你也可以将它理解为一个局部坐标系,这个曲面的很多特性用这个UV坐标系来进行设置和计算会带来很大的方便。我们的曲面相关操作,包括二次开发的接口一定以UV坐标系来处置的。
也就是说即使是专注于建模使用的软件,一样是离不开UV坐标的,如Rhino、Catia等等。
到目前为止,尽管我们很多人还是没有很深入的,也许上述的这些粗浅的表述,我们已经能够简单的了解UV坐标下的参数方程了,各参数具体影响的是什么,如何去影像的已经有个感觉了不再茫然无措,当然接下来我们就会有这样的问题,那如何上手实操构建出自己心中所想,花里胡哨好看的模型呢?
让我们见下一篇博客《SuperMap三维复杂模型建模之3D极坐标建模——基础篇》。
若对本文内容有疑问或讨论可在本文下方留言。