魔兽3模型文件 MDL 格式说明

来源:互联网 发布:烘焙软件 编辑:程序博客网 时间:2024/04/30 17:07

// MDLFile version Aug 9 2002 18:26:44
                  // Exported on Fri Apr 11 21:47:00 2003
                  Version {
                      FormatVersion 800,
                  }
                  // 模型数据统计结果
                  Model "Arthas" {
                      NumGeosets 4,            // 几何体个数
                      NumHelpers 4,            // 帮助者个数
                      NumBones 36,             // 骨骼个数
                      NumAttachments 9,        // 附件个数
                      NumParticleEmitters2 1,  // 粒子发射器个数
                      NumRibbonEmitters 1,     // 带子发射器个数
                      NumEvents 13,            // 事件个数
                      BlendTime 150,           // 混合时间
                      MinimumExtent { -175.945, -147.584, -73.0451 }, // 最小范围
                      MaximumExtent { 172.425, 175.079, 553.363 },    // 最大范围
                  }
                  // 动作序列
                  Sequences 13 {
                      // 各个动作
                      Anim "Stand - 1" {
                          Interval { 3333, 6667 },                      //启始时间和结束时间
                          MinimumExtent { -154.372, -145.345, -41.5714 },
                          MaximumExtent { 135.577, 144.604, 118.823 },
                          BoundsRadius 207.343,                         // 碰撞半径
                      }
                      Anim "Stand First" {
                          Interval { 10000, 16667 },
                          Rarity 5,
                          MinimumExtent { -154.372, -145.345, -50.8508 },
                          MaximumExtent { 135.577, 144.604, 129.42 },
                          BoundsRadius 207.442,
                      }
                      // ...
                  }
                  // 全局序列
                  GlobalSequences 2 {
                      Duration 3333, // 持续时间
                      Duration 1600,
                  }
                  // 纹理
                  Textures 5 {
                      Bitmap {
                          Image "",                    
                          ReplaceableId 1,             // 可替换纹理ID
                      }
                      Bitmap {
                          Image "Textures/Arthas.blp", // 纹理图片文件名
                      }
                      // ....
                  }
                  // 材质贴图
                  Materials 5 {
                      Material {
                          Layer { // 材质分层
                              FilterMode None,         // 填充模式(无)
                              Unshaded,
                              TwoSided,
                              static TextureID 0,      // 静态纹理ID(即Textures中的每几个纹理,从0开始)
                          }
                          Layer {
                              FilterMode Blend,        // 填充模式(混合)
                              TwoSided,
                              static TextureID 1,
                          }
                      }
                      Material {
                          Layer {
                              FilterMode Transparent,  // 填充模式(透明)
                              static TextureID 1,
                          }
                      }
                      Material {
                          Layer {
                              FilterMode Transparent,
                              TwoSided,
                              static TextureID 1,
                          }
                      }
                      Material {
                          Layer {
                              FilterMode Additive,     // 填充模式(迭加)
                              Unshaded,
                              static TextureID 2,
                              // Alpha参数
                              Alpha 1 {
                                  Linear,         // 线性插补
                                  3333: 0.75,     // 时间,值
                              }
                          }
                      }
                      // ...
                  }
                  // 几何设置
                  Geoset {
                      // 顶点
                      Vertices 292 {
                          { -13.7686, -0.1468, 58.0846 }, // 顶点(x,y,z)
                          { 1.97852, -0.1468, 57.8275 },
                          { -0.93993, -1.96151, 41.4989 },
                          { 1.97852, -0.1468, 57.8275 },
                          // ...
                      }
                      // 法线
                      Normals 292 {
                          { -0.436008, 0.793753, -0.424091 }, // 法线值(x,y,z)
                          { 0.303597, 0.939495, -0.158675 },
                          { 0.154466, 0.969766, -0.188928 },
                          { 0.303597, 0.939495, -0.158675 },
                          // ...
                      }
                      // 纹理坐标
                      TVertices 292 {
                          { 0.324219, 0.570313 }, // 纹理坐标值(u,v)
                          { 0.302178, 0.55865 },
                          { 0.276749, 0.712802 },
                          { 0.324219, 0.570313 },
                          // ...
                      }
                      // 顶点分组
                      VertexGroup {
                          21, // 所属顶点分组索引
                          21,
                          27,
                          21,
                          // ...
                      }
                      // 面
                      Faces 1 624 {
                          // 三角形(每3个为一个三角形)
                          Triangles {
                              { 0, 1, 2, 3, 4, 2, 2, 4, 5, 5, 4, 6, ... },
                          }
                      }
                      // 顶点分组,32个组,63个值
                      Groups 32 63 {
                          Matrices { 4 },        // 对象ID
                          Matrices { 4, 5 },
                          Matrices { 4, 5, 16 },
                          Matrices { 4, 5, 19 },
                          // ...
                      }
                      MinimumExtent { -102.438, -57.7769, -53.4053 },
                      MaximumExtent { 54.9053, 85.844, 553.363 },
                      BoundsRadius 305.514,
                      Anim {
                          MinimumExtent { -41.1527, -45.6716, -1.38496 },
                          MaximumExtent { 26.0473, 38.9744, 109.492 },
                          BoundsRadius 72.5562,
                      }
                      Anim {
                          MinimumExtent { -58.8143, -56.165, -1.01386 },
                          MaximumExtent { 31.6155, 59.0087, 110.83 },
                          BoundsRadius 74.0525,
                      }
                      // ...
                      MaterialID 0,     // 材质贴图ID(即使用第几个Materials,从0开始)
                      SelectionGroup 0,
                  }
                  // 几何设置(这是第二个,有几个就有这样的几个段)
                  Geoset {
                      ...
                  }
                  // ...
                  // 骨骼 "hero"
                  Bone "hero" {
                      ObjectId 0,         // 对象ID(骨骼、Helper、附件等都是Object)
                      GeosetId 3,         // 几何体ID(对哪个几何体中的顶点有影响???)
                      GeosetAnimId None,  // 几何体动画ID
                      // 缩放变换
                      Scaling 5 {
                          Hermite,             // Hermite插补
                          GlobalSeqId 0,       // 全局序列ID(对应全局序列)
                          0: { 1, 1, 1 },      // 时间,插补数据
                              InTan { 0, 0, 0 },
                              OutTan { -0.243562, -0.243562, -0.243562 },
                          833: { 0.82329, 0.82329, 0.82329 },
                              InTan { -0.0430045, -0.0430045, -0.0430045 },
                              OutTan { -0.0395641, -0.0395641, -0.0395641 },
                          1600: { 0.917431, 0.917431, 0.917431 },
                              InTan { 0.0941409, 0.0941409, 0.0941409 },
                              OutTan { -0.137755, -0.137755, -0.137755 },
                          2400: { 0.779677, 0.779677, 0.779677 },
                              InTan { 0.0381086, 0.0381086, 0.0381086 },
                              OutTan { 0.04446, 0.04446, 0.04446 },
                          3333: { 1, 1, 1 },
                              InTan { 0.308255, 0.308255, 0.308255 },
                              OutTan { 0, 0, 0 },
                      }
                  }
                  // 骨骼 "hero2" 第2个骨骼,有多少骨骼就有多少这样的数据段
                  Bone "hero2" {
                      ...
                  }
                  // ...
                  // 帮助者 "Root" (注意,Root只是这个对象的名字,一个模型并非只有一个Root Object,RootObject并非一定叫"Root")
                  Helper "Root" {
                      ObjectId 36, // 对象ID
                      // 平移矩阵
                      Translation 227 {
                          Bezier,     // 贝塞尔变换
                          3333: { -9.16376, 0, -4.87333 },
                              InTan { -9.16318, 0, -4.87383 },
                              OutTan { -9.17838, 0, -4.86076 },
                          4167: { -9.16376, 0, -3.2888 },
                              InTan { -9.16376, 0, -3.90148 },
                              OutTan { -9.16376, 0, -2.87217 },
                          4733: { -9.16376, 0, -1.92169 },
                              InTan { -9.16376, 0, -2.20873 },
                              OutTan { -9.16376, 0, -0.942364 },
                          // ...
                      }
                      // 旋转矩阵
                      Rotation 164 {
                          Hermite, // Hermite变换
                          3333: { 0, 0, -0.214125, 0.976806 },
                              InTan { 0, 0, 0.214146, -0.976802 },
                              OutTan { 0, 0, 0.214146, -0.976802 },
                          10000: { 0, 0, 0.214125, -0.976806 },
                              InTan { 0, 0, -0.214212, 0.976787 },
                              OutTan { 0, 0, -0.214212, 0.976787 },
                          10033: { -0.000548375, 0, -0.209765, 0.977752 },
                              InTan { 0.000488569, -0.000172332, 0.210352,
                  -0.977626 },
                              OutTan { 0.000488569, -0.000172332, 0.210352,
                  -0.977626 },
                          // ...
                      }
                  }
                  Helper "ShoulderL" {
                      ...
                  }
                  // ...
                  // 附件
                  Attachment "Origin Ref " {
                      ObjectId 40,
                  }
                  Attachment "OverHead Ref " {
                      ObjectId 41,
                  }
                  Attachment "Chest Ref" {
                      ObjectId 42,
                      Parent 4, // "Bone_Chest"
                  }
                  // ...
                  // 中心点(每个对象的中心点,这是初始中心点)
                  PivotPoints 66 {
                      { -9.39722, -0.370683, 9.01962 }, // 对象中心点值(x,y,z)   
                      { -9.39722, -0.370683, 7.70602 },
                      { -9.39722, -0.370683, 17.3682 },
                      { -9.39722, -0.370683, 28.016 },
                      // ...
                  }
                  // 粒子发射器2(MDX中有两套粒子发射器)
                  ParticleEmitter2 "BlizParticle01" {
                      ObjectId 49, // 对象ID
                      Parent 22, // "Hammer" // 父对象ID
                      Unshaded,
                      static Speed 220,
                      static Variation 0.02,
                      static Latitude 180,
                      static Gravity 0,
                      Visibility 16 {
                          DontInterp,
                          3333: 0,
                          10000: 0,
                          20000: 0,
                          30000: 0,
                          33333: 0,
                          36667: 0,
                          40000: 0,
                          // ...
                      }
                      LifeSpan 0.45,
                      static EmissionRate 35,
                      static Width 0,
                      static Length 0,
                      Additive,
                      Rows 1,
                      Columns 1,
                      Tail,
                      TailLength 0.55,
                      Time 0.5,
                      SegmentColor {
                          Color { 1, 1, 1 },
                          Color { 1, 1, 1 },
                          Color { 1, 1, 1 },
                      },
                      Alpha {0, 255, 0},
                      ParticleScaling {1, 10, 1},
                      LifeSpanUVAnim {0, 0, 1},
                      DecayUVAnim {0, 0, 1},
                      TailUVAnim {0, 0, 1},
                      TailDecayUVAnim {0, 0, 1},
                      TextureID 3,
                  }
                  // 带子发射器(呵呵,不知道这样叫是否正确。魔3中模型的光带都是这个做出来的,COOL!)
                  RibbonEmitter "BlizRibbon01" {
                      ObjectId 50,
                      Parent 22,     // "Hammer"
                      static HeightAbove 30,
                      static HeightBelow 30,
                      static Alpha 0.2,
                      static Color { 1, 0.803922, 0.52549 },
                      static TextureSlot 0,
                      Visibility 17 {
                          DontInterp,
                          3333: 0,
                          10000: 0,
                          20000: 0,
                          // ...
                      }
                      EmissionRate 35,
                      LifeSpan 0.1,
                      Rows 1,
                      Columns 1,
                      MaterialID 4,
                      Translation 2 {
                          Bezier,
                          33333: { 0, 0, 0 },
                              InTan { -9.11689, -32.7187, -633.306 },
                              OutTan { 0.273507, 0.981561, 18.9992 },
                          34333: { 0.845135, 3.03302, 58.7074 },
                              InTan { 0.684157, 2.4553, 47.5251 },
                              OutTan { 1.22075, 4.38103, 84.7996 },
                      }
                      Rotation 2 {
                          Linear,
                          33333: { -0.0101647, -0.0364791, -0.706092, 0.707107
},
                          36667: { -0.0101647, -0.0364791, -0.706092, 0.707107
},
                      }
                  }
                  // 事件对象
                  EventObject "SNDXDPAL" {
                      ObjectId 51,
                      EventTrack 1 {
                          40000,
                      }
                  }
                  // ...
                  // 碰撞体
                  CollisionShape "Collision Sphere01" {
                      ObjectId 64,    // 对象ID
                      Sphere,         // 碰撞体形状(球体)
                      // 中心点
                      Vertices 1 {
                          { -21.2438, 0, 89.3649 },
                      }
                      BoundsRadius 47.1113, // 半径
                  }
                  CollisionShape "Collision Sphere02" {
                      ObjectId 65,
                      Sphere,
                      Vertices 1 {
                          { -21.2438, 0, 39.548 },
                      }
                      BoundsRadius 59.3603,
                  }

原创粉丝点击