zoukankan      html  css  js  c++  java
  • .md5mesh and .md5anim文件介绍

      MD5模型是ID公司第一款真正意义上的骨骼格式模型,在04年随着Doom3一起面世,经过几个版本的变更,现在在骨骼模型格式中依然有其重要地位。

    一、 .md5mesh的文件结构。

    文件头:

    MD5Version <integer>

    commandline ”<string>”

    MD5Version - 一个整数,定义了md5的版本号,这个地方始终写10

    commandline - 一个字符串,是要传递个exportmodels命令控制台的参数。

    具体参数:

    numJoints <integer>

    numMeshes <integer>

    numJoints - 一个整数,该模型的骨骼数量

    numMeshes - 一个整数,模型的网格数。

    列表:

    <string> {

            [element 1]

            [element 2]

            [element 3]

            … ect …

    }

    格式:首先,声明列表类型(<string>)。然后在大括号中包含具体内容

    内容每一行为一系列元素, 进行分割。

    MD5MESH中有两个组:JointsMesh

    Joints

    “[boneName]“   [parentIndex] ( [xPos] [yPos] [zPos] ) ( [xOrient] [yOrient] [zOrient] )

    boneName - 骨骼的名称。

    parentIndex - 骨骼父节点的序号。

    xPos - 位置x坐标。

    yPos - 位置y坐标

    zPos - 位置z坐标。

    xOrient - 骨骼绕x轴方向(四元数格式)

    yOrient - 骨骼y轴方向(四元数格式)

    zOrient - 骨骼z轴方向(四元数格式)

    Mesh

    // meshes: [meshName]

    shader ”[materialName]“

    meshName - 网格的名称。

    materialName -  这个网格的材质

    Vert

    numverts <integer>

    vert [vertIndex] ( [texU] [texV] ) [weightIndex] [weightElem]

    numverts - 顶点的数量。

    vertIndex - 这个顶点的索引。

    texU - UV纹理坐标U分量。

    texV - UV纹理坐标V分量。

    weightIndex - 这个顶点在权重列表中的第一个权重的索引。

    weightElem -  这个顶点在权重列表中受影响的权重数量。

    Tri

    numtris <integer>

    tri [triIndex] [vertIndex1] [vertIndex2] [vertIndex3]

    numtris - 三角形的数量。

    triIndex - 这个三角形的索引。

    vertIndex1 - 这个三角形的第一个顶点索引。

    vertIndex2 - 这个三角形的第二个顶点索引。

    vertIndex3 - 这个三角形的第三个顶点索引。

    Weight

    numweights <integer>

    weight [weightIndex] [jointIndex] [weightValue] ( [xPos] [yPos] [zPos] )

    numweights - 权重的数量。

    weightIndex - 这个权重的索引。

    weightValue - 权重关联的骨骼。

    weightValue - 权重值。

    xPos -权重平移元素的x分量。===================顶点坐标

    yPos - 权重平移元素的y分量。

    zPos - 权重平移元素的z分量。


     

    二、.md5anim文件结构

    文件头:

    MD5Version <integer>

    commandline ”<string>”

    MD5Version - 一个整数,定义了md5的版本号,这个地方始终写10

    commandline - 一个字符串,是要传递个exportmodels命令控制台的参数。

    具体参数:

    numFrames <integer>

    numJoints <integer>

    frameRate <integer>

    numAnimatedComponents <integer>

    numFrames - 动画帧数.

    numJoints - 骨骼数量

    frameRate - 帧频

    numAnimatedComponents - 动画元素数量

    列表:

    <string> {

            [element 1]

            [element 2]

            [element 3]

            … ect …

    }

    格式:首先,声明列表类型(<string>)。然后在大括号中包含具体内容

    内容每一行为一系列元素, 进行分割。

    Hierarchy

    “[boneName]“   [parentIndex] [numComp] [frameIndex] // [parentName] ( [tX] [tY] [tZ] [qX] [qY] [qZ] )

    boneName -骨骼名称

    parentIndex - 骨骼父节点索引.

    numComp - 变化的flags

    frameIndex - 变化数据在帧中的索引

    //以下为可选参数

    parentName - The name of the parent bone

    [tX] - Optional placeholder just to provide a visual of what components are animated

    [tY] - Optional placeholder just to provide a visual of what components are animated

    [tZ] - Optional placeholder just to provide a visual of what components are animated

    [qX] - Optional placeholder just to provide a visual of what components are animated

    [qY] - Optional placeholder just to provide a visual of what components are animated

    [qZ] - Optional placeholder just to provide a visual of what components are animated

    Bounds

    ( [minX] [minY] [minZ] ) ( [maxX] [maxY] [maxZ] )

    minX - The X component of the frames’s minimum bounding box XYZ position.

    minY - The Y component of the frames’s minimum bounding box XYZ position.

    minZ - The Z component of the frames’s minimum bounding box XYZ position.

    maxX - The X component of the frames’s maximum bounding box XYZ position.

    maxY - The Y component of the frames’s maximum bounding box XYZ position.

    maxZ - The Z component of the frames’s maximum bounding box XYZ position.

    Baseframe

    ( [xPos] [yPos] [zPos] ) ( [xOrient] [yOrient] [zOrient] )

    ==================

    第一个origin一般为mesh坐标系中mesh初始位置

    第二个body一般表示整体(位移,旋转)

    xPos - 骨骼相对于父骨骼的平移元素的x分量。

    yPos - 骨骼相对于父骨骼的平移元素的y分量。

    zPos - 骨骼相对于父骨骼的平移元素的z分量。

    xOrient - 骨骼旋转元素的x分量(四元数格式)

    yOrient - 骨骼旋转元素的y分量(四元数格式)

    zOrient - 骨骼旋转元素的z分量(四元数格式)

    Frame 0,1,2, ect…

    [xPos] [yPos] [zPos] [xOrient] [yOrient] [zOrient]

    frame 36 {
         130.2687988281===========================每帧的矢量位移
         -13.4571590424 5.9545750618 -3.0542619228

    xPos - 节点 相对于父节点的平移元素的x分量。

    yPos - 节点 相对于父节点的平移元素的y分量。

    zPos - 节点 相对于父节点的平移元素的z分量。

    xOrient - 骨骼旋转元素的x分量(四元数格式)

    yOrient - 骨骼旋转元素的y分量(四元数格式)

    zOrient - 骨骼旋转元素的z分量(四元数格式)


    本文转自:http://blog.163.com/james_huangjian/blog/static/17804934520125283275195/

  • 相关阅读:
    雑談
    safari下无法模拟click()的解决方法 ------转载
    用户操作
    居中
    replace 重写
    JS数组添加元素的三种方式
    Asp.Net Core 包
    CSS3 动画 可以参考
    CSS3 动画
    完全居中
  • 原文地址:https://www.cnblogs.com/Anzhongliu/p/6092059.html
Copyright © 2011-2022 走看看