对openflight格式和api的学习心得转
第一章讲的是场景描述,以前有人贴过,我就不废话了
第二章 OpenFlight文件格式
一个OpenFlight数据库的层次结构被作为一个文件存储在磁盘上。文件由线性的二进制流记录组成。字节在文件中的存储顺序是按照Big Endian方式存储的(即0x1234在内存中存储顺序为0x12 0x34)。所有的OpenFlight记录都是以4个字节序列开始的。序列的前两个字节标识了记录类型(opcode),后两个字节指明记录的长度。在这种结构规律下,OpenFlight记录很容易从磁盘中读取并加以分析。
● 所有的OpenFlight记录的长度都是4字节的整数倍。当一个记录不到4字节的整数倍时,会自动填补成4的整数倍。在某些情况下,OpenFlight记录被填补成8字节的整数倍。
● 所有记录的长度(所有记录的值)同所有值的偏移值都是以字节为单位的。
● 除非明确的说明,位域和掩码都是从0开始计算的。(例如第一个位的位号为0)
● 除非明确的说明,矩阵记录的元素是以排为主要顺序存储在OpenFlight文件中的。例如,矩阵元素应该以如下顺序排列:
● 所有OpenFlight记录的长度都被限制在能被2个字节或16个bit位(65535)表示的最大长度。对于长度固定的记录,这个最大长度是足够的。对于可变尺寸的记录,这个限制被扩展记录打破。更多信息见63页“Continuation Record”。
下面是Header Record
数据类型 偏移值 长度 描述
Int 0 2 Header opcode 1
Unsigned int 2 2 长度,记录的长度(最长65535)
Char 4 8 7字符ASCII ID;0终结符(通常设为“db”)
Int 12 4 格式修订等级
Int 16 4 编辑修订等级
Char 20 32 最后修订的日期和时间
Int 52 2 下一组结点ID号
Int 54 2 下一LOD结点ID号
Int 56 2 下一物体结点(Object node)ID号
Int 58 2 下一面(多边形)结点ID号
Int 60 2 单位增加器(Unit multiplier)(总是为1)
Int 62 1 顶点坐标单位 0=米;1=千米;4=英尺;5=英寸;8=海里
Int 63 1 如果为真则在新的面上涂白塑漆
Int 64 4 标记(bits,从左到右)0=存储顶点法向量(Save vertex normals)1=填充颜色模式2=CAD视图模式3~31=保留(Spare)
Int 68 4*6 保留
Int 92 4 投影类型0=平面地球(Flat earth);1=梯形(Trapezoidal);2=圆形地球(Round earth);3=Lambert;4=UTM;5=以地球为中心的(Geocentric);6=大地测量的(Geodetic)
Int 96 4*7 保留
数据类型 偏移值 长度 描述
Int 124 2 下一个DOF结点ID号
Int 128 4 数据库原点100=OpenFlight;200=DIG I/DIG II;300=Evans and Sutherland CT5A/CT6;400=PSP DIG;600=General Electric CIV/CV/PT2000;700=Evans and Sutherland GDF
Double 132 8 西南数据库坐标x
Double 140 8 西南数据库坐标y
Double 148 8 Delta x处放置数据库
Double 156 8 Delta y处放置数据库
Int 164 2 下一个声音结点ID号
Int 166 2 下一个路径结点ID号
Int 168 4*2 保留
Int 176 2 下一个裁减结点ID号
Int 178 2 下一个文本结点ID号
Int 180 2 下一个BSP结点ID号
Int 182 2 下一个开关结点ID号
Int 184 4 保留
Double 188 8 西南角纬度
Double 196 8 西南角经度
Double 204 8 东北角纬度
Double 212 8 东北角经度
Double 220 8 原始纬度
Double 228 8 原始经度
Double 236 8 Lambert upper latitude
Double 244 8 Lambert lower latitude
Int 252 2 下一个光源结点ID号
数据类型 偏移值 长度 描述
Int 254 2 下一个光点结点ID号
Int 256 2 下一个路结点ID号
Int 258 2 下一个CAT结点ID号
Int 260 2 保留
Int 262 2 保留
Int 264 2 保留
Int 266 2 保留
Int 268 4 椭圆地球模型0=WGS 1984;1=WGS 1972;2=Bessel;3=Clarke 1866;4=NAD 1927;5=用户定义椭圆
Int 272 2 下一个适应结点ID号(Adaptive node ID)
Int 274 2 下一个曲面结点ID号
Int 276 2 UTM地域(为UTM投影-负值表示南半球)
Char 278 6 保留
Double 284 8 Delta z处放置数据库(在Delta x和Delta y的连接处)
Double 292 8 半径(从数据库原点到最远处的距离)
Unsigned int 300 2 下一个网格结点ID号
Unsigned int 302 2 下一个光点系统ID号
Int 304 4 保留
Double 308 8 地球长轴(为椭圆体定义)单位:米
Double 316 8 地球短轴(为椭圆体定义)单位:米
这里有一个问题:我用UE32打开两个版本的flt文件时出现的格式修订版本(format reision)如下:
版本15.69 值为00 00 06 18
版本15.70 00 00 06 22
它是长度为4的int类型。按照Big Endian方式通过值如何转换得到的版本信息?
更多阅读
SQLServer数据库备份和还原的学习
SQLServer2005的数据库恢复模式分为3种:完整恢复模式、简单恢复模式、大容量日志恢复模式。◆完整恢复模式。为默认恢复模式。它会完整记录下操作数据库的每一个步骤。使用完整恢复模式可以将整个数据库恢复到一个特定的时间点,这个时
郑伊健和他的电影 (转) 郑伊健电影
...【郑伊健和他的电影】 (转)有很多人对郑伊健的走红总是很不理解,他们觉得在俊男美女如云的娱乐圈里,他不能算是特别帅气,论起演技来,又似乎不算很出色,为什么能如此走红呢,有人甚至酸溜溜地问,为什么有这么多女孩子喜欢他?首先我想说的是
FDS学习心得(转自糊涂蛋)
1.FDS的启动FDS4:FDS4<CHID.dataFDS5:FDS5 CHID.fds2.FDS中的具体命令行:SURF ID 和SURF_ID、MATL ID和MATL_ID的区别:SURF ID :是属性行SURF_ID:是obstruction和vent等的引用行(通过此行给obstruction和vent添加属性)
对西医学和中医学的思考 中医学自考本科
第一章 前言为什么我打算写这个题目?第二章中医的发展史第三章西医的发展史第四章对中医学的批判第五章中西医各自的哲学观第六章中西医各自的方法论第七章两大医学体系的未来─────
新基础教育教学的学习心得
常听人说,学生的幸运是遇到一位好老师,而我想说:座位教师我的幸运是人生旅途中有花样的学生陪伴,倾听花儿尽情绽放,我们的生命才会饱满丰盈。这是我学习“新基础教育”的最大感悟。初读此书,感悟肤浅,但一本好书的最大价值是耐读,经得起时