当前位置:首页 期刊杂志

基于3DS MAX Script语言的三维表面附着运动仿真

时间:2024-05-22

郑 雪,马纯永,齐永阳,韩 勇,陈 戈

(1.中国海洋大学信息科学与工程学院海洋技术系,山东青岛266100;2.中国海洋大学海洋遥感教育部重点实验室,山东青岛266100)

基于3DS MAX Script语言的三维表面附着运动仿真

郑 雪,马纯永,齐永阳,韩 勇,陈 戈

(1.中国海洋大学信息科学与工程学院海洋技术系,山东青岛266100;2.中国海洋大学海洋遥感教育部重点实验室,山东青岛266100)

3DS MAX是当前三维动画制作的主流平台。以物体在山体表面运动为例,完成了附着山体运动的仿真。利用3DS MAX Script语言,获取物体当前平面坐标对应的地形高程值,自动调节物体的高度,并实现了运动的实时性,克服了3DS MAX尚不存在碰撞检测的不足,取代了人工手动调节,大大提高了动画的制作效率。

GIS;3DS MAX Script;附着运动;实时渲染;仿真;动画

近年来,三维动画作为一种媒体得到了迅速发展,除了单纯的三维影视,越来越多的行业提出了对三维动画的需求,如:教育、宣传、广告、娱乐等。3D Studio MAX(简称3DS MAX)是AUTODESK公司出品的一个大型三维动画制作软件[1]。但是,在3DSMAX的交互环境中,无法建立批处理工具,开发人员也无法从一些简单重复的工作中解脱出来。例如,难以建立一次可以渲染多个场景的文件;难以模拟有上千个球体的星系;难以生成逼真的群鸟飞翔的动画;难以使物体按某个特定的数学曲线运动。MAX Script作为3DSMAX的辅助开发工具的出现,为开发者提供了很大的空间,一定程度上解决了以上问题[2]。

二十世纪后期,三维计算机图像技术的出现,极大地拓展了动漫的空间表达能力。随着人们对海洋的关注与研究,国内外对海洋的重视程度越来越高,海洋动漫也成为了艺术和技术上研究与开发的新热点。《小海龟漫游海底世界》是基于青岛信息产业专项资金项目“交互式三维海洋动漫软件系统的研发与应用”而制作的全新高清三维动漫片。该剧主要采用3DSMAX创建角色模型,讲述了一只善良的小海龟在寻亲途中,经历了一系列的海底探险。制作过程中,有的场景需要小海龟翻山越岭,制作动画时,需要小海龟在移动过程中贴着山体,否则将脱离地面,造成不真实的感觉。如果单用3DSMAX建模实现,需要手动将海龟的移动路径调整,以保证海龟既不陷入地下,又不在空中漂浮,工作重复且工作量巨大。针对该问题,本文利用MAX Script语言获取海龟当前平面坐标对应的地形高程值[3],并自动调节海龟的高度,实现海龟在移动过程中附着在山体的表面,大大提高了动画的制作效率。

1 MAXS cript语言简介

MAX Script是3DS MAX的内置脚本语言,它为用户提供了以下功能[4]:

1)脚本化3DSMAX各方面用途,如建模、动画、材质、渲染等。

2)通过命令行shell窗口交互控制3DS MAX。

3)软件包将在自定义工具面板菜单栏或无模式窗口中脚本化,从而为它们提供标准3DSMAX用户界面。

4)使用内置文件I/O构建自定义导入/导出工具。

5)编写可以访问整个场景状态的程序控制器,构建批处理工具,如批处理渲染脚本。

6)使用OLE自动化设置与外部系统的实时连接。

MAX Script语言是专为补充3DS MAX精心设计的,它是面向对象的,并且拥有特殊的功能和构造,反映了3DSMAX用户界面中的高级概念。MAX Script语言编辑器直接嵌入在3DSMAX中,在3DSMAX的菜单栏中包含“MAX Script”选项,运行其下拉菜单中的“新建脚本”,即可弹出MAX Script语言编辑窗口。在编辑窗口中输入程序代码,按“Ctrl+E”键运行程序。还可以利用MAX Script语言编辑器中的MAX Script侦听器来编辑运行程序。

2 系统关键技术及功能

2.1 系统关键技术

