3dsMaxSDK及其教学应用前瞻

2022-09-12

尽管三维技术在教学应用的效果被越来越多的人所认可, 但要将该技术完全的融入到教师的日常教学中, 目前仍然存在一定的技术障碍, 而这种障碍从某种意义来说, 是因肩负着技术普及的教育技术界, 对三维建模工具应用功能拓展的研究和探索的缺失使然。

作为主流的三维工具软件的3ds MAX, 其特有的插件式结构, 与基于面向对象的思想所设计的S D K, 对开发者而言, 能够加快产品开发、减少错误、提高代码重用率、增强可维护性及可扩展性;对开发应用程序的客户而言, 面向对象的S D K接口更易于利用, 客户程序可读性更强、更易于维护。为从事多媒体教学应用的研究者将该技术应用于学科教学提供了广阔的研究空间。

1 关于3ds MAX SDK

SDK (Software Development Kit) 是用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件开发工具的集合。3 d s M A X也有一套为开发特定插件所提供的一个面向对象的程序集S D K。它是一系列由3ds MAX定义的类和函数, 通过调用这些类和函数来对M A X进行扩展, 从而开发出和M A X及其运行的操作系统相兼容的插件。

3 d s M A X中开发者开发出的插件类“样例”叫做对象, 该对象可以独立于其他对象而创建, 也可以象一个系统一样协同工作。尽管会因此而造成插件结构庞大, 但开发者可以不必考虑其他插件如何去完成任务, 而独立开发自己的插件。写一个插件只要用C++编写从类里创建对象和提供插件与系统交流的方法即可。

S D K是由一系列C++类和相关程序组成的, 所创建的插件中的大部分的S D K类, 是从三大抽象的基类中继承而来, 这三个基类的根类叫Animatable, 它定义了大多数的动画和轨迹视图交流数据的方法。从A n i m a t a b l e类中派生得到的是ReferenceMaker, 这个类允许对其它对象引用。从ReferenceMaker派生得到的是ReferenceTarget, 它是场景中对象双向交流的途径。它在R e f e r e n c e M a k e r和ReferenceTarget之间创建一个独立记录, 主要功能是当一个ReferenceTarget发生变化后, 通知其自身的ReferenceMaker适应性变化。另外, 一些不是处理动画的类 (如, 提供一个方法给插件使其作为M A X的一个函数接口类等) 并非从Animatable中继承而来。

2 3ds MAX SDK提供的开发类型

插件是由M A X提供的一些基础类中派生得到的, 比如, 开发一个几何插件对象, 需要从Simple Object类来派生。也就是说, 要开发某一类型的插件, 就要对某一类型的类进行操作, 包括:对类进行实例化, 对实例的属性进行控制而实现进一步的编辑和修改。

3 d s M A X S D K提供的开发类型主要有“主插件类 (Main Plug-In Classes) ”、“接口类 (Interface Classes) ”、“几何类 (Geometry Classes) ”、“用户接口类 (User I n t e r f a c e C l a s s e s) ”、“其他程序类 (Miscellaneous Utility Classes) ”等几大类。包括以下具体对象的开发:摄象机、控制器、文件输入输出、图形对象、过程图形、辅助对象、灯光、修改器、粒子对象、面片物体、过程对象、渲染类插件、大气插件、空间扭曲、纹理插件等。

3 3ds MAX插件的开发过程

开发一个插件之前首先要确定开发哪一个类型的插件。插件的类型决定了要使用哪些类, 从哪些类中继承, 才能在3 D中运行并与系统协同工作。

3.1 创建插件

在Microsoft Developer Studio环境中的“新建”对话框中选择“Win32 Dynamic Link Library”并输入插件保存路径 (如C:M Y P L U G S) 并命名 (如H N A M E) ;在D l l类型选择中选择“A Simple Dll Project”后退出。一个包含了以O P T, D S P, D S W, M A K和N C B为扩展名的H N A M E文件子目录, 就在C:M Y P L U G S中建立。

3.2 添加DEF和CPP文件

C P P是C++的源代码文件, D E F是模块定义文件, 即A S C I I文本文件, 它包含了一个或多个模块分别定义D L L的各种功能。

执行“新建”、“文件”、“A d dt o project”命令, 输入C++源代码的CPP文件名 (如:M Y P L U G I N.c p p) , 在打开的窗口中将编辑好的源代码文件输入即可。而创建D E F文件的方法和C P P文件一样, 不同的是在文件名中输入M Y P L U G I N.D E F, 在可编辑D E F文件的文本文件窗口中输入代码, 以下一段代码是D E F文件的基本结构, 如下:

LIBRARY MyPlugIn

E X P O R T S

LibDescription@1

LibNumberClasses@2

LibClassDesc@3

LibVersion@4

S E C T I O N S

3.3 为插件添加源文件

源文件是一个扩展名为R C的文件。一般为用户界面所创建的按钮、菜单、对话框等都会保存到R C文件中。

执行“新建”、“Resource Script”命令, 输入文件名 (如:Myplugin.RC) , 在弹出的源脚本编辑窗口中, 为这个脚本添加一个对话模板template, 根据需要设置其类型及尺寸。

