当前位置: 首页 > news >正文

urho3d的自定义文件格式

Urho3D尽可能使用现有文件格式,仅在绝对必要时才定义自定义文件格式。当前使用的自定义文件格式有:

二进制模型格式(.mdl)

 Model geometry and vertex morph data

byte[4]    Identifier "UMDL" or "UMD2"

uint       Number of vertex buffers

  For each vertex buffer:

  uint       Vertex count

  uint       Legacy vertex element mask (determines vertex size)

  uint       Morphable vertex range start index

  uint       Morphable vertex count

  byte[]     Vertex data (vertex count * vertex size)

  In "UMD2" format, the legacy vertex element mask is replaced with the following:

  uint       Vertex element count

  uint[]     Descriptions for each vertex element, where

             bits 0-7 = element data type, bits 8-15 = semantic, bits 16-23 = semantic index

uint    Number of index buffers

  For each index buffer:

  uint       Index count

  uint       Index size (2 for 16-bit indices, 4 for 32-bit indices)

  byte[]     Index data (index count * index size)

uint    Number of geometries

  For each geometry:

  uint       Number of bone mapping entries

  uint[]     Bone mapping data, Maps geometry bone indices to global bone indices for HW skinning.

             May be empty, in this case identity mapping will be used.

  uint       Number of LOD levels

    For each LOD level:

    float      LOD distance

    uint       Primitive type (0 = triangle list, 1 = line list)

    uint       Vertex buffer index, starting from 0

    uint       Index buffer index, starting from 0

    uint       Draw range: index start

    uint       Draw range: index count

uint    Number of vertex morphs (may be 0)

  For each vertex morph:

  cstring    Name of morph

  uint       Number of affected vertex buffers

    For each affected vertex buffer:

    uint       Vertex buffer index, starting from 0

    uint       Vertex element mask for morph data. Only positions, normals & tangents are supported.

    uint       Vertex count

      For each vertex:

      uint       Vertex index

      Vector3    Position (if included in the mask)

      Vector3    Normal (if included in the mask)

      Vector3    Tangent (if included in the mask)

Skeleton data

uint       Number of bones (may be 0)

  For each bone:

  cstring    Bone name

  uint       Parent bone index starting from 0. Same as own bone index for the root bone

  Vector3    Initial position

  Quaternion Initial rotation

  Vector3    Initial scale

  float[12]  4x3 offset matrix for skinning

  byte       Bone collision info bitmask. 1 = bounding sphere 2 = bounding box

  If bounding sphere data included:

  float      Bone radius

  If bounding box data included:

  Vector3    Bone bounding box minimum

  Vector3    Bone bounding box maximum

Bounding box data

Vector3    Model bounding box minimum

Vector3    Model bounding box maximum

Geometry center data

  For each geometry:

  Vector3    Geometry center


 

二进制动画格式(.ani)

byte[4]    Identifier "UANI"

cstring    Animation name

float      Length in seconds

uint       Number of tracks

  For each track:

  cstring    Track name (practically same as the bone name that should be driven)

  byte       Mask of included animation data. 1 = bone positions 2 = bone rotations 4 = bone scaling

  uint       Number of keyframes

    For each keyframe:

    float      Time position in seconds

    Vector3    Position (if included in data)

    Quaternion Rotation (if included in data)

    Vector3    Scale (if included in data)

注意:动画是使用绝对骨骼变换存储的。因此,仅支持动画之间的lerp混合;附加姿势修改不是。

Direct3D9二进制着色器格式(.vs3,.ps3)

byte[4]    Identifier "USHD"

short      Shader type (0 = vertex, 1 = pixel)

short      Shader model (3)

uint       Number of constant parameters

    For each constant parameter:

    cstring    Parameter name

    byte       Register index

    byte       Number of registers

uint       Number of texture units

    For each texture unit:

    cstring    Texture unit name

    byte       Sampler index

uint       Bytecode size

byte[]     Bytecode

Direct3D11二进制着色器格式(.vs4、.ps4)

