用MAXScript实现三维渐开线齿轮建模

2015-11-25 09:21安晏辉
中国现代教育装备 2015年15期
关键词:渐开线线形脚本

安晏辉

首钢工学院 北京 100041

用MAXScript实现三维渐开线齿轮建模

安晏辉

首钢工学院 北京 100041

在简要介绍MAXScript语言的基础上,讨论了AUTODESK 3DS MAX 8环境下应用MAXScript建立三维渐开线齿轮模型的方法。

MAXScript;齿轮;建模

Autodesk 3ds Max广泛应用于广告、影视、工业设计、建筑设计、多媒体制作、游戏、辅助教学以及工程可视化等领域,是当今最流行的三维动画软件之一。用户可以在可视化环境下通过交互式操作完成三维建模、动画设置、材质指定、渲染输出等三维动画制作的各环节工作。但在Autodesk 3ds Max中通过交互式操作无法完成包含特定精确曲面的三维建模,例如渐开线齿轮齿廓等。以下应用Autodesk 3ds Max 8提供的MAXScript脚本语言完成了三维渐开线齿轮建模。

1 MAXScript语言

1.1 概述

MAXScript 是为扩展 Autodesk 3ds Max 的功能而专门设计的脚本语言。MAXScript语言编写的脚本程序只能在Autodesk 3ds Max中运行而不能脱离Autodesk 3ds Max环境独立运行。MAXScript脚本程序的编写和运行即可在Autodesk 3ds Max的New MAXScript 窗口中完成,也可应用Windows下的字处理软件如记事本或写字板,编写脚本程序并存储为纯文本文件,然后在Autodesk 3ds Max的Open MAXScript 窗口中打开并运行。

1.2 MAXScript语言基本结构

1.2.1 表达式

MAXScript的基本结构是表达式,表达式具有值。常量、变量和函数都是最简单的表达式。MAXScript中常见的表达式结构包括:简单表达式、变量声明表达式、赋值表达式、关联表达式、if 表达式、while 循环表达式、do循环表达式、for 循环表达式、退出循环表达式、函数定义表达式、函数返回表达式和结构体定义表达式等。

1.2.2 值

值是MAXScript所有类中最基本的类,可细分为子类。子类有字面表示(简称“字面”),不同的生成方法(称为构造器),参数,运算符和相关函数等项目,是与其他类之间的接口。值子类包括:基本类、时间类、特殊的类、位图类、串类、关键帧以及组参数类。

其中在编写脚本程序时应用较多的基本类可细分为:数、字符串、名称值、布尔值、颜色值、point3值、point2值、ray值、quat值、angleaxis值以及eulerangles值。

1.2.3 对象

MAXScript中包括:节点对象、修改器对象、材质对象、大气效果对象、控制器对象和渲染效果对象等。其中在三维建模中应用较多的节点对象的子类包括:几何体、线形、灯光、相机、辅助物体以及空间扭曲物体。

2 3函数解释

下面将在文中用到的部分函数给出详细解释。2.1 move,scale,rotate函数

语法:move <节点对象> < point3值>

scale <节点对象> < point3值>

rotate<节点对象><角度> <表示轴向的point3值>

解释:在三维空间内对节点对象进行移动、缩放和旋转操作。

2.2 updateshape和update函数

语法: updateshape<线形> update< mesh 物体>

解释:在通过其他函数对线形或mesh 物体进行处理后,刷新系统内部缓存和视窗图像。

2.3 addknot函数

