fbx模型实现顶点偏移
Part1前言
有些建筑模型,建模的时候坐标采用高斯投影的方式来设置,这样会导致模型的顶点非常之大。导入到3dmax软件之后,由于其按照float精度进行渲染,从而造成渲染的模型抖动等问题。这里提出一种思路,通过将模型顶点统一进行偏移,从而解决在3dmax中渲染精度问题。
Part2fbx精度
通过如下定义可以看出fbx其实是双精度的。
class FBXSDK_DLL FbxVector4 : public FbxDouble4
具体fbx格式相关,可以参考之前的文章。看我七十二变:fbx格式
Part3建模测试
新建一个长宽高为1米的模型,然后将其放在x为2米 y为2米的位置,最后将原点移到原点。这种方法做出来的模型,居然顶点不会变化,保存之后如下
Vertices: *24 {
a: -0.5,-0.5,0,0.5,-0.5,0,-0.5,0.5,0,0.5,0.5,0,-0.5,-0.5,1,0.5,-0.5,1,-0.5,0.5,1,0.5,0.5,1
}
通过重置变换之后,顶点就符合我们预期,发生了偏移。
顶点变换如下
Vertices: *24 {
a: 1.5,1.5,0,2.5,1.5,0,1.5,2.5,0,2.5,2.5,0,1.5,1.5,1,2.5,1.5,1,1.5,2.5,1,2.5,2.5,1
}
之后我们通过fbx的sdk将顶点的x和y统一减去偏移的2米。
Part4fbxsdk代码实现
整个代码的逻辑参考fbx的sdk的demo的DisplayMesh.cxx这个文件,位置如下
D:\Program Files\Autodesk\FBX\FBX SDK\2020.3.1\samples\ImportScene
调用逻辑
1 初始化fbx的sdk
FbxManager *lSdkManager = NULL;FbxScene *lScene = NULL;// Prepare the FBX SDK.InitializeSdkObjects(lSdkManager, lScene);
2 加载fbx模型
string lFilePath = R"(D:\work\code\study\github\other\fbxsdk\cplus\tt.fbx)";
auto lResult = LoadScene(lSdkManager, lScene, lFilePath.c_str());
3 遍历模型
FbxNode *rootNode = lScene->GetRootNode();if (rootNode){for (auto i = 0; i < rootNode->GetChildCount(); i++){DisplayContent(rootNode->GetChild(i));}}
DisplayContent函数中,这里只处理FbxNodeAttribute::eMesh格式
for (auto i = 0; i < pNode->GetChildCount(); i++){DisplayContent(pNode->GetChild(i));}FbxNodeAttribute::EType lAttributeType;if (pNode->GetNodeAttribute() == NULL){std::cout << "NULL Node Attribute" << std::endl;return;}lAttributeType = (pNode->GetNodeAttribute()->GetAttributeType());if (FbxNodeAttribute::eMesh == lAttributeType){DisplayMesh(pNode);}
DisplayMesh处理中,我们只处理顶点信息
FbxMesh *lMesh = (FbxMesh *)pNode->GetNodeAttribute();DisplayControlsPoints(lMesh);
DisplayControlsPoints中对顶点信息进行统一偏移,这里减去了x和y的2米
int i, lControlPointsCount = pMesh->GetControlPointsCount();FbxVector4 *lControlPoints = pMesh->GetControlPoints();for (i = 0; i < lControlPointsCount; i++){lControlPoints[i][0] = lControlPoints[i][0] - 2;lControlPoints[i][1] = lControlPoints[i][1] - 2;}
4 保存场景
SaveScene(lSdkManager, lScene, "tt2.fbx");
Part5总结
本文主要实现了通过fbx的sdk来实现模型顶点的统一偏移。代码在github仓库地址如下:https://github.com/inveta/ModelProcess/tree/main/VertexOffset
Part6Inveta团队
Inveta团队由研发、美术设计、建模等组成。团队介绍:
https://www.inveta.cn/about.html
团队开源项目:
https://github.com/inveta
fbx模型实现顶点偏移相关推荐
- qt使用assimp加载模型_iOS使用assimpKit加载FBX模型步骤详解
研究背景 体积:一个.dae模型大概有1M那么大 而.fbx模型0.5M 现状 xcode现在不能直接读取.fbx模型 方案 1.使用assimpKit加载 2.使用Wish3D加载 结果 1.使用a ...
- UE4-基于顶点偏移制作拉扯效果
基于顶点偏移制作拉扯效果 材质方面的节点图(全览) 效果: 关键节点: Absolute World Position 该节点输出 对象(已经赋予了材质)的像素在世界坐标的三维位置,XYZ对应RGB. ...
- FBX格式解析顶点信息和用OpenGL显示
FbxSDK是解析FBX的工具,在unity和ue中使用较多,下面介绍一下用这个工具解析FBX格式并用OpenGL显示出来. FBX的scene是由一系列node组成的,node包含一个Transfr ...
- mixamo网站FBX模型带骨骼绑定动作库
mixamo网站FBX模型带骨骼绑定动作库,unity游戏各职业人物动画,兼容3dmax maya c4d iclone blender等主流3D软件 mixamo游戏3D模型带骨骼绑定FBX动作库 ...
- 不可能的工作:在FBX模型导入脚本中生成模型的预置体
不可能的工作:在FBX模型导入脚本中生成模型的预置体 #if UNITY_EDITOR using System.Collections; using System.Collections.Gener ...
- ui unity 图片高亮_程序化生成UI模型与顶点动画
顶点动画一般指通过顶点着色器对模型每个顶点独立运动的方法.在游戏中遇到碎片爆破或者聚合一类的.涉及到大量同类物体在有序和无序之间切换的特殊效果,就非常适合将所有物体顶点每帧位移和形变的迭代交付给GPU ...
- 微信小程序实现FBX模型的动画加载
鉴于有CSDN友问我FBX模型在小程序端加载的问题,我就在这里给大家介绍一下吧~ 首先,加载fbx模型,我们用到的是three.js和不同的模型类型的加载库,那么,我们在得到了web版本的加载库的前提 ...
- ThreeJS - 直接设置Fbx模型的某个关节的位移和旋转值
1 在ThreeJS中直接设置Fbx模型的某个关节的位移和旋转值 示例代码如下: fbxModel.traverse(function (child) {// 如果子节点为骨骼if(child.isB ...
- ThreeJS - 动态更换fbx模型的某个子Mesh现有的纹理贴图为指定的纹理贴图
1 动态更换fbx模型的指定纹理贴图 在使用ThreeJS中的FBXLoader的过程中,我们在有的时候只需要Fbx模型的网格信息,而每个网格的纹理我们想自己动态的指定,这在OpenGL中很简单,在T ...
最新文章
- Ajax实现DataGrid/DataList动态ToolTip
- 更改c语言程序保存地址吗,(C语言)修改文件时间程序(创建时间、修改时间、访问时间)...
- 连续时间傅里叶变换的性质(简介及推导)
- java根据经纬度坐标计算两点的距离算法
- Andriod anim alpha中的属性介绍
- Oracle数据库迁移-基础
- RASP技术攻防之基础篇
- spark:sortByKey实现二次排序
- PWA(Progressive Web App)入门系列:Sync 后台同步
- 一个权重的物体拷贝权重给多个(oneWeightToMany)
- 造兵三国的服务器要维护多久,FAQ_造兵三国_九游手机游戏
- windows2008 IIS下配置FTP服务
- 《TCP/IP详解》协议卷读书笔记之概述
- 电容式 触摸按键 原理
- python计算学分绩点的程序_Python爬虫实战七之计算大学本学期绩点
- 华为热设计工程师待遇_【华为热设计工程师面试】华为热设计工程师大家要慎重考虑。-看准网...
- mac电脑如何装双系统Linux,mac怎么装双系统|mac电脑安装双系统教程
- cadence 旋转快捷键_cadence快捷键
- 常用的学习软件,网站
- 机票价格按照淡季、旺季,头等舱和经济舱收费,输入机票原价、月份和头等舱或者经济舱 旺季(5-10月) 头等舱9折,经济舱8.5折 淡季(11-4月) 头等舱7折,经济舱6.5折
热门文章
- java判断图片是否被修改过_4种方法判断图片是否被PS处理过,你都会吗? | X的博客...
- IT外包服务主要会面临什么样的困难或者难题
- 2262 c语言软件解码,单片机解码315M的pt2262编码的c51程序
- 信安Note_day14
- [网络安全学习篇50]:Web架构安全分析
- 概率论知识回顾(四):事件独立性、贝努利概型
- SQL临时表|游标|两个日期之间计算时差|临时表条件查询
- labview二维数组保存至excel
- ubuntu 20.04死机卡死情况解决办法
- 【数据结构-学习笔记】算法的有穷性