NURBS 曲线和曲面参数化

什么是参数?

参数是曲线或曲面上点的唯一数值(类似于坐标)。通过参数,可以沿曲线的长度方向引用特定点。参数值越大,点在曲线方向上的距离越远。

就像空间中的点具有三个维度(称为 X、Y 和 Z),点的参数是沿着曲线的一个内部维度(长度)测得的。我们将该维度称为 U。

由于曲面具有两个内部维度(长度和宽度),因此,我们需要除 U 之外的另一个参数才能指定曲面上的点。我们将该参数称为 V。

沿曲线长度方向上的每个点都有一个 U 参数,同样,曲面上的每个点都有 U 和 V 两个参数。

什么是参数化?

应用程序用于沿曲线为点编号的方法称为曲线的参数化。有两种参数化方法可用:统一和弦长。

每种方法各有优缺点,具体取决于曲线的使用方式。可以在创建新曲线时选择要使用的参数化方法,也可以重建现有曲线以使用特定的参数化方法。

统一

统一参数化为编辑点指定整数参数值,并沿两个编辑点之间的跨度均匀分布参数。因此,第一个编辑点的参数始终是 0.0,第二个编辑点始终是 1.0,第三个编辑点始终是 2.0,依此类推。

统一参数化的一个额外功能是,最后一个编辑点的参数值同时还是曲线的跨度数。但是,与弦长参数化不同的是,统一曲线的参数与曲线的实际长度无关。

虽然统一参数化范围的默认值为 0 到总跨度数,但是,可以使用“重建曲线/重建曲面”(Rebuild Curve/Rebuild Surface)来将范围更改为 0 到 1。0 到 1 方案常见于其他计算机图形软件包;某些用户可能考虑到熟悉程度而希望使用这种方案。

弦长

弦是将一系列编辑点从曲线的起点连接到终点的线性段。弦长参数化为曲线起点指定参数 0.0,然后依据从起点到相关编辑点的总弦长成比例增大参数值。因此,在所示曲线中,第三个点处的参数值 3.8 是从起点到点 2 与从点 2 到点 3 这两条弦的总长度。

与统一参数化不同,弦长曲线的参数在编辑点之间并非均匀分布,而且编辑点的参数不是整数。

比较

每种参数化方法各有优缺点,具体取决于如何使用曲线或曲面。

类型 优点 缺点

弦长

参数值指示点在曲线上的相对位置。

曲率分布更好。

使纹理的拉伸和挤压最小化。

参数不直观。

由于交叉结插入,通过弦长曲线构建的曲面可能会更复杂。

统一

参数易于估计(例如,1.5 大约位于 1.0 和 2.0 两个编辑点的中间位置)。

许多情况下,编辑点之间的插值不是很好。

可能导致渲染过程中出现无法预测的纹理拉伸。

与次数一样,曲面对于其 U 向和 V 向维度,可以有不同的参数化方法。例如,可以对曲面的 U 向等参线采用次数为 3 的统一参数化方法,而对其 V 向等参线采用次数为 1 的弦长参数化方法。

为了避免在操纵接合曲面和为其设定纹理时出现问题,请确保接合曲面使用相同的参数化方法(统一或弦长)。如果两个曲面都使用统一参数化方法,请确保二者使用相同的参数范围(0 到 1 或 0 到总跨度数)。

查看参数

当选择曲线或曲面上的点时,随着拖动,会在状态行中显示 U 值和 V 值(对于曲面)。

转载自:(有删减)

Maya 帮助: NURBS 曲线和曲面参数化

