说明

简称FB格式,是一个简单的二进制文件打包格式。

作用是FBX、unity、js等交换的一个中间格式。

由李剑英制定,易于读取,易于扩展

相应的代码可以用svn取得

SVN:http://code.taobao.org/svn/hayabusa/trunk/fbxdumpxna

浏览器查看:http://code.taobao.org/p/hayabusa/src/trunk/fbxdumpxna/

 

该格式中所有的字符串、整数写入方式均为一致的

实践

我们在实践中的使用方法是,将fbxdump部署在服务器,软件将fbx传到服务器,然后下载回dump打包后的文件。

这样就可以让软件拥有跨平台处理fbx的能力。

通过asp.net的处理代码如下

Svn:http://code.taobao.org/svn/hayabusa/trunk/ppsystem

浏览器查看:http://code.taobao.org/p/hayabusa/src/trunk/ppsystem/

 

 

字符串打包说明

字符串存储方式

Byte1 strlen(字符串对应的utf8数组长度)

[utf8 bytearray

..

…] utf8 数组

写入代码参考

整数打包说明

该格式中整数打包均为小头在前字节序

写入代码参考

打包格式说明

该文件第一层为打包层

是一个不压缩文件包,将多个二进制文件存为一层。

 

    head字符串,字符串,按照第一个字节为字符串长度,后续为utf8数组的形式存

    索引偏移,int32 整数,小头在前,写入四个字节

    中间二进制区

    ….

    ….

    【此处是索引偏移位置】

    索引文件长度,int32整数

    索引文件二进制区

 

包解析方法代码参考

 

索引文件为文本文件,以\n分隔,一行一个文件

每行三个信息Filename|filelen|posinpack\n

 

解析索引文件的逻辑用字符串分隔即可,参考代码如下。

场景格式说明

FreeBinary只是打包格式。

FBXXNADump是我们开发的xnadump工具,该工具将fbxdump为自定义格式,尽量保存了fbx中的信息,使用xna,是因为xnafbximporter是一个很好地c#包装,c#开发很顺,实质不依赖xna,只依赖dx9c,vc2010redist,dotnet framework4,大部分正常windows系统默认拥有所有依赖。

Dump出来的文件是这样,pack.bin 就是fb格式。是一个文件包。

其他就是打包到pack.bin 里的文件,只是保留了下来,pack.bin 里面也是这些内容

可以看到分为了4个部分。

Dump格式中文件名即为文件hash,仅有treejson除外

场景treejson格式说明

Treejson是json格式,每一层为一个jsonobject,按场景图树结构存储

参数如下

Name    节点名称

Type     节点类型,只有两种,node 空节点,mesh 有模型的节点

Trans_matrix 矩阵,下面三个是矩阵的分解,数据均无转换,fbx原文

Trans_scale

Trans_rotate

Trans_move

 

当为mesh节点时,有meshinfo子对象

Meshinfo制定一个mesh属性,只有sha1,指向对应的mesh文件

指定一个材质数组,只有sha1,指向对应的材质文件

场景材质格式说明

每一个材质是一个json文件,一些基本属性,

关键是颜色和贴图,

贴图可以导出多张,key是贴图的作用,name是贴图对应的文件,只有sha1

场景模型格式说明

场景模型为二进制格式

包含三个部分

1顶点位置

2顶点其他信息

3子模型划分

 

顶点位置是必须有的,一开始就先写入四字节顶点数量,然后写入顶点位置数组

 

然后是写入顶点其他信息

这个部分层次稍微有点多

首先是写入有几个其他信息,数量可能为零

然后作为一个数组写入

对每个信息,先写入两个字符串,一个名字,一个信息。

名字决定该信息是什么,uv?normal?这类的

Type决定该信息是什么类型,vector2 还是vector3,对应type,写入方式不同

 

最后是写入子模型划分信息,这个地方设计是按照unity的设计思路来的

分为几个子模型

然后每个子模型写入索引缓存,写的int32,没有精密的控制容量

场景贴图格式说明

场景贴图为原始格式保存,支持jpg和png

