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)来把之前的数据索引到新的索引中。槽糕的是,我们的这个索引还在不断地收集实时数据&…...
【算法笔记】前缀和与差分
第一课前缀和与差分 算法是解决问题的方法与步骤。 在看一个算法是否优秀时,我们一般都要考虑一个算法的时间复杂度和空间复杂度。 现在随着空间越来越大,时间复杂度成为了一个算法的重要指标,那么如何估计一个算法的时间复杂度呢…...
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理解 注意力机制是一种常见的神经网络结构࿰…...
网上这么多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实战路径 数学建模竞赛对于初学者而言,往往像一座难以攀登的高山。第一次面对赛题时,那种无从下手的迷茫感我至今记忆犹新——三个队友围着一道看似简单的题目,却连该用什么工具、从哪…...
