基于MAXScript的立体构成插件研究及实现
2015-12-06于舒婷谢伙生
于舒婷, 谢伙生
(1. 福州大学数学与计算机科学学院,福建 福州 350116;2. 福建第二轻工业学校,福建 福州 350007)
基于MAXScript的立体构成插件研究及实现
于舒婷1,2, 谢伙生1
(1. 福州大学数学与计算机科学学院,福建 福州 350116;2. 福建第二轻工业学校,福建 福州 350007)
立体构成课程是艺术设计学科基础课程三大构成之一。基于该课程教学常面临取材难、加工难、学生三维意识薄弱等问题,采用主流三维软件3ds Max和其自带的脚本语言MAXScript对立体构成教学手段加以改进。通过分析并选取立体构成作品常用的构成要素,运用MAXScript脚本语言设计出一款能够生成多种类型数字化立体构成造型的插件。利用MAXScript的批处理能力以及界面编辑功能使立体构成教学更便捷、直观。本插件已应用于福州软件职业技术学院数字媒体设计系以及福建第二轻工业学校的立体构成课程教学中,受到师生们的普遍好评。采用MAXScript辅助立体构成教学,为立体构成教学的数字化提供一种行之有效的新方法。
立体构成;3ds Max;MAXScript;数字化教学;数字艺术
立体构成是艺术设计学科的重要基础课程,与平面构成、色彩构成被称为艺术设计学科的三大构成。从 20世纪初设立至今,已经历了近一个世纪的发展,其是三大构成中唯一一门研究三维造型构成法则和形式美的课程。传统的立体构成课程主要以学生手工制作为学习手段,材料选择的局限性和加工制作的局限性日益显现,学生的三维意识薄弱,大大影响了立体构成课程的训练效果。
近几年,也有一些研究者开始尝试采用现今应用最广泛的三维制作软件3ds Max推进立体构成数字化教学进程。3ds Max软件的功能虽然强大,但对立体构成造型的针对性不强,众多命令让初学软件的师生掌握起来有一定难度,对成百上千需手动调整的造型单体的规律变化更是难以实现。
本文采用3ds Max软件及其脚本语言MAXScript编写了一款立体构成插件。其共分成5个功能模块,使用者完成全部模块的设定,即可生成一个数字化立体构成模型。5个功能模块力求屏蔽3ds Max软件对操作技术的要求,增强对数字化立体构成造型的针对性,使没有3ds Max软件基础的师生,将精力更多集中于造型的创作上,而非技术难题的解决上。师生们可以在3ds Max中多角度观察立体构成作品,挑选最优的模型和角度渲染输出,或根据该数字化模型,完成立体构成实物作品的制作。本文方法弥补了传统立体构成课程和立体构成数字化教学的一些不足,实现让立体构成课程更加生动、教学效果更加显著的目标。
本文插件在福州软件职业技术学院和福建第二轻工业学校的立体构成课程中试用,师生们受益匪浅,普遍反映本插件能够较好地表现出立体构成造型所追求的形式美学法则,操作上不复杂,是一款容易上手、易出效果、能够让立体构成教学更加生动直观的插件。
1 立体构成数字化教学和MAXScript相关研究动态
目前,国内也有部分研究者对立体构成的数字化教学手段进行研究,大部分研究集中于三维制作软件3ds Max对立体构成造型进行模拟,实现立体构成数字化教学。例如北京工业大学的田培[1]所做的数字化立体构成研究,对将3ds Max软件引入立体构成教学之中做了探讨,详细阐述了数字化和立体构成的结合点,认为“计算机三维建模及渲染技术使学生在观察物体形态时,视点具有流动性,它能表现出形体各个侧面的细节,同时也能在空间的视点中对形态进行构建和修改,这样对问题的思考和评价就能从接近现实的三维空间考虑”。
对于MAXScript的研究,国内外则存在较大差距,国外对MAXScript的研究较多,利用其制作的插件数量大、种类多、功能全。国外的插件占有量为 86.2%。大型插件、常用插件全部来自国外[2]。而国内对MAXScript脚本插件的研究还比较少,可供学习的资料非常有限,插件的功能也相对较单一。目前,我国已经有一些研究者对3ds Max和其自带的脚本语言MAXScript在教学上的应用、在动漫、仿真软件、家具定制系统中的应用,做了一定的研究。陕西师范大学的刘红霞[3]对3ds Max和其自带的脚本语言 MAXScript在教学资源中的应用及适用范围做了详细阐述。合肥工业大学材料科学与工程学院对使用3ds Max研制注塑模动态演示多媒体教学系统的技术做了一定研究,并使用MAXScript脚本语言开发动画管理器插件,用于播放注塑模型多媒体教学动画。
目前在许多大中专院校中,利用3ds Max软件进行艺术设计类课程的辅助教学的有室内设计、场景设计、角色设计等艺术设计专业课[4]。但是将这一工具应用于辅助艺术设计基础课教学的案例却为数不多,而利用MAXScript进行艺术设计基础课教学的案例则更少。
2 基于MAXScript的立体构成插件的设计
立体构成这门学科,是要对各种“三维形态”的共性问题加以研究,探索立体形态各元素之间的构成法则,依照理性和美的法则对立体形态和空间形态进行设计[5]。通过对立体构成课程中的各构成要素进行整理归纳,可将其构成要素分为:形态要素、形式要素、材料要素、空间要素。形态要素主要指造型的基本要素,如:点、线、面、体、空间等。形式要素主要指造型的构成方法,如为造型提供优美的组合形式等。材料要素主要指造型所用到的材料,如:铁线、小木块、橡皮泥等,其涵盖了材料的色彩、肌理和材质。空间要素主要指造型所在的空间环境,只有空间的存在,才能让造型体现出立体感。
另外,3ds Max中三维效果图的制作主要遵循的流程如下:先建模,再对模型赋予一定的材质,然后调整其所在环境,包括灯光以及所在空间等,最后完成相应渲染器的设置并渲染输出。
本插件设计思路主要以真实立体构成制作的流程并结合 3ds Max制作三维效果图的步骤为依据,将立体构成插件分成“形态要素”、“形式要素”、“韵律变化”、“材料要素”、“空间要素和渲染” 5个功能模块(如图1所示)。
图1 立体构成插件功能模块架构设计
根据以上构架,需将本插件设计成浮动的应用程序界面,宽和高的尺寸类似3ds Max的材质编辑器,并按照不同功能模块建立相应卷帘窗。其主界面的截图如图2所示。
图2 立体构成插件主界面设计
“形态要素”模拟真实立体构成制作时选定一定数量的素材。其具有形态要素类型、形态要素数量、形态要素尺寸、形态要素长度设定等功能。在“形态要素数量”、“形态要素尺寸”、“形态要素长度”采用“微调器(spinner)”设计,在其中可以输入相应的数值,如“形态要素类型” 包含了立体构成中常用的块体、线体、面片等基本造型,又如:小球体、小方块、线材、面材等,采用“下拉列表(dropdownList)”设计(如图3所示)。
图3 形态要素界面设计
“形式要素” 采用“按钮(button)”设计,将许多优美的数学曲线内置于按钮之中,数字化立体构成素材按一定的数学曲线排列,使立体构成作品更具数理之美(见图4),其界面设计如图5所示。
图4 具有数理之美的数字化立体构成作品
“韵律变化”可以设定立体构成作品完成规律性变化,如:弯曲、旋转、锥化等功能。渐变,如:半径渐变、长度渐变;随机变化,如:噪波、扭转和弯曲等功能。参数的调整采用“滑块(slider)”和“按钮(button)”相结合的方式设计。使用者需要先使用滑块设定好变化的参数,再点击按钮完成相应变化,其界面设计如图6所示。
图5 形式要素界面设计
图6 韵律变化界面设计
“材料要素”模块在按钮中内置了多种实物立体构成作品的常用材质,如:卡纸、木条等;除此以外,还内置了立体构成作品中常见,但在教学中学生取材和加工较难的材质,如:金属、陶瓷、玻璃等。并通过建立“颜色拾取器(colorPicker)”,让使用者能够调节物体表面的颜色,为其既屏蔽了众多复杂的材质设定参数,又保留了一定手动调整的自由度。为了配合渲染时所采用的VRay渲染器,“材料要素”内的材质采用VRay标准材质,其中诸如“木质”中的木头纹理等主要采用相应的程序贴图实现。VRay渲染器是现今广泛应用于三维效果图渲染的插件,其渲染效果比3ds Max默认的扫描线渲染器逼真,且渲染速度大大优于 Brazil等真实感渲染器。“材料要素”模块界面设计如图7所示。
“空间要素和渲染”包含了对空间要素设定,如:渲染背景和平面的设定、灯光设定,以及渲染前的专业参数设定,如:VRay渲染设定。此类设定,将3ds Max中众多复杂而专业的参数集成于相应的按钮之上,让使用者能够一键完成众多相关参数设定,让对3ds Max不太熟悉甚至不会的使用者,能够快速掌握本插件的使用方法。其界面设计如图8所示。
图8 空间要素和渲染界面设计
3 基于MAXScript的立体构成插件的实现
3.1插件实现的相关脚本说明
MAXScript是面向对象的程序语言,3ds Max中的大多数功能能够通过MAXScript编程实现。以下就对本插件中应用的重要语句进行说明。
(1) 建立主浮动卷帘窗的语句:
marine_函数名=newrolloutfloater “主卷帘窗名”…
(2) 建立子卷帘窗的函数语句:
rollout 函数名 “卷帘窗名称” width:height:
(3) 建立物体的语句:
以建立胶囊体capsule()为例,如果要让胶囊体产生变化,则可以在 capsule后加上相应参数,例如半径、高度、位置等,具体格式如下:
capsule radius:height:pos:[,] …
(4) 建立微调器函数的语句:
Spinner 函数名 “微调器名” pos:[,] width:height:range:[, ,]
(5) 建立按钮的函数语句:
button 函数名“按钮名称” pos:[,] width:height:
(6) 建立按钮按下事件语句:
on 按钮名 pressd do (函数体)
(7) 建立下拉列表的语句:
dropdownList 函数名 “下拉列表名”
pos:[,] width: height: items:#(选择项…)
(8) 材质赋予语句:
meditMaterials[] =
(9) 颜色拾取语句:
colorPicker函数名 "颜色拾取器名称" pos:[,] width: height: color:(color)[6]
3.2插件主界面的实现
根据以上对主浮动卷帘窗函数的定义方法,将本插件的主浮动卷帘窗定义如下:marine_主浮动卷帘窗函数名=newrolloutfloater“立体构成插件”width:400 height:600。在主卷帘窗内,根据制作思路所提出的架构图,将5大功能模块用5个子卷帘窗表现出来,子卷帘窗采用rollout控件实现,其实现的主要代码和格式如下:
rollout 函数名“子卷帘窗名称” width: height:
( … )
addrollout函数名marine_主浮动卷帘窗函数名rolledup:true
3.3插件各功能模块的实现
内部子卷帘窗中的界面设定,采用的是Visual MAXScript编辑器结合直接输入代码的方式完成。Visual MAXScript是3ds Max脚本语言的强大接口,使用Visual MAXScript可以快速、直观地创建脚本的UI元素和布局。鉴于其可见性,开发者可以更加直观地使用MAXScript编辑界面,节约较多开发时间。本插件先使用Visual MAXScript编辑界面的整体外观,再使用直接编写代码的方法对代码的冗余部分手动调整,这样即节约了界面编辑的时间,又保证了代码编写的灵活性。
3.3.1“形态要素”功能模块实现
(1) 以“形态要素数量”为例,其实现代码为:
spinner sucaishuliang “形态要素数量” pos:[h1,h2] width:uheight:vrange:[k1,k2,] type:#integer scale:1 type:#integer scale:1
其含义为建立一个名为“形态要素数量”的微调器,它的位置为[h1,h2],宽度为u px,高度为v px,取值范围为在k1–k2之间的整数,每次变化的值为1。
(2) “形态要素类型”实现代码为:
dropdownList sucaileixing “形态要素类型” pos:[ ] width: height: items:#(“小方块”,“小球体”,“球形结”,“小异面体1”,…)
采用if选择语句,在下拉列表内建立相应几何体,以“直线1”为例,其实现代码为:
on sucaileixing selected sel do
(ifsucaileixing.selected==“直线 1” then for i=1 to sucaishuliang.value do Capsule radius:sucaichicun.value height:xiandechangdu.value pos:[(random –m m ),(random–m m),(random –m m)]…)[7-13]
其含义为当“形态要素类型”中选择“直线 1”选项,则生成相应素材数量,半径为“形态要素尺寸”大小的直线材,其位置在x,y,z轴上的–m至m之间。
通过这些设定,能够生成指定数量的数字化立体构成的基本素材。以生成数量为700的直线材为例,生成后结果如图9所示。
3.3.2“形式要素”功能模块实现
以“四连正切”为例,其排列方式代码为:
其含义为通过一个for循环让选中的物体按一定的位置进行排列。选择的物体有多少个,循环就做多少次。
以上生成的直线材按一定方式排列后,生成结果如图10所示。
3.3.3“韵律变化”功能模块实现
以“旋转角度”设定为例,其代码为:
slider xuanzhuanjiaodu “旋转角度” pos:[ ] width: height: range:[–n,n,0] type:#integer
其含义为设定“旋转角度”滑块的取值范围在-n至n之间,其数值的类型为整数。其中,取值范围的选择主要通过不断调试,找到合理的参数范围,让数字化立体构成作品发生一定的变化,又不至于变化过度,导致作品产生缺陷。以上生成的直线材按一定角度弯曲后,生成结果如图11所示。
3.3.4“材料要素”功能模块实现
以“浅色木质”为例,其实现主要代码和含义如下:
Vray材质;
meditMaterials[ ].texmap_diffuse = Wood ()——将表面纹理指定为木头程序纹理;
meditMaterials[ ].texmap_diffuse.color= color ——指定木头纹理的表面色;
meditMaterials[ ].texmap_diffuse. … =…——指定表面纹理的各种细节;
meditMaterials[ ].texmap_reflection_multiplier = …——指定材质表面的反射值;
meditMaterials[ ].reflection_glossiness = ——指定材质表面的反射模糊;
$.material = meditMaterials[ ] ——将材质指定给相应对象;
)[7-12]
图11 韵律变化设定结果
设定好的“浅色木质”材质,其结果如图12所示。
图12 材料要素设定结果
采用“材质要素”输出的部分材质如图 13~14所示。
图13 将造型赋予黄铜材质
图14 将造型赋予 不锈钢材质
3.3.5“空间要素和渲染”功能模块实现
以“VRay渲染设定”为例,其实现主要代码和含义如下:
vr.gi_on=true——开启 Vray渲染中的间接照明,这样可以使整个空间的光照更均匀;
vr.gi_primary_type=——设定间接照明中的光线首次反弹类型;
vr.gi_secondary_type=——设定间接照明中的光线二次反弹类型;
vr.gi_primary_multiplier=——设定间接照明中的光线首次反弹强度;
vr.gi_secondary_multiplier=——设定间接照明中的光线二次反弹强度;
vr.gi_irradmap_subdivs=——设定光子贴图的细分值;
vr.environment_gi_on=——设定环境光是否开启,开启此项可以让虚拟场景中的物体受到环境光的影响,场景会显得更加自然;
vr.lightcache_sampleSize=——设定灯光缓冲采样大小;
vr.gi_irradmap_interpSamples=——设定光子贴图的插补采样值;
vr.lightcache_subdivs=——设定灯光缓冲细分[6]。
以上造型指定“空间要素和渲染”设置后,渲染输出结果如图15~16所示。
图15 渲染结果
图16 虚拟线构成造型及营造空间
4 结 论
本文采用 MAXScript脚本语言设计出一款能生成数字化立体构成作品的插件,以辅助立体构成的常规教学。本插件在经过福州软件职业技术学院和福建第二轻工业学校师生们的试用,受到广大师生的广泛好评。其结果表明利用MAXScript模拟立体构成作品具有直观、快速、易操作的特点。艺术设计的教学方式越来越趋于多样化、数字化。在此大背景下,利用计算机三维模拟的方法进行立体构成教学研究顺应了数字化教学发展的需求。接下来,还需对艺术设计的其他基础课程的数字化教学继续展开研究,将这个课题继续深入探讨下去。相信在艺术设计基础课程教学中,计算机以不同的方法辅助教学,将会得到更深入而广泛的应用。
[1] 田培. 立体构成数字化教学研究[D]. 北京: 北京工业大学, 2012.
[2] 杨彩英. 基于MAXScript的海洋动漫制作插件的研究与应用[D]. 青岛: 中国海洋大学, 2010.
[3] 刘红霞. MAXScript语言在教学资源中的应用[D]. 西安: 陕西师范大学, 2007.
[4] 朱明秀. 基于3DS MAXScript语言的汽车仿真系统设计与研究[J]. 计算机与数字工程, 2011, 39(7): 87.
[5] 俞爱芳. 立体构成教程[M]. 杭州: 浙江人们美术出版社, 2004: 12-13.
[6] 亓鑫辉, 张汉平. 3ds Max影视特效火星课堂脚本应用篇[M]. 北京: 人民邮电出版社, 2011: 111-123, 226-231, 250-255.
[7] 江媛媛. 基于MAXScript的三维场景快速建模算法研究及应用[D]. 青岛: 中国海洋大学, 2013.
[8] 李莹, 王哲. 基于MAXScript的建筑虚拟场景设计探讨[J]. 电子测试, 2013, (10): 113.
[9] 王少伟. 基于3Ds MaxScript三维角色动画与库插件的设计与开发[D]. 上海: 上海师范大学, 2012.
[10] 赵革委, 高海静. 3DSMAX脚本语言创建批量物体动画方法初探[J]. 成功教育, 2012, (12): 280.
[11] 何昌霖. 用MaxScript从3DS Max导出骨骼动画数据[J].电脑编程技巧与维护, 2011, (9): 73.
[12] 徐瑾, 蔡秀云. 用MAXScript脚本语言生成分形图形[J]. 工程图学学报, 2003, 24(3): 96-97.
The Research and Application of Teaching of Three-Dimensional Constitutes Plugin Based on MAXScript
Yu Shuting1,2,Xie Huosheng1
(1. College of Mathematics and Computer Science, Fuzhou University, Fuzhou Fujian 350116, China; 2. Fujian Second Light Industry School, Fuzhou Fujian 350007, China)
Three-dimensional constitution is one of the most important fundamental courses of art design subjects. Currently, the course face the difficulties of getting and processing materials and the studentsʹ poor sense of space and so on. In order to improve three-dimensional construction teaching, this paper tries to use 3ds Max and its built-in scripting language MAXScript to design a three-dimensional construction plugin. First of all, analysing the constitutes elements and selecting the commonly-used three-dimensional constitution models. Secondly, using MAXScript to make the beautiful three-dimensional models in 3ds Max. And then using MAXScript language and visual MAXScript Editor to design a plugin which can make a lot of virtual three-demensional models. MAXScript is good at batch processing and interface edit. This plugin is applied in art design class in Fuzhou Software Technology Vocational College and Fujian Second Light Industry School. In practice, the teachers and students benefit from the plugin. Using MAXScript to write a plugin for aidding the teaching of three-dimensional constitution can make the teaching more convenient and visual. And it also offers a viable method for the teaching of digital three-dimensional constitution.
three-demensional constitution; 3ds Max; MAXScript; digital teaching; digital art
TP 37
A
2095-302X(2015)06-0966-07
2014-09-19;定稿日期:2014-12-13
福建省自然基金资助项目(2014J01229);福建省教育厅A类科技项目(JA15874)
于舒婷(1984–),女,福建福州人,助教,硕士。主要研究方向为数字媒体技术与艺术。E-mail:1401318737@qq.com
谢伙生(1964–),男,福建宁化人,副教授,硕士。主要研究方向为智能图形图像处理。E-mail:xiehs@qq.com