FreeBinary 格式说明的更多相关文章

  1. 日期格式代码出现两次的错误 ORA-01810

    错误的原因是使用了两次MM . 一.Oracle中使用to_date()时格式化日期需要注意格式码 如:select to_date('2005-01-01 11:11:21','yyyy-MM-dd ...

  2. 一个粗心的Bug,JSON格式不规范导致AJAX错误

    一.事件回放  今天工作时碰到了一个奇怪的问题,这个问题很早很早以前也碰到过,不过没想到过这么久了竟然又栽在这里. 当时正在联调一个项目,由于后端没有提供数据接口,于是我直接本地建立了一个 json ...

  3. excel 日期/数字格式不生效需要但双击才会生效的解决办法

    原因: Excel2007设置过单元格格式后,并不能立即生效必须挨个双击单元格,才能生效.数据行很多.效率太低. 原因:主要是一些从网上拷贝过来的日期或数字excel默认为文本格式或特殊-中文数字格式 ...

  4. 很多人很想知道怎么扫一扫二维码就能打开网站,就能添加联系人,就能链接wifi,今天说下这些格式,明天做个demo

    有些功能部分手机不能使用,网站,通讯录,wifi基本上每个手机都可以使用. 在看之前你可以扫一扫下面几个二维码先看看效果: 1.二维码生成 网址 (URL) 包含网址的 二维码生成 是大家平时最常接触 ...

  5. System.Guid ToString五中格式

    参考:https://msdn.microsoft.com/en-us/library/97af8hh4.aspx 测试代码: using System; using System.Collectio ...

  6. WebApi返回Json格式字符串

    WebApi返回json格式字符串, 在网上能找到好几种方法, 其中有三种普遍的方法, 但是感觉都不怎么好. 先贴一下, 网上给的常用方法吧. 方法一:(改配置法) 找到Global.asax文件,在 ...

  7. 你所能用到的BMP格式介绍

    原理篇: 一.编码的意义. 让我们从一个简单的问题开始,-2&-255(中间的操作符表示and的意思)的结果是多少,这个很简单的问题,但是能够写出解答过程的人并不 多.这个看起来和图片格式没有 ...

  8. 值得注意的ibatis动态sql语法格式

    一.Ibatis常用动态sql语法,简单粗暴用一例子 <select id="iBatisSelectList" parameterClass="java.util ...

  9. Lind.DDD.LindMQ~关于持久化到Redis的消息格式

    回到目录 关于持久化到Redis的消息格式,主要是说在Broker上把消息持久化的过程中,需要存储哪些类型的消息,因为我们的消息是分topic的,而每个topic又有若干个queue组成,而我们的to ...

随机推荐

  1. [ 高并发]Java高并发编程系列第二篇--线程同步

    高并发,听起来高大上的一个词汇,在身处于互联网潮的社会大趋势下,高并发赋予了更多的传奇色彩.首先,我们可以看到很多招聘中,会提到有高并发项目者优先.高并发,意味着,你的前雇主,有很大的业务层面的需求, ...

  2. RPC 使用中的一些注意点

    最近线上碰到一点小问题,分析其原因发现是出在对 RPC 使用上的一些细节掌握不够清晰导致.很多时候我们做业务开发会把 RPC 当作黑盒机制来使用,但若不对黑盒的工作原理有个基本掌握,也容易犯一些误用的 ...

  3. 【翻译】MongoDB指南/CRUD操作(一)

    [原文地址]https://docs.mongodb.com/manual/ MongoDB CRUD操作(一) 主要内容:CRUD操作简介,插入文档,查询文档. CRUD操作包括创建.读取.更新和删 ...

  4. HTML 事件(三) 事件流与事件委托

    本篇主要介绍HTML DOM中的事件流和事件委托. 其他事件文章 1. HTML 事件(一) 事件的介绍 2. HTML 事件(二) 事件的注册与注销 3. HTML 事件(三) 事件流与事件委托 4 ...

  5. 关于面试题 Array.indexof() 方法的实现及思考

    这是我在面试大公司时碰到的一个笔试题,当时自己云里雾里的胡写了一番,回头也曾思考过,最终没实现也就不了了之了. 昨天看到有网友说面试中也碰到过这个问题,我就重新思考了这个问题的实现方法. 对于想进大公 ...

  6. 漫谈C#编程语言在游戏领域的应用

    0x00 前言 随着微软越来越开放,C#也变得越来越吸引人们的眼球.而在游戏行业中,C#也开始慢慢地获得了关注.这不, 网易绝代双娇手游团队已经全面使用.Net Core支持前后端统一C#开发,跨平台 ...

  7. js参数arguments的理解

    原文地址:js参数arguments的理解 对于函数的参数而言,如下例子 function say(name, msg){ alert(name + 'say' + msg); } say('xiao ...

  8. 推荐一个ASP.NET网站内容管理系统源码

    许多人都有各自的兴趣,如打球.踢毽子.看书.看电视.玩游戏等等....我近来迷上了猜灯谜,于是业余做了一个在线猜灯谜的网站:何问起谜语. 先出个谜语让你猜猜:不可缺一点(打一字).可以在线猜:http ...

  9. jquery-treegrid树状表格的使用(.Net平台)

    上一篇介绍了DataTable,这一篇在DT的基础之上再使用jquery的一款插件:treegrid,官网地址:http://maxazan.github.io/jquery-treegrid/ 一. ...

  10. BPM端到端流程解决方案分享

    一.需求分析 1.企业规模的不断发展.管理水平的不断提升,通常伴随着企业各业务板块管理分工更细.更专业,IT系统同样越来越多.越来越专 业化.不可避免的,部门墙和信息孤岛出现了,企业的流程被部门或者I ...