这几天被要求写一份关于MAX SDK的文档,迫于无奈,只好硬着头皮耐着性子慢慢来磨。老大的意思是借此机会沉淀下来一些东西,于我则是一次漫长的磨难。无非以翻译为主,加上少许解释,并且假装很懂似指指点点,误人子弟。在深吸一口气后,决定于今日今时开始这一长篇累赘的文字。(2010-04-08)
一、MAX 插件概述
1.1 插件的功能
所谓插件,就是开发者自己开发的一组程序用以扩展MAX的功能。如果使用过3DS MAX,我们会发现,MAX的每组功能都封装在某一类插件中,如创建物体,修改器等等。MAX为了支持其更大的扩展性,允许程序员根据自己的需要,创建新的插件,同MAX系统进行交互,完成一些特定的功能。
在SDK中,提供了许多类供程序员使用,通过这些SDK类,程序员可以创建不同的插件。主要的插件类型有:过程对象插件、修改器插件、命令面板插件、材质/纹理插件、图像处理插件、导入导出插件、渲染插件以及其他插件。后面将逐个对这些插件进行一些简要的解释。
在介绍各类型插件之前,我们简单介绍一下SDK类的特点。在MAX SDK中,大多数类都是从三个抽象基类中继承下来的,这三个基类分别是:(1)Animatable类,动态类,该类是根类,包括其他两个基类也继承于此根类;(2)ReferenceMaker类,引用创建者类,创建引用的物体会对引用目标存在依赖性;(3)ReferenceTarget类,引用目标类,当被引用的物体发生改变时,它通知创建引用的物体,以告知其自己发生的变化,以便创建引用的物体做相应的调整。引用关系在MAX中的地位非常重要,后面我们还要对它进行详细的说明。
1.2 过程对象插件
过程对象是指用户可以在视口中创建和操作的物体,比如摄像机、灯光、长方体或球体等几何物体,以及其他一些复杂的虚拟物体。过程对象可以有自己的一些自定义属性,以球体为例,可以定义它的半径以及分段数等等。具体来说,过程对象包括一下对象:
(1) 基本几何体(Primitive Geometry)
在MAX中,存在两种基本几何体,一种是标准基本体(Standard Primitives),扩展基本体(Extends Primitives),标准基本体包括长方体、圆锥体、球体、几何球体、圆柱体、管状体、圆环、四棱锥、茶壶和平面等,扩展基本体包括异面体、环形结、切角长方体、切角圆柱体、油罐、胶囊、纺锤、L-Ext、球棱柱、C-Ext、环形波、棱柱、软管等等。显然,扩展基本体是标准基本体的一种扩展。
(2) 复合对象(Compound Objects)