首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SolidWorks到OBJ出口

SolidWorks到OBJ出口
EN

Stack Overflow用户
提问于 2014-05-23 08:05:30
回答 1查看 2.3K关注 0票数 25

目前,我正在创建用于导出OBJ格式的3D模型的SolidWorks外接程序。

OBJ是打开的,格式非常简单

我搜索并找到了关于现有解决方案的以下信息:有几个付费插件和1个免费插件,称为“免费OBJ出口商”

它被作为一个基础。但它不出口贴花。

贴花是你在主纹理上画出来的图像(如果你离开了SolidWorks的上下文,在3D编程中,它就像子弹、血滴等的标记)。

出口标记是该项目的重要组成部分。

我将所有的VBA代码重写为C #。

现在我开始处理出口贴花的问题。文档Solidworks相当差。

在阅读了一周的文档和关于LinkedIn的几个问题之后,我发现了以下内容:

IDecal是从IRendererMaterial继承的类。因此,我可以得到所有标记的列表,并获得以下信息:

  • 尤格
  • X位
  • 宽度
  • 高度

我还可以获得IFace2对象的列表并获取FaceDecalPropertiesIFaceDecalProperties提供了下面的信息:

  • TextureTranslationU
  • TextureTranslationV
  • TextureTranslationX
  • TextureTranslationY
  • TextureUScale
  • TextureVScale

它是什么,它代表什么,如何使用它,我不知道。

OBJ格式不支持直接标记。

如何在一个文件中使用这些参数来连接纹理和标记?我想要这样做,因为我没有渲染器的源代码,在脸上渲染,并解决Z战斗的问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-25 21:08:48

我不知道TextureTranslationX和TextureTranslationY在这个上下文中的含义,但是TextureTranslationU和TextureTranslationV几乎肯定是指模型的纹理坐标。

通常,在0,1之间指定(U,V)纹理坐标,并确定图像如何映射到表面。(U,V) = (0,0)通常是纹理图像最左边的像素。

因此,如果您有一组顶点,如:

代码语言:javascript
复制
v 0 0 0
v 1 0 0
v 0 1 0
v 1 1 0

在(X,Y,Z)空间中定义一个正方形,这些顶点具有以下(U,V)纹理坐标:

代码语言:javascript
复制
vt 0 0
vt 1 0
vt 0 1
vt 1 1

然后一个“纹理”,我们真正的意思是图像,将被应用到正方形,使其最左边的像素将被应用到广场的(0,0,0)顶点。

TectureUScale和TextureVScale可能是指允许使用非矩形纹理图像的缩放参数。

要将其翻译到OBJ,请参阅file。我上面使用的格式与文件格式规范一致。

还需要根据文档将纹理图像保存到.tga文件中,然后创建如下所示的.mtl文件:

代码语言:javascript
复制
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

最后一篇文章是:

代码语言:javascript
复制
usemtl [texture1]

在.obj文件中顶点和纹理坐标定义之前。

我会从一些非常简单的东西开始,像一个方形纹理的棋盘图案,具有相同的宽度和高度。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23823995

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档