骑砍战团BRF文件数据结构

一.BRF-文件头数据结构

type_mesh = "mesh" 网格
type_material = "material" 材质
type_body = "body" 碰撞体
  type_body_component = "manifold" 多面部件
  type_body_polygon = "face" 单面部件

struct brf_header{
   int type_length; //4个字节, type字符串对应长度
   char* type_name; //根据type_length获取
   int type_content_num; //4个字节,对应类型所含个数,例如含有模型6个
}

例如一个包含2个模型的BRF文件,对应的BRF文件头应该是:

二.BRF-mesh数据结构

int 对应4个字节
float 对应4个字节

struct mesh{
   int name_length;//模型名长度
   char* name;//模型名
   const int mesh_flag = 0;//mesh网格标志位
   int material_cnt;//材质名长度
   int material_name_length;//材质名长度
   char* material_name;//材质名

   int vertex_num;//顶点数量(X,y,z格式顶点) x, y, z三个坐标float类型数值
   vertex[];

   int vertex_animation_flag;//顶点动画标志位
   int vertex_animation_frame_cnt;//顶点动画对应帧数量

       long frame_time;//帧时刻
       int vertex_num;//顶点个数
       vertex[];
       int vertex_FVF_num;//顶点法向向量个数
       vertex_fvf[];
   
   int vertex_fvf_num;//顶点数量(FVF格式顶点)顶点数量
   vertex_fvf[];
   
   int triangle_num;//三角面数量
   triangle[];
}

struct vertex_normal{
   float x;
   float y;
   float z;
};

struct vertex_fvf{
   int vertex_index; //与前面读取vertex[]数组索引保持一致
   const int vertex_color; //顶点着色HEX RGB代码
   float vnx;
   float vny;
   float vnz;
   float uv_x;
   float uv_y;
   float uv_x_unused;
   float uv_y_unused;

};

struct triangle{
   int vertex_fvf_index_1;
   int vertex_fvf_index_2;
   int vertex_fvf_index_3;
}

三.BRF-body数据结构

int 对应4个字节
float 对应4个字节

struct body{
   int name_length;//碰撞体名称长度
   char* name;//碰撞体名称
   int type_length;//碰撞体类型名称长度
   int type_name;//碰撞体类型名称
   int component_cnt;//部件个数
   component[];//manifold 3D静态模型碰撞体 polygon 多边形平面碰撞体
}

#多面部件(用于场景物等复杂3D模型)
struct manifold{
   int name_length;//部件名称长度8
   char* name;//部件名称manifold
   int vertex_cnt;//顶点个数
   vertex[];
   int face_cnt;
   face[];
};

#单面部件(只有一个面的部件,用于空气墙,通道)
struct polygon{
   int name_length;//部件名称长度4
   char* name;//部件名称face
   int vertex_cnt;//顶点个数
   vertex[];
   int flag;//标志位flag
}

struct face{
   long flag;//固定标志位 00 00 00 00 FF FF FF FF
   int polygon_vertex_cnt;//构成平面的顶点数量 四边形为4 五边形为5
   vertex_index[];平面顶点索引数组
}

  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

霸王•吕布

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值