解决OpenCasCade 实体位置错乱

通过Ocaf获取step的实体,然后保存为fbx、obj等mesh格式,转换后出现子对象位置错乱的问题

原模型的效果是这样的

解决OpenCasCade 实体位置错乱_第1张图片

转换后

解决OpenCasCade 实体位置错乱_第2张图片

获取了一个模型的多个实体,但是实体的中心位置都变成坐标原点了

那么,怎么设置转换还原到以前的位置?

搜索了API接口,以及很多方法,做坐标系的转换是一个可能有效的方案

参考这个例子https://www.opencascade.com/content/move-topodsshape-global-position去对单个的shape做转换

转换方法如下:

但是并没有效果,经过打印输出(上面红色的部分),shape在创建时初始位置为0,获取不到原始位置,所以这种方法基本宣告无效

 

这个帖子给了一个可行的方案

https://www.opencascade.com/content/import-step-export-mesh-wrong-placement-items

myAssembly-> GetShapes(frshapes);

需要改成

myAssembly-> GetFreeShapes(frshapes);

我们来看接口说明

解决OpenCasCade 实体位置错乱_第3张图片

蓝色的部分就是区别,它是不基于任何参照的,所以能够获取到比较原始的数据

按以下方法修改就可以了

解决OpenCasCade 实体位置错乱_第4张图片

这是正常导出的效果

解决OpenCasCade 实体位置错乱_第5张图片

你可能感兴趣的:(图形引擎)