byte[4]    Identifier "USHD"

short      Shader type (0 = vertex, 1 = pixel)

short      Shader model (4)

uint       Vertex element hash code (0 for pixel shaders)

uint       Number of constant parameters

    For each constant parameter:

    cstring    Parameter name

    byte       CBuffer index

    uint       Start byte offset in CBuffer

    uint       Byte size

uint       Number of texture units

    For each texture unit:

    cstring    Texture unit name

    byte       Sampler index

uint       Bytecode size

byte[]     Bytecode

包文件(.pak)

byte[4]    Identifier "UPAK" or "ULZ4" if compressed

uint       Number of file entries

uint       Whole package checksum

    For each file entry:

    cstring    Name

    uint       Start offset

    uint       Size

    uint       Checksum

    The compressed data for each file is the following, repeated until the file is done:

    ushort     Uncompressed length of block

    ushort     Compressed length of block

    byte[]     Compressed data

编译的AngelScript(.asc)    

byte[4]    Identifier "ASBC"

byte[]     Bytecode, produced by AngelScript serializer

相关文章:

urho3d的自定义文件格式

Urho3D尽可能使用现有文件格式,仅在绝对必要时才定义自定义文件格式。当前使用的自定义文件格式有: 二进制模型格式(.mdl) Model geometry and vertex morph data byte[4] Identifier "UMDL" or "UMD2" …...

spark第一章:环境安装

系列文章目录 spark第一章:环境安装 文章目录系列文章目录前言一、文件准备1.文件上传2.文件解压3.修改配置4.启动环境二、历史服务器1.修改配置2.启动历史服务器总结前言 spark在大数据环境的重要程度就不必细说了,直接开始吧。 一、文件准备 1.文件…...

MySQL---存储过程与存储函数的相关概念

MySQL—存储过程与存储函数的相关概念 存储函数和存储过程的主要区别: 存储函数一定会有返回值的存储过程不一定有返回值 存储过程和函数能后将复杂的SQL逻辑封装在一起,应用程序无需关注存储过程和函数内部复杂的SQL逻辑,而只需要简单地调…...

PMP值得考吗?

第一,PMP的价值体现 1、PMP是管理岗位必考证书。 多数企业会选择优先录用持PMP证书的管理人才,PMP成为管理岗位的必考证书。PMP在很多外企和国内中大型企业非常受重视,中石油、中海油、华为等等都会给内部员工做培训。 这些机构对项目管理…...

Quartus 报错汇总(持续更新...)

1、Error (10663): Verilog HDL Port Connection error at top_rom.v(70): output or inout port "stcp" must be connected to a structural net expression输出变量stcp在原设计文件中已经定义为reg型,在实例化时不能再定义为reg型,而应该是…...

Netty权威指南总结(一)

一、为什么选择Netty:API使用简单,开发门槛低,屏蔽了NIO通信的底层细节。功能强大,预制了很多种编解码功能,支持主流协议。定制能力强,可以通过ChannelHandler对通信框架进行灵活地拓展。性能高、成熟、稳定…...

Elasticsearch:如何轻松安全地对实时 Elasticsearch 索引重新索引你的数据

在很多的时候,由于一些需求,我们不得不修改索引的映射,也即 mapping,这个时候我们需要重新索引(reindex)来把之前的数据索引到新的索引中。槽糕的是,我们的这个索引还在不断地收集实时数据&…...

【算法笔记】前缀和与差分

第一课前缀和与差分 算法是解决问题的方法与步骤。 在看一个算法是否优秀时,我们一般都要考虑一个算法的时间复杂度和空间复杂度。 现在随着空间越来越大,时间复杂度成为了一个算法的重要指标,那么如何估计一个算法的时间复杂度呢&#xf…...

python实战应用讲解-【实战应用篇】函数式编程-八皇后问题(附示例代码)

目录 知识储备-迭代器相关模块 itertools 模块 创建新的迭代器 根据最短输入序列长度停止的迭代器...

【Servlet篇】如何解决Request请求中文乱码的问题?

