目前我正在创作SolidWorks插件,用于导出OBJ格式的3D模型。
OBJ是一种开放且非常简单的格式。
我进行了谷歌搜索,并发现现有解决方案的以下信息:有几个付费插件和1个名为“Free OBJ Exporter”的免费插件。
这个免费插件被用作基础。但它不能导出贴花(Decals)。
贴花是你在主纹理上绘制的图像(如果你从SolidWorks的背景下移开,它就像弹片标记、血液滴落等)。
导出贴花是项目中重要的一部分。
我将所有的VBA代码改写成了C#。
现在我正在处理导出贴花的问题。Solidworks API文档相当贫乏。
经过一周的阅读文档和在LinkedIn上提问,我找到了以下内容:
IDecal
是从IRendererMaterial
继承而来的类。因此我可以得到所有贴花的列表并获取以下信息:
- Y位置
- X位置
- 宽度
- 高度
我还可以获取IFace2对象的列表并获取FaceDecalProperties
。
IFaceDecalProperties
提供以下信息:
TextureTranslationU
TextureTranslationV
TextureTranslationX
TextureTranslationY
TextureUScale
TextureVScale
它是什么,代表什么以及如何使用我不知道。
OBJ格式不能直接支持贴花。
我如何使用这些参数将纹理和贴花合并到一个文件中?我希望这样做可以在面上渲染贴花,并解决Z-fighting的问题,因为我没有渲染器的源代码。