目录 1
1 入门 1
IRIX和Windows系统中的Maya API 1
加载插件 2
卸载插件 2
编写一个简单的插件 2
插件的重要特色 3
Msimple.h 3
MStatus 4
MArgList 5
与Maya交互 6
API中的对象所有权 6
MOBJECT 7
封装类 7
对象类和函数集类 7
函数集类 7
命名规范 8
代理类 8
类型无关 8
添加参数 9
错误检查 9
MStatus类 10
错误日志 11
2 使用API进行选择 13
MGlobal∷setActiveSelectionList() 13
MSelectionList 13
MltSelectionList 14
setObject()方法 15
MFn∷Type枚举 16
MGlobal∷selectByName() 16
3 命令插件 17
注册命令 17
MFnPlugin 17
initializePluging() 18
Creator方法 19
MPxCommand 19
uninitializePlugin() 19
把结果返回给MEL 27
语法对象 28
标志 28
创建语法对象 29
解析参数 29
MPxContext 30
注册 30
CONTEXTS 30
MPxContextCommand 35
工具属性表单 36
MPxToolCommand 37
4 DAG层级 51
节点 51
DAG路径 52
变换和形状 52
惟一名称 54
通用镜像 54
多形状变形 54
下层 55
DAG活动例子 56
5 从属图表插件 65
父类描述 65
基础 65
从属图表(DG)节点 70
节点 73
属性和接头 73
复杂属性 73
复合属性 74
动态属性 75
数据块 75
数据创建器 76
计算方法 76
数据句柄 76
更复杂的示例 77
MPxNode及其派生类 80
6 编写一个材质节点 83
编写一个材质节点插件 83
材质节点插件剖析 84
InterpNode示例代码解析 85
派生 86
创建器 87
构造函数/析构函数 87
InterpNode示例的属性编辑器视图 95
InterpNode连接的连接编辑器视图 95
InterpNode连接的超图视图 96
材质节点分类 96
隐式连接和创建渲染节点窗口 96
Hypershade的材质节点图标 99
特殊材质节点 99
计算渲染CONTEXTS外的材质节点 100
材质节点中的SuperSampling 100
什么是操纵器 103
7 操纵器 103
基类操纵器 104
编写操纵器 105
操纵器容器 106
操纵器和节点间的通信 108
一对一关联 109
转换函数 110
编写操纵器,并让其与Show Manipulator Tool协作 112
连接操纵器和Show Manipulator Tool 112
为CONTEXTS添加操纵器 113
操纵器示例 115
8 形状 117
Maya中的形状 117
用户自定义形状 117
形状类 118
形状注册和撤销形状注册 119
编写形状 119
从哪里开始 119
绘制和刷新 120
在贴图模式下绘制 121
选择 122
组件 122
为组件映射属性 123
组件匹配 123
组件迭代 124
组件的平移、缩放和旋转工具 124
调整和内部属性 124
几何体数据 125
文件输入输出 125
变形器 126
示例形状 127
9 Maya示例插件说明 129
MEL命令插件 129
从属图表节点插件 131
渲染插件 132
用户自定义从属图表节点——创建动力学节点 132
其他插件 133
材质源代码示例 133
系统插件 133
独立应用程序示例 134
示例插件描述 134
arcLenNode 134
apiMeshShape 135
animCubeNode 135
blastCmd 136
blindComplexDataCmd 136
blindDoubleDataCmd 136
blindShortDataCmd 137
buildRotationNode 137
clusterWeightFunction 138
closestPointOnMesh 138
closestPointOnCurve 138
circleNode 138
conditionTest 139
convertBumpCmd 140
convertEdgesToContainedFacesCmd 140
convertVerticesToContainedEdgesCmd 140
convertVerticesToContainedFacesCmd 141
createClipCmd 141
cvColorNode 141
dagPoseInfoCmd 142
cvExpandCmd 142
cvPosCmd 142
eventTest 143
exportJointClusterDataCmd 143
exportSkinClusterDataCmd 144
findFileTexturesCmd 144
fullLoftNode 145
footPrintNode 145
footPrintManip 145
findTexturesPerPolygonCmd 145
getAtrAffectsCmd 146
getProjectedFacesCmd 146
helixCmd 146
helix2Cmd 147
helixMotifCmd 147
helixTool 147
helloCmd 147
helloWorldCmd 147
idleTest 148
iffInfoCmd 148
iffPixelCmd 148
iffPpmCmd 148
jitterNode 148
jlcVcrDevice 149
lepTranslator 150
latticeNoise 150
listPloyHolesCmd 151
marqueeTool 151
motionPathCmd 151
motionTraceCmd 151
listLightLinksCmd 151
moveCurveCVsCmd 152
moveNumericTool 152
moveTool 152
nodeInfoCmd 153
moveToolManip 153
multiCurveNode 153
nodeMessageCmd 154
NodeMonitor 154
offsetNode 154
ownerEmitter 154
pointOnSubdNode 155
pointOnMeshInfo 155
pnTrianglesNode 155
pickCmd 155
polyPrimitiveCmd 156
polyTrgNode 156
quadricShape 156
referenceQueryCmd 157
renderAccessNode 157
renderViewRenderCmd 158
renderViewRenderRegionCmd 158
sampleCmd 158
sampleParticles 158
scanDagCmd 159
scanDagSyntax 159
ShadingConnection 159
ShapeMonitor 159
simpleEmitter 160
shiftNode 160
shellNode 160
simpleHwShader 161
simpleLoftNode 161
simpleSolverNode 161
simpleSpring 162
sineNode 162
spiralAnimCurveCmd 162
splitUVCmd 163
surfaeeCreateCmd 163
surfaceTwistCmd 163
sweptEmitter 163
swissArmyManip 163
torusField 164
transCircleNode 164
translateCmd 164
whatisCmd 165
yTwistNode 165
viewCaptureCmd 165
zoomCameraCmd 166
独立程序示例描述 166
asciiToBinary 166
helloWorld 166
surfaceTwist 167
材质源代码示例 167
surfaceCreate 167
readAndWrite 167
anisotropicShader 168
backfillShader 168
bfickShader 168
cellShader 169
checkerShader 169
compositingShader 169
contrastShader 169
gammaShader 170
flameShader 170
displacementShader 170
depthShader 170
geomShader 171
hwAnisotropicShader_NV20 171
hwPhongShader 171
hwToonShader_NV20 171
interpShader 171
lambertShader 172
lavaShader 172
lightShader 172
mixtureShader 172
noiseShader 173
shadowMatteShader 173
slopeShader 173
solidCheckerShader 173
phongShader 173
volumeShader 174
vertexColorShader(cvColorShader) 174
10 创建插件的构建环境 175
UNIX和Linux环境 175
使用调试器调试插件 177
Windows环境 178
Maya插件 178
Maya API程序 178
手动创建插件项目文件 179
使用Developer Studio的Maya插件向导 179
创建你自己的插件构造文件 179
创建自己的Maya API程序构建文件 182
附录 185
附录A NURBS几何体 185
附录B 从属图表渲染节点 188
附录C 渲染属性 191
附录D 常见问题 196
索引 213