Solidworks的模型导入到gazebo中会丢失颜色信息和纹理信息,这是比较头疼的,最近学习了一下如何使用Blender贴图来添加纹理信息。

一、Blender制作模型

Blender操作上和Solidworks大有不同,这里我们新建一个空心圆柱体,准备给圆柱体的内壁贴上纹理信息。

Blender高模烘焙低模贴图 blender模型贴合_blender

 首先左上方 添加->网络->柱体 生成一个圆柱,接着按Tab键进入编辑模式,修改圆柱的大小和位置。

按Tab进入物体模式,添加->曲线->圆环 生成一个圆环,这里不要选择网格,调整圆环位置使之位于圆柱正上方。

Blender高模烘焙低模贴图 blender模型贴合_图层_02

按shift同时选择圆环和圆柱,点击右上方的z轴将视图切换到正交顶视图,按Tab进入编辑模式,选择 网络->投影切割 ,这时圆柱上表面会生成圆环的投影。

Blender高模烘焙低模贴图 blender模型贴合_图层_03

选中圆柱上表面的圆,按下e键,移动鼠标就可以改变切割的方向和长度。

Blender高模烘焙低模贴图 blender模型贴合_图层_04

二、UV展开贴图

 得到空心圆柱体后,需要对圆柱内壁贴图,需要对模型进行UV展开。

如果直接全选然后展开,得到的UV图并不能直接用,智能UV投射得到的UV图也是分散的,为了得到按照我的要求展开的UV图,需要标记缝合处,这里把圆柱上下的内外两个圆环标记为缝合处,这里注意要将圆柱内部的一根竖线作为缝合处方便展开。

Blender高模烘焙低模贴图 blender模型贴合_linux_05

左边的UV界面点击UV->导出UV布局图,得到的UV展开图如下图所示,其中中间的长方形是圆柱内壁的UV展开。

 

Blender高模烘焙低模贴图 blender模型贴合_blender_06

如果这时直接导入纹理图片,图片的大小不可以修改,位置也不好调整,这里采用ps辅助贴图。将导出的UV布局图在ps中打开,继续添加要设置的纹理图片,调整纹理图片至覆盖想要的UV区域。

Blender高模烘焙低模贴图 blender模型贴合_blender_07

 隐蔽UV布局图的图层直接导出纹理图片的图层,将图片导入到UV展开图中,这时UV展开图的位置和方向不需要修改。

Blender高模烘焙低模贴图 blender模型贴合_linux_08

到这一步,其实纹理图片已经贴到模型上了,还需要几步设置就可以查看贴图的效果。1.右边 基础色->图像纹理 2.基础色下一行图片选择贴的纹理图片 3.视图着色方式选择 材质预览。这时就可以看到纹理信息了。

Blender高模烘焙低模贴图 blender模型贴合_Blender高模烘焙低模贴图_09

Blender高模烘焙低模贴图 blender模型贴合_贴图_10

三、导入到Gazebo中

将Blender文件以dae格式导出,复制到Ubuntu中,运行gazebo,点击Edit->Model Editor,点击Add添加模型,选择上一步导出的dae文件,重命名;点击ModelStatic勾上,这样整个模型不受物理重力、碰撞的影响,Model Name重命名;ctrl+s保存,退出模型编辑器,这个时候模型还是没有纹理信息的,需要去到保存的路径下,打开sdf文件,把<material>标签有关的内容删掉,重新打开就可以看到纹理了。

Blender高模烘焙低模贴图 blender模型贴合_blender_11

最后的效果图。

Blender高模烘焙低模贴图 blender模型贴合_blender_12