1)系统界面的创建。本系统以物体附着在类似山体的表面上运动为例,因此,系统一级界面有“附着运动”、“山体参数调节”和“运动轨迹调节”3个卷栏,点击会进入下一级界面,其中“运动轨迹调节”是本系统的核心。创建用户界面是为了实时控制物体的运动状态及轨迹。在创建用户界面时,首先应明确物体附着在山体表面上运动时,可以改变的参数有哪些,包括山体长宽,表面曲率运动轨迹等。其次,考虑应设计卷栏中各参数的修改范围和表现形式,如label(标签),spinner(微调器),button(按钮)等。

2)运动场景中模型、运动轨迹的创建及参数调节。我们需要编写一段代码自动生成运动附着的表面和运动轨迹。本系统我们以山体表面为例,进入“附着运动”的子菜单,“创建山体表面”和“创建运动轨迹”便可实现此创建功能。而“山体参数调节”卷栏可以实现山体长、宽和曲率的调节。

3)运动的实时性。物体在山体表面的附着运动方程由于不能求得解析解,故很难利用3DSMAX中的控制动画器,利用表达式动画难以实现,但是考虑到实时运算会影响系统速度,故而最终决定采用关键帧动画。本系统通过animateon函数打开动画设置,通过一个循环定义关键帧,然后通过函数attime为每一帧赋值。

2.2 系统功能介绍

本系统的一级界面有“附着运动”、“山体参数调节”和“运动轨迹调节”3个卷栏。 “附着运动”卷栏下有“创建山体表面”、“创建运动轨迹”和“渲染效果预览”按钮,由此可以实现运动场景中山体模型、运动轨迹的创建和创建后效果的预览,考虑到直接渲染大尺寸位图速度较慢,故建立了一个130×130的预览窗口并且尺寸可以随时调整,点击“渲染效果预览”按钮,则按照设定尺寸渲染一幅小图片,以便观察最终效果。

“山体参数调节”卷栏有3个控制器,分别控制着山体表面长、宽、曲率的调节。在本组卷栏中,设定了山体表面长、宽两个数值输入框,其默认值为:长:100;宽:100;曲率:16,点击按钮上两个箭头时可以使数值增加或降低。

“运动轨迹调节”卷栏是本系统的核心,通过它可以实现物体运动轨迹的任意性。最后,通过使用关键帧动画实现其运动的实时性,该按钮调用3DSMAX渲染器,可根据需要渲染成不同尺寸大小的单帧图片或动画文件,也可生成体视动画。

3 附着山体运动系统的设计和实现

3.1 系统设计思路分析

本系统的设计思路是,首先通过调用rollout等函数来创建系统各级界面,其次,创建好山体表面和运动轨迹后,使用patch_deform_binding和normalize命令对山体的形态参数进行设置,再调用 spline_ik_control等函数对山体表面和运动轨迹进行调节,然后使用patch_deform_binding命令将运动轨迹绑定到山体表面上,最后,创建运动物体,设置附着运动动画。设置好后,点击“播放动画”按钮可观看运动过程。系统设计流程图如图1所示。

3.2 MAX Script脚本代码编写

使用MAX Script语言开发文件管理程序包括编写源文件、源文件编译与源文件运行 [5]:

1)源文件编写点击New Script按钮,出现MAX Script文本窗口,输入源程序;

2)源文件编译;

3)源文件运行:保存编译后的源程序,点击Run Script按扭,运行程序。

3.2.1 创建运动轨迹

图1 系统设计流程图

步骤1定义自定义函数,判断鼠标在视图中拖拽过程中停顿点的坐标,并在该坐标添加一个点加入轨迹曲线。

步骤2在鼠标第一次点击左键的坐标处,生成轨迹曲线的起点,然后调用步骤1中自定义的函数,生成完整的轨迹曲线。

1)定义get_mouse_pos函数,函数包含2个位置参数,old_pen_pos和pen_pos,分别代表前一点的坐标和鼠标当前点的坐标。

2)判断全局参数second_knot_set的状态,来添加或者改变轨迹曲线上的点。second_knot_set代表的意义为当前点是否为轨迹曲线的第二个点,因为生成轨迹曲线时,并不知道轨迹曲线的第二点坐标,但生成的曲线须包含 2个点以上,故在生成曲线时默认将曲线第2个点与曲线第1个点重合,当鼠标拖拽后,则根据全局参数 second_knot_set的状态决定是将鼠标拖拽的新点坐标赋给曲线的第2个点,还是在该坐标上给轨迹曲线添加新点。

3)定义draw_new_line函数,这个函数的作用就是设置一个鼠标移动Callback程序来跟踪鼠标移动。该Callback程序就是通过get_mouse_pos函数的参数来跟踪鼠标的移动。