前言 前面一篇文章我们探讨了 Servlet 中的 Request 对象,Request 请求对象中封装了请求数据,使用相应的 API 就可以获取请求参数。 【Servlet篇】一文带你读懂 Request 对象 也许有小伙伴已经发现了前面的方式获取请求参数时,会出现中文乱…...

SpringBoot:SpringBoot简介与快速入门(1)

SpringBoot快速入门1. SpringBoot简介2. SpringBoot快速入门2.1 创建SpringBoot项目(必须联网,要不然创建失败,在模块3会讲到原因)2.2 编写对应的Controller类2.3 启动测试3. Spring官网构建工程4. SpringBoot工程快速启动4.1 为什…...

RabbitMQ学习(十一):RabbitMQ 集群

一、集群1.1 为什么要使用集群前面我们介绍了如何安装及运行 RabbitMQ 服务,不过这些是单机版的,无法满足目前真实应用的 要求。如果 RabbitMQ 服务器遇到内存崩溃、机器掉电或者主板故障等情况,该怎么办?单台 RabbitMQ 服务器可以…...

学渣适用版——Transformer理论和代码以及注意力机制attention的学习

参考一篇玩具级别不错的代码和案例 自注意力机制 注意力机制是为了transform打基础。 参考这个自注意力机制的讲解流程很详细, 但是学渣一般不知道 key,query,value是啥。 结合B站和GPT理解 注意力机制是一种常见的神经网络结构&#xff0…...

网上这么多IT的培训机构,我们该怎么选?

说实话,千万不要把这个答案放在网上来找,因为你只能得到别人觉得合适的或者机构的广告;当然个人的培训经历可以听一听的,毕竟不靠谱的机构也有,比如让你交一两万去上线上课程或者一百号来人坐一起看视频,这…...

数据结构与算法—跳表(skiplist)

目录 前言 跳表 查询时间分析 1、时间复杂度 o(logn) 2、空间复杂度O(n) 动态插入和删除 跳表动态更新 跳表与红黑树比较 跳表实现 前言 二分查找用的数组 链表可不可以实现二分查找呢? 跳表 各方面性能比较优秀的动态数据结构,可以支持快速…...

【C++】5.C/C++内存管理

