目前,我正在创建用于导出OBJ格式的3D模型的SolidWorks外接程序。
OBJ是打开的,格式非常简单
我搜索并找到了关于现有解决方案的以下信息:有几个付费插件和1个免费插件,称为“免费OBJ出口商”
它被作为一个基础。但它不出口贴花。
贴花是你在主纹理上画出来的图像(如果你离开了SolidWorks的上下文,在3D编程中,它就像子弹、血滴等的标记)。
出口标记是该项目的重要组成部分。
我将所有的VBA代码重写为C #。
现在我开始处理出口贴花的问题。文档Solidworks相当差。
在阅读了一周的文档和关于LinkedIn的几个问题之后,我发现了以下内容:
IDecal是从IRendererMaterial继承的类。因此,我可以得到所有标记的列表,并获得以下信息:
我还可以获得IFace2对象的列表并获取FaceDecalProperties。IFaceDecalProperties提供了下面的信息:
TextureTranslationUTextureTranslationVTextureTranslationXTextureTranslationYTextureUScaleTextureVScale它是什么,它代表什么,如何使用它,我不知道。
OBJ格式不支持直接标记。
如何在一个文件中使用这些参数来连接纹理和标记?我想要这样做,因为我没有渲染器的源代码,在脸上渲染,并解决Z战斗的问题。
发布于 2014-10-25 21:08:48
我不知道TextureTranslationX和TextureTranslationY在这个上下文中的含义,但是TextureTranslationU和TextureTranslationV几乎肯定是指模型的纹理坐标。
通常,在0,1之间指定(U,V)纹理坐标,并确定图像如何映射到表面。(U,V) = (0,0)通常是纹理图像最左边的像素。
因此,如果您有一组顶点,如:
v 0 0 0
v 1 0 0
v 0 1 0
v 1 1 0在(X,Y,Z)空间中定义一个正方形,这些顶点具有以下(U,V)纹理坐标:
vt 0 0
vt 1 0
vt 0 1
vt 1 1然后一个“纹理”,我们真正的意思是图像,将被应用到正方形,使其最左边的像素将被应用到广场的(0,0,0)顶点。
TectureUScale和TextureVScale可能是指允许使用非矩形纹理图像的缩放参数。
要将其翻译到OBJ,请参阅file。我上面使用的格式与文件格式规范一致。
还需要根据文档将纹理图像保存到.tga文件中,然后创建如下所示的.mtl文件:
newmtl texture1
Ka 1.000 1.000 1.000 # Only ambient to keep things simple
Kd 0.000 0.000 0.000 # Disable diffuse component
Ks 0.000 0.000 0.000 # Disable specular component
illum 1 # Only color and ambient are enabled
map_Ka texture.tga # Ambient texture map最后一篇文章是:
usemtl [texture1]在.obj文件中顶点和纹理坐标定义之前。
我会从一些非常简单的东西开始,像一个方形纹理的棋盘图案,具有相同的宽度和高度。
https://stackoverflow.com/questions/23823995
复制相似问题