发布时间:2024-03-21 13:33:51 浏览量:105次
画一条曲线,画很多条曲线,让曲线连接、旋转、平移,就能建出曲面,进而搭建出模型。今天的一切工业产品设计,需都要曲面建模完成产品的参数定义。
但在一切发生之前,我们需要先得到一条曲线。
你在 PS 里随手画的线条本质上不是曲线。把它们放大,这条线会越来越模糊,最后变成一个个不同颜色的色块。
但只要色块足够小,在人眼中的边缘就是平滑的。这种显示模式被称为点阵图像,也叫位图。
计算机不像人类一样拥有徒手画线的能力,要画真正的曲线,就需要通过数学函数计算每个点的位置,再把点连成曲线。
贝塞尔曲线就是这样一种非常直观的曲线函数。
这里有 A、B、C 三个点,我们在 AB 线段上任选一个点 D,根据 AD 和 AB 的比值,在 BC 线段上找到一个点 E,让 AD:AB=BE:BC 。再连接 DE ,在 DE 线段上找出点 F,让 DF:DE = AD:AB = BE:BC。
这个 F 点,就是我们要得到的贝塞尔曲线上的一个点。让 D 点从 A 移动到 B,把得到的所有 F 点连起来,就是 ABC 三个点所定义曲线,称作二次贝塞尔曲线。
控制点越多,次数就越多。设计软件常用的画笔工具就是分段三次贝塞尔曲线,通过两个锚点和两个控制点,定义一条曲线。
这种用数学表达式定义的图形被称为矢量图。无论放大多少倍,都不会丢失信息,出现位图模式下的锯齿。
贝塞尔曲线的问题是,当控制点数量过多时,每个点对于曲线的控制就会变弱。且调整任意一个点都会影响整条曲线,不能只修改局部。
如果把像钢笔工具一样把贝塞尔曲线分段,曲线与曲线的拼接就不够光滑。无法达到工业设建模要求的 C2 连续。
于是,在贝塞尔曲线的基础上,发展出了 NURBS 曲线。Non-Uniform Rational B-Splines,中文叫非均匀有理 B 样条。
B 样条可以被看做一系列基函数的线性组合,而这些基函数又是由低次的基函数线性组合而来,每两个节点矢量之间有不同的差值,且可以调节权重。
我知道你没有听懂,在写下上面这段话的时候,我们其实也没搞懂。所以,我们完整的学习了清华大学的计算机图形学教材。现在,我们终于理解了什么是非均匀有理 B 样条。
接下来的内容将非常有趣,让我们开始吧。
首先我们要知道,贝塞尔和 NURBS 等曲线并不按照传统的 y=f(x) 的函数关系表达。而是通过定义一个新参数t,把曲线表示为一个多项式。在三维空间,就可以表示为P(t)=[x(t),y(t),z(t)]。
比如一条直线段就可参数化表示为:
P 代表点的位置,包含 X,Y,Z 轴的坐标信息,P1 是这条直线的起点,P2 是这条直线的终点。
那么,t 等于 0 时,P(t) 的位置就在 P1上,t 等于 1 时,P(t) 的位置就在 P2上,把 t 在 0 到 1 区间的每一个值对应的 P(t) 坐标连起来,就是 P1 和 P2 相连的直线。
参数函数可以清晰的表达各种曲线,比如四分之一圆弧就可表示为这样 :
理解了参数函数,我们就可以进一步理解贝塞尔曲线的函数。这是求和符号,这是基函数,不用担心,我们接下来会进一步介绍。
为了生成曲线,我们需要先确定 n+1 个控制点,记作 Pi,让每个控制点与一个基函数相乘,再把结果相加,就可以获得参数 t 对应的 P(t) 坐标,连起来就是一条逼近控制点的曲线。
以有 P0,P1,P2,P3 四个控制点的三次贝塞尔曲线为例,每一个点都有一条对应的基函数曲线。
可以看到,t 为 0 时,P1,P2,P3 的基函数结果都是 0,此时P(t) 的位置就在 P0 上,t 为 1 时,P0,P1,P2 的函数结果都是0,此时P(t) 的位置就在 P3上。
而 t 在 0 和 1 之间时,P(t) 的位置就是这四条函数与控制点相乘再相加的结果。这也意味这每个控制点的位置发生变化,都会影响最终生成的整条曲线。
而 B 样条则通过分段函数多次递归的方式解决了贝塞尔曲线的问题。可以看到,B 样条和贝塞尔的函数逻辑并无区别,但基函数和定义域 t 发生了变化。
这是 B 样条的基函数,i 是控制点的编号,k 是这条曲线的次数。
让我们以有 4 个控制点的 3 次 B 样条为例。
为了曲线可以被局部控制,首先需要设置 t0至 t7 共 8个 (4+3+1) 节点,每个节点都有固定的数值,我们就取 0、1、2、3、4、5、6、7 为 8 个节点的数值。
从基函数公式中我们可以看到,要计算 3 次 B 样条基函数,先要计算 2 次基函数,要计算 2次,要先计算 1 次,要计算 1 次,就要先计算 0 次。
根据公式,控制点 P0 的 0 次基函数 N0,0 只在 t0 和 t1 之间是 1, 其他区间都是 0。
以此类推,我们可以画出剩余 3 个控制点的基函数 N1,0 到 N3,0 。而 t4 至 t7 节点还会生成三条基函数,用于之后的计算。
在 0 次基函数的基础上,我们可以计算 1 次基函数。
基函数 N0,0 和 N1,0 会组合生成一个新节点,对应的基函数是 N0,1。以此类推,N1,0 和 N2,0 会组合成 N1,1 ;N3,0 和 N4,0 会组合成 N3,1。
此时的 B 样条是就这四条基函数和 Pi 乘积的和,即4个控制点连接的直线。
之后,可以再计算得出 2 次基函数,N0,2 到 N3,2 。再计算出 3次基函数。N0,3,N1,3,N2,3,N3,3 。最后带入公式中,就可以算出 P(t),得出整条曲线。
在这张图中,我们可以更清晰的看到 B 样条基函数的递归逻辑。
不难发现,每个 3 次基函数都只在4个节点区间内有数值,这也意味着,这个控制点终于实现了贝塞尔曲线做不到的局部控制。
在刚刚的例子中,节点之间的数值是相等的,所以也被称为均匀 B 样条。实际应用中,更常见的是节点间距不相等的非均匀 B 样条,让控制点获得更灵活的控制范围。
而「有理」,意味着可以对B 样条的每个控制点设定不同的权重,进一步控制曲线。
这就是非均匀有理 B 样条。
你可以在这个网站中,更直观的理解 NURBS 曲线。
每个控制点有4个参数,XYZ 轴的坐标和权重,权重越高,曲线就越靠近该点,让控制点获得对曲线更高的影响力。
而次数则意味则分段函数的计算次数。
次数为 1 时,就是各个控制点连接的直线。次数为 2 时,每段直线的会计算成为多段曲线,次数为 3 时,分段曲线会进一步计算,生成更短更平滑的曲线。次数可以不断升高,但在实际应用中,3 次已经够用了。
可以看到,10个同样位置的控制点,3 次的 NURBS 曲线就要比 9 次的贝塞尔曲线平滑可控的多。
有了 B 样条之后,让曲线连接、旋转、平移,就能构建出曲面了。
接下来,我们的三维模型师杰苏尔将完成一次建模。
首先用 B 样条勾勒出我们想要的模型轮廓,再添加几个额外的点让直线部分更垂直。之后,添加圆形样条,再用扫描将模型的基础形态制作出来,调整封顶形状,就基本完成了模型的身体。
再添加眼球、瞳孔,增加细分曲面,调整大小和位置,然后再复制另一个眼球,一个回形针模型就完成了。
热门资讯
探讨游戏引擎的文章,介绍了10款游戏引擎及其代表作品,涵盖了RAGE Engine、Naughty Dog Game Engine、The Dead Engine、Cry Engine、Avalanche Engine、Anvil Engine、IW Engine、Frostbite Engine、Creation引擎、Unreal Engine等引擎。借此分析引出了游戏设计领域和数字艺术教育的重要性,欢迎点击咨询报名。
2. 手机游戏如何开发(如何制作传奇手游,都需要准备些什么?)
如何制作传奇手游,都需要准备些什么?提到传奇手游相信大家都不陌生,他是许多80、90后的回忆;从起初的端游到现在的手游,说明时代在进步游戏在更新,更趋于方便化移动化。而如果我们想要制作一款传奇手游的
3. B站视频剪辑软件「必剪」:免费、炫酷特效,小白必备工具
B站视频剪辑软件「必剪」,完全免费、一键制作炫酷特效,适合新手小白。快来试试!
游戏中玩家将面临武侠人生的挣扎抉择,战或降?杀或放?每个抉定都将触发更多爱恨纠葛的精彩奇遇。《天命奇御》具有多线剧情多结局,不限主线发展,高自由...
5. Bigtime加密游戏经济体系揭秘,不同玩家角色的经济活动
Bigtime加密游戏经济模型分析,探讨游戏经济特点,帮助玩家更全面了解这款GameFi产品。
6. 3D动画软件你知道几个?3ds Max、Blender、Maya、Houdini大比拼
当提到3D动画软件或动画工具时,指的是数字内容创建工具。它是用于造型、建模以及绘制3D美术动画的软件程序。但是,在3D动画软件中还包含了其他类型的...
7. 3D动漫建模全过程,不是一般人能学的会的,会的多不是人?
步骤01:面部,颈部,身体在一起这次我不准备设计图片,我从雕刻进入。这一次,它将是一种纯粹关注建模而非整体绘画的形式。像往常一样,我从Sphere创建它...
8. 如何自己开发一款游戏(游戏开发入门必看:五大独立游戏开发技巧)
游戏开发入门必看:五大独立游戏开发技巧无论您是刚刚起步开发自己的第一款游戏,还是已经制作了几款游戏,本篇文章中的5大独立游戏开发技巧都可以帮助您更好地设计下一款游戏。无论你对游戏有着什么样的概念,都
三昧动漫对于著名ARPG游戏《巫师》系列,最近CD Projekt 的高层回应并不会推出《巫师4》。因为《巫师》系列在策划的时候一直定位在“三部曲”的故事框架,所以在游戏的出品上不可能出现《巫师4》
想让你的3D打印模型更坚固?不妨尝试一下Cura参数设置和设计技巧,让你轻松掌握!
同学您好!