1.C/C内存管理 int globalVar 1; static int staticGlobalVar 1; void Test() {static int staticVar 1;int localVar 1;int num1[10] {1, 2, 3, 4};char char2[] "abcd";char* pChar3 "abcd";int* ptr1 (int*)malloc(sizeof (int)*4);int* ptr2 …...

一文让你彻底理解关于消息队列的使用

一、消息队列概述 消息队列中间件是分布式系统中重要的组件,主要解决应用解耦,异步消息,流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构。目前使用较多的消息队列有ActiveMQ,Rabbit…...

条件期望3

条件期望例题—连续发生的事情 连续地做二项实验, 每一次成功概率为p. 当连续k次成功时, 停止实验. 求停止实验时做的总实验次数的期望. 解: 错误解法 设NkN_kNk​为停止实验时做的总实验次数, 则 E[Nk]E[E[Nk∣Nk−1]]∑jk−1∞E[Nk∣Nk−1j]\begin{split} E[N_k] & E[E…...

第四届蓝桥杯省赛 C++ B组 - 翻硬币

✍个人博客:https://blog.csdn.net/Newin2020?spm1011.2415.3001.5343 📚专栏地址:蓝桥杯题解集合 📝原题地址:翻硬币 📣专栏定位:为想参加蓝桥杯的小伙伴整理常考算法题解,祝大家都…...

linux shell 入门学习笔记14 shell脚本+数学计算

概念 把复杂的命令执行过程,通过逻辑代码,组成一个脚本文件的方式就叫做shell脚本。 shebang #! /bin/bash #! /bin/perl #! /bin/python执行脚本的方式 source my_first.sh . my_first.shbash my_first.sh ./my_first.sh变量引用 ${var} 取出变量结果 …...

手把手教你用GLM-4V-9B:上传图片就能对话的AI模型部署实战

手把手教你用GLM-4V-9B:上传图片就能对话的AI模型部署实战 1. 环境准备与快速部署 1.1 系统要求 操作系统:Linux (推荐Ubuntu 20.04)GPU:NVIDIA显卡,显存≥24GB (如RTX 4090)CUDA:11.7Python:3.8 1.2 一…...

Linux服务器安全升级:5分钟搞定Google Authenticator+SSH双因素认证(附应急码管理技巧)

Linux服务器极简安全升级:Google Authenticator与SSH双因素认证实战指南 当你还在为服务器密码泄露风险辗转反侧时,全球已有超过80%的企业级系统采用双因素认证作为基础防护。但传统方案往往让运维新手望而却步——直到Google Authenticator遇上SSH&…...

手把手教你用Vivado 2021配置Zynq UltraScale+ GTH回环测试(附工程源码)

Zynq UltraScale GTH回环测试实战指南:从原理到源码解析 在FPGA开发领域,高速串行接口的验证一直是工程师面临的关键挑战。Xilinx UltraScale架构中的GTH收发器以其高达16.3Gbps的线速率,成为医疗成像、雷达信号处理等高性能应用的理想选择。…...

基于AI的老照片修复技术实战指南:从算法原理到完整部署

基于AI的老照片修复技术实战指南:从算法原理到完整部署 【免费下载链接】Bringing-Old-Photos-Back-to-Life Bringing Old Photo Back to Life (CVPR 2020 oral) 项目地址: https://gitcode.com/gh_mirrors/br/Bringing-Old-Photos-Back-to-Life Bringing-Ol…...

BYD Battery Emulator:让电动汽车电池成为家庭储能的智能桥梁

BYD Battery Emulator:让电动汽车电池成为家庭储能的智能桥梁 【免费下载链接】BYD-Battery-Emulator-For-Gen24 This software enables EV battery packs to be used for stationary storage in combination with solar inverters. 项目地址: https://gitcode.co…...

3分钟上手!FrankMocap让普通摄像头变身专业动捕设备

3分钟上手!FrankMocap让普通摄像头变身专业动捕设备 【免费下载链接】frankmocap A Strong and Easy-to-use Single View 3D HandBody Pose Estimator 项目地址: https://gitcode.com/gh_mirrors/fr/frankmocap 在数字内容创作与交互设计领域,3D动…...

3分钟掌握Magika:AI驱动的文件类型检测终极指南

3分钟掌握Magika:AI驱动的文件类型检测终极指南 【免费下载链接】magika 项目地址: https://gitcode.com/GitHub_Trending/ma/magika Magika是一款基于深度学习的智能文件类型检测工具,由Google开源,能够快速准确地识别各种文件的内容…...

AI生成内容检测新思路:除了红绿词表,我们还能用哪些方法识别ChatGPT写的文章?

AI生成内容检测技术全景:超越红绿词表的七种实战方法 当ChatGPT生成的论文摘要通过学术评审、AI撰写的新闻稿被主流媒体刊发时,内容真实性的边界正在变得模糊。某高校教授最近向我展示了一份学生作业——文笔流畅的哲学论述,最终被证实完全由…...

OpenClaw日志分析技巧:GLM-4.7-Flash任务执行问题定位

OpenClaw日志分析技巧:GLM-4.7-Flash任务执行问题定位 1. 为什么需要关注OpenClaw日志 上周我在尝试用GLM-4.7-Flash模型自动处理一批技术文档时,遇到了一个诡异现象:任务明明显示执行成功,但最终输出文件却是空的。这个经历让我…...

数模小白别慌!手把手教你用Python和MATLAB搞定国赛美赛(附2022年M奖/省一代码)

数模竞赛入门指南:从零到获奖的Python与MATLAB实战路径 数学建模竞赛对于初学者而言,往往像一座难以攀登的高山。第一次面对赛题时,那种无从下手的迷茫感我至今记忆犹新——三个队友围着一道看似简单的题目,却连该用什么工具、从哪…...