3.2.2 添加实时渲染命令的程序

整个动画时间为100帧,下面这段程序就是利用自动滑动时间滑块,并在每一帧渲染动画,然后将渲染的bitmap输出到rollout的bitmap插件框中,从而达到实时渲染的目的。

4 实验结果

打开3DS MAX软件,在MAXScript菜单栏里选择Run Script,找到程序所在的文件夹,运行本程序。点击3DS MAX中的“Run Script”按钮后,将出现本程序生成的系统界面。系统一级界面有“附着运动”、“山体参数调节”和“运动轨迹调节”3个卷栏,点击会进入下一级界面,如图2所示。

运行界面上的“创建山体表面”按钮,自动生成图 3中上面的山体,然后,拖动“山体参数调节”卷栏中的“山体表面曲率”的滑块,可以将所生成山体表面的曲率进行任意调节。图 3中下面的图即为将生成的山体表面曲率调高后的效果。

在对山体表面进行完一系列调节后,我们可以通过点击“运动轨迹调节”卷栏下的“轨迹调节”按钮,然后按住左键拖曳鼠标创建任意的运动轨迹。轨迹创建完成后,通过点击“绑定曲面”按钮并手动拾取需要绑定的曲面即可将刚才创建的运动轨迹绑定到曲面上。然后,点击“设置动画”按钮自动生成运动物体,并且将此物体的运动轨迹设置为我们刚才创建的运动轨迹。最后,点击“播放动画”按钮即可看到我们所设置的运动动画。运动截图如图4所示。

图2 系统界面效果图

图3 山体曲率调节效果图

图4 附着运动动画效果图

5 结论与展望

3DSMAX强大的建模功能众所周知,但关于MAX Script应用的介绍则相对很少。应用MAX Script编程来实现动画控制的功能,而不是采用通常使用的动画编辑器来控制动画,将复杂的运动用简单明了的动画显示,不仅物理概念明晰,而且具有直观、易于理解的特点。

本文通过调用rollout等函数创建自定义界面,通过MAX Script编程添加normalize命令和animateon函数等,实现了对虚拟山体参数的调节和三维物体附着山体表面运动动画设置。在功能上,实现了物体附着在虚拟山体表面的实时运动。同时,本文的研究结果在三维数字动漫剧《小海龟漫游海底世界》中得到了很大应用,实现了小海龟翻山越岭的场景,极大地提高了工作效率。在本系统后续的开发中,将进一步提高运动物体的仿真效果,添加多面片的碰撞检测及附着功能,使其在动画制作中获得更好的表现效果,得到更广泛的应用。

[1] Tamg Y S,Tsai H L,Yeh S S.Modeling,optim ization and classification of weld quality in tungsten inert gas welding[J].International Journal Machine Tools&Manufacture,1999(39):1 427-1 438

[2] Barnsley M F,Demko S.Rational approximations of fractals[J]. Lecture Notes in Math,1984(1105):73-88

[3] 王琦.电脑动画工作室.3DSMAX5白金手册[M].北京:北京科海电子出版社,2002

[4] 黄心渊.3DSMAX高级编程—使用脚本制作动画[M].北京:清华大学出版社,2004

[5] 王华.3DS MAXScript脚本语言完全学习手册[M].北京:兵器工业出版社,2006

Adherent M ovement Simulation on 3D Surface Based on 3DSMAX Script Language

ZHENG Xue,MA Chunyong,QI Yongyang,HAN Yong,CHEN Ge
(1.Depart me nt of Ma rineTe c hnology,College of Infor ma tion Science & Engi neering,Ocean Unive rsity of China,Qing dao 266100,China;2.Ocean Remo te Sen sing Insti tute,Ocean Uni versity of China,Qing dao 266100,China)

3DS MAX is now the mainstream platform of three-dimensional animation.This paper completed the adherentmovement simulation using an instance of object's movementon surfaceof mountains.Using 3DS MAX Script language,it obtained the corresponding terrain height valueof object's currentplane coordinate,adjusted the object's heightautomatically,realized the real-time romanceof themovement,overcome thedeficiency of collision detection of 3DS MAX,replaced the h and -manual regulations, and greatly increased the efficiency of animations.

GIS;3DS MAX Script;adherent movement;real-time romance;simulation;animation

2009-10-20

项目来源:青岛市信息产业专项资金资助项目(C-2007-001)。

P208

B

1672-4623(2010)02-0106-04

郑雪,硕士,研究方向为数字动漫、虚拟现实。

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!