NURBS 曲线和曲面参数化的更多相关文章

  1. 用OpenGL进行曲线、曲面的绘制

    实验目的 理解Bezier曲线.曲面绘制的基本原理:理解OpenGL中一维.二维插值求值器的用法. 掌握OpenGL中曲线.曲面绘图的方法,对比不同参数下的绘图效果差异: 代码1:用四个控制点绘制一条 ...

  2. TWaver3D直线、曲线、曲面的绘制

    插播一则广告(长期有效) TWaver需要在武汉招JavaScript工程师若干 要求:对前端技术(JavasScript.HTML.CSS),对可视化技术(Canvas.WebGL)有浓厚的兴趣 基 ...

  3. 【Notes_8】现代图形学入门——几何(基本表示方法、曲线与曲面)

    几何 几何表示 隐式表示 不给出点的坐标,给数学表达式 优点 可以很容易找到点与几何之间的关系 缺点 找某特定的点很难 更多的隐式表示方法 Constructive Solid Geometry .D ...

  4. OpenGL超级宝典笔记——贝塞尔曲线和曲面(转)

    http://my.oschina.net/sweetdark/blog/183721 参数方程表现形式 在中学的时候,我们都学习过直线的参数方程:y = kx + b;其中k表示斜率,b表示截距(即 ...

  5. 【转】OPENGL基本API概述

    本文信息资源来源于网络,欢迎转载!转载时请保留本文链接(http://www.shopliyang.com.cn/)! OpenGL中的gl库是核心库,glu是实用库,glut是实用工具库. gl是核 ...

  6. cg tut

    Gesture Drawing with Alex Woo Gesture Drawing with Alex Woo and Louis Gonzales http://eisneim.com/?p ...

  7. 调用gluNurbsCurve绘制圆弧

    <OpenGL编程指南>第12章第3小结专门介绍调用GLU绘制NURBS曲线或曲面,很可惜的是并未给出绘制圆弧的例子.网上可以找到很多绘制整个园的例子,却没圆弧例子,自己瞎折腾了2个礼拜, ...

  8. 【转】OpenGL相关函数库介绍

    原文:http://blog.chinaunix.net/uid-20638550-id-1909182.html OpenGL 函数库相关的API有核心库(gl).实用库(glu).辅助库(aux) ...

  9. opengl 函数

    ( 7 )光栅化.象素操作函数. 像素位置 glRasterPos*() .线型宽度 glLineWidth() .多边形绘制模式 glPolygonMode() ,读取象素 glReadPixel( ...

随机推荐

  1. npm install 报 128 错误

    [问题描述] 项目执行npm install的时候特别慢,到最后直接返回错误: verbose exit [ 1, true ] [解决方法] 执行以下两条命令: git config --globa ...

  2. python接口自动化-重定向(Location)

    一.重定向 1.重定向(redirect)就是通过各种方法将各种网络请求重新定个方向转到其它位置,从地址A跳转到地址B了. 2.重定向状态码: --301 redirect: 301 代表永久性转移( ...

  3. ABC133F Small Products

    考虑 DP. 状态 令 $f[\ell][x]$ 表示长度为 $\ell$,首项不超过 $x$ 的序列的个数. 答案是 $f[K][N]$. 有递推 $f[\ell][x] = f[\ell][x - ...

  4. 坦克大战--Java类型 ---- (2)按键设置和用户名的输入

    一.实现思路(emmmm,这个地方我很大程度参照了别人的写法)   由于键盘按键众多,因此使用选择框JComboBox 进行按键选择,点击一个JButton 按钮后,读取所有选择框中的内容,然后存到一 ...

  5. HDU 6662 Acesrc and Travel 换根DP,宇宙最傻记录

    #include<bits/stdc++.h> typedef long long ll; using namespace std; const int maxn=1e6+50; cons ...

  6. spark教程(11)-sparkSQL 数据抽象

    数据抽象 sparkSQL 的数据抽象是 DataFrame,df 相当于表格,它的每一行是一条信息,形成了一个 Row Row 它是 sparkSQL 的一个抽象,用于表示一行数据,从表现形式上看, ...

  7. 使用Python的文本挖掘的特征选择/提取

    在文本挖掘与文本分类的有关问题中,文本最初始的数据是将文档表示成向量空间模型的一个矩阵,而这个矩阵所拥有的就是不同的词,常采用特征选择方法.原因是文本的特征一般都是单词(term),具有语义信息,使用 ...

  8. Uncaught SyntaxError: Unexpected identifier

    $.ajax({ //请求头 type:"POST", contentType:"application/x-www-form-urlencoded", url ...

  9. webpack 四个核心概念

    webpack 是当下最热门的前端资源模块化和打包工具.它可以将许多松散的模块(如 CommonJs 模块. AMD 模块. ES6 模块.CSS.图片. JSON.Coffeescript. LES ...

  10. 第九篇 float浮动

    float浮动   首先老师要声明,浮动这一块,和边距.定位相比,它是比较难的,但是用它,页面排版会更好.   这节课就直接上代码,看着代码去学浮动. 我们先弄一个div,给它一个背景颜色: HTML ...