在Dynamo中,线和面都有PointAtParameter及NormalAtParameter等使用Parameter的节点,很多人只是知道Parameter需要是0到1之间的数字,但是对于Parameter真正的意义,在理解上还是没有GET到的,这里就介绍一下线和面的Parameter。

Parameter的本意是参数,作为可以进行参数化设计的工具,Dynamo是通过参数来控制图形类的元素,尤其是线和面。我们先来看线。

线是一维的(曲线因为所有点不能脱离线,也是一维的,相当于可以把曲线拉直),一条任意形状的曲线,一般具有两个基本的特征,有起始点和结束点。在参数化控制的设计上,Dynamo将曲线的起始点设计为0,终点设计为1。使用0和1是为了将所有曲线的参数化率统一,这个就如同将任意的一个向量Vector进行Normalize一样,这样不同的向量就有统一的一个起点,及标准化的一个长度(<1),在将来做多个向量比较、运算时简化。统一线的参数为0..1也是这个目的,可以使用一个标准化统一的标准来处理所有类型的线(包括直线、圆弧等一次曲线及双曲线等更高阶的二次及多次曲线),简化操作过程。

基本曲线(直线、圆弧)是具有可延长性的,对于可以延长的曲线,Dynamo允许程序使用越界的参数,也就是说,可以使用大于1或者小于0的参数,这时候,Dynamo内部会自动延长曲线。直接获取对应位置的点或者Normal而不需要真实的曲线延长,也就是说,Curve.PointAtParameter是可以获取不在基本曲线上,而在基本曲线延长线上的点的。

面肯定是二维的(因为所有点不能脱离面,相当于可以将三维空间曲面展开拉平),因此需要两个维度来控制其参数,这就是UV。UV相当于坐标系统的XY,因此一般情况下,UV是相互垂直的。因为这个原因,UV实际上会组成一个矩形的范围,相当于面的包围盒(BoundingBox),在这个矩形范围内,UV的参数化数据也是由0到1之间变化。

在面基本为矩形是,从0到1的UV所取得的点一般都会位于面上,面的形状非矩形时,会有一些点(甚至是大部分点)位于面的延展面上,在下图可以清楚的看到:

dynamo cloth教程(干货分享-Dynamo应用秘籍09)(1)

因此对于比较异形的面,使用Surface.PointAtParameter获取点位后,还需要判断一下点到Surface的距离是否为零来确定获取的参数点是否在Surface上。

以上是平面的情况,对于弧形或者球形的表面,这些点将沿着弧形面或者球形面展开,具体可以参照下图:

dynamo cloth教程(干货分享-Dynamo应用秘籍09)(2)


转载自:腿腿教学网

,