语法:addknot <线形> <曲线索引数> ( #smooth | #corner | #bezier | #bezierCorner ) ( #curve | #line )

解释:在索引曲线上加入新点,并返回新节点的索引数。第三个选项指定新节点类型。

第四个选项指定新节点间的曲线类型和新节点的空间作坐标值。

2.4 convertToSplineShape和convertTo mesh函数

语法:convertToSplineShape <线形> convertTo mesh < mesh 物体>

解释:将参数化的线形和物体转变为可编辑样条曲线和mesh 物体。

2.5 getknotpoint 函数

语法:getknotpoint <线形> <曲线索引数> <点索引数>

解释:获取曲线上指定点的三维坐标,赋值给一个point3值。

2.6 setknottype

语法:getknotpoint <线形> <曲线索引数> <点索引数> (#smooth | #corner | #bezier

| #bezierCorner ) ( #curve | #line )

解释:设定曲线上指定点的类型。

2.7 addandweld函数

语法:addandweld <到线形> <从线形> <焊接阈值>

解释:将指定的曲线焊接到被指定的曲线上。

3 三维渐开线齿轮建模

渐开线齿轮的齿廓在Autodesk 3ds Max8中应用交互式操作无法完成建模,一般动画制作中以直齿、梯形齿或圆弧齿代替。应用MAXScript语言开发的脚本程序可完成三维渐开线齿轮的精确建模。下面给出建立二维渐开线的脚本程序并描述三维渐开线齿轮的精确建模过程。

3.1 渐开线生成

应用MAXScript语言脚本程序建立的二维渐开线图形,如图1所示。在笛卡尔坐标系中渐开线的解析方程为:

图1

建立的二维渐开线图形脚本程序源代码:

3.2 齿轮建模

3.2.1 建模过程

应用MAXScript建立三维渐开线齿轮模型的方法类似于实际齿轮加工中的仿形法。首先按给定参数:齿数和模数,产生齿轮插刀截面形状的二维图形。然后通过拉伸操作形成齿轮插刀的三维形状并按给定齿数旋转并复制,将多个齿轮插刀结合为单一物体。最后使作为齿胚的圆柱体与插刀物体作布尔运算,完成建模。

通过3.1节描述的方法,建立两条二维渐开线,渐开线展角可通过标准齿轮尺寸计算公式确定。通过setknottype函数将两条二维渐开线的4个首未点转换成#corner点,通过getknotpoint和addknot函数以其中一条二维渐开线为处理对象建立两条延长线,通过addandweld函数进行焊接操作,形成单一的二维图形(齿轮插刀截面形状),如图2所示。通过Extrude()命令拉伸操作二维图形,形成齿轮插刀三维形状(实际齿轮插刀为回转体,笔者应用其横截面完成布尔运算,只需保证二维图形拉伸的高度大于齿胚圆柱体的高度),如图3所示。按给定齿数将插刀旋转复制并结合为单一物体,如图4所示。最后通过布尔运算完成的三维渐开线齿轮模型,如图5所示。考虑齿轮结构(实际工程中齿轮的结构和各部分尺寸主要是根据工艺的考虑和经验公式确定,在通过脚本程序建模中可灵活改变各部分比例参数)完成的三维渐开线齿轮模型,如图6所示。

3.2.2 模型优化

建立二维渐开线图形时插入点数量不宜过多(过多的插入点使产生的齿轮插刀物体的点面数过大,增加系统布尔运算的负担),一般取10左右为宜;为提高模型精度,齿胚圆柱体的sides参数可取300左右。为方便后期动画制作应对模型进行必要的优化,例如通过介绍的建立三维渐开线齿轮模型脚本程序完成的模型点面数分别达到:8312和16450。通过Autodesk 3ds Max提供的Optimize命令按默认参数优化后, 在保持模型表面精度的情况下点面数精减到:5320和10466。

图2 图3

图4 图5

图6

4 结束语

脚本程序按给定参数:齿数和模数,完成三维渐开线齿轮的建模。改变参数可完成不同齿数和模数的齿轮建模。文中描述的方法,略加改动还可完成三维渐开线斜齿轮和三维渐开线人字齿轮的建模。

[1] 高志清.3DS MAX 8基础培训教程[M].北京:机械工业出版社,2006.

[2] 聐宁,樊江玲.机械原理[M].第2版.北京:清华大学出版社,2012.

Modeling of GEAR Wheel with MAXScript

An Yanhui
Shougang Institute of Technology, Beijing, 100041, China

The work of develering gear wheel modeling was described with 3DS MAX8.0 MAXScript.

MAXScript; gear wheel; modeling

2014-11-17

安晏辉,本科,高级工程师,信息工程系主任。

猜你喜欢
渐开线线形脚本
酒驾
短线法预制节段梁线形综合控制技术研究
大跨度连续刚构桥线形控制分析
安奇奇与小cool 龙(第二回)
基于NURBS理论的渐开线齿轮齿面修复
基于Pro/E的渐开线内花键安装盘参数化设计
弯曲连续梁拱桥梁结构线形控制关键技术
用修正渐开线投影法螺旋铣球面宏程序的编制
渐开线齿廓链轮梳齿刀的设计
快乐假期