对R C文件编译后会自动生成一个默认名称为resource.h的文件。这个文件将会被包含到刚才所创建的C P P文件中用来指定源I D。所以要在C P P文件中添加如下一行程序:

#Include“resource.h”

3.4 指定输出文件和Include文件

输出文件是D L L生成的, 但要指定输出文件名。

执行“Project settings”“link”命令, 输入插件的路径和文件名 (如3 D M A XS T D P L U G SM Y P L U G I N.D L O) , 当插件编译链接成功后, D L L就会被写入这个文件中。

指定Include文件的路径是在“Project s e t t i n g s”对话框中选择“C++”。再在“Category”中选择“Preprocessor”, 最后输入路径:M A X S D KI N C L U D E。然后将M C T L 3 2.L I B添加到已存在的列表中。

3.5 更新插件结构

在Microsoft Developer Studio开发环境中, Debug和Release运行动态库的时候使用的是不同的堆管理方式。大多数的开发者在Release中进行编译工作, 它使用的动态库叫做Multithreaded.DLL。这样开发的插件就必须要相匹配的运行类库, 否则就会产生冲突。

为了阻止这种冲突的发生, 需要再创造一个新的结构模块Win32 Hybrid, 同时对原有的结构模块进行一些调整。首先, 在“Build”菜单中的“Configuration”编辑框中输入“Hybrid”, 然后选“Win32Debug”并关闭“Configuration”对话框。这样就创建了一个和Win32 Debug有相同初始设置的新的H y b r i d结构模块。

再执行“Project”“Settings for”命令, 选择“Win32 Hybrid”模块。然后在“C/C++”中的“Categories”下拉菜单中选“Code Generation”;在“Use run-time library”下拉菜单中选择“Multithreaded.DLL”。在“Intermediate files”和“Output files”中都输入“Hybrid”, 确定后关闭对话框。

然后更新Win32 Release和Win32 Debug模块。具体方法都是在“Settings for”中选择“W i n 3 2 R e l e a s e”/“W i n 3 2Debug”模块。然后在“Categories”中选“Code Generation”。第二步也在“Use run-time library”中完成, 与Win32Hybrid相同。

有三个不同用途的结构模块更新结束。

3.6 指定库文件

不同类的插件对应的库文件不同, 所以要依据类型为插件添加3ds MAX库文件 (L I B) 。假设现在已经完成了对模块的调试。接着应该移动默认的模块到H y b r i d.最后更新已有的插件从属并保存。即在“Build”下拉菜单中选择“Update All Dependencies…”, 选择所有的结构模块, 并确认。

最后在“F i l e”菜单中选择“S a v e Workspace”来保存新插件。

4 3ds MAX SDK的开发的教学应用前瞻

技术的发展并被应用于教学而促进了教学效果的提高是客观事实, 但是技术本身并不会主动提高教学效果, 只有其被实施教学的人有效地运用于教学过程中才能发挥作用。具体到三维建模来说, 要制作出适合某一特定学科的三维模型, 并让其在教学中发挥应有的作用, 不论是专业的三维制作人员, 还是学科教师, 都不可能独立的完成。前者不熟悉学科知识、无法解析知识之间的联系, 后者更无法将技术直接应用于教学之中。而3 d s M A X S D K便有效地架起了技术与应用之间的桥梁。如:用3ds MAX SDK的三维模型类对象, 针对化学学科中的不同知识对象 (晶体结构;烷、烯、炔烃空间结构;大分子结构;气体分子运动;悬浊液、胶体等) 所开发的插件, 能有效地促进三维建模技术融合于化学教学中。另外, 3 d s M A X中的柔体对象、刚体对象的插件开发, 在物理学科的液体力学、力学运动模拟;地理学中的地质演化、地壳变化、天象模拟等应用领域具有非常广阔的应用前景。

尽管目前针对3 d s M A X开发的插件有百余种, 但几乎清一色地是为商业应用而开发的, 专门针对教学应用、特别是针对某一学科的特定的插件开发还未曾见到。希望从事教学技术普及和推广的工作者进行有意义的探索, 以开发出适合特定学科教学应用的三维插件, 有效促进技术应用于教学实践。

摘要:3ds max SDK的插件式结构为二次开发提供良好接口, 但教育技术界中对学科教学的三维插件开发的研究, 仍未见报道。本文对3ds max SDK基本原理进行了探讨;论述了3ds max SDK进行插件开发的基本过程和插件的文件结构;最后结合学科教学特点对其在学科教学的应用进行了论述。期望从事多媒体教学应用的研究者, 开发出面向学科教学、适合学科老师使用的更多插件, 使该技术在教学中发挥应有的作用。

关键词:3ds max,SDK,插件开发,教学应用

参考文献

[1] 维基百科网.[DB/OL].http://zh.wikipedia.org/

[2] jar.MAX SDK!.[DB/OL].http://bbs.hxsd.com.cn/post/view?bid=1&sty=1&tpg=1&ag e=0&id=4687808

[3] Max SDK Reference.

上一篇:声乐演唱中弱音技巧的训练及应用分析下一篇:腹腔镜治疗78例急性非结石性胆囊炎的临床分析