【Meshlab生成物体模型导入WEBOTS仿真环境详细】

Meshlab生成webots物体包络体bounding box

导入物体visual模型

  1. 首先将之前生成的物体外观模型导入到一个文件夹中,包含obj、mtl、jpg文件,分别对应几何描述、材料纹理描述、图片纹理素材
    在这里插入图片描述

  2. 扫描仪扫描的物体单位是mm,需要将单位变成m,并且将扫描的物体几何中心放置在坐标原点,运行以下代码脚本进行处理即可,生成处理之后的目标模型文件output.obj

    python scale_obj.py
    
    # scale_obj.py
    import numpy as np
    
    # Read in the vertex coordinates from the OBJ file
    vertices = []
    with open('cleansing_foam/cleansing_foam.obj', 'r') as f:
        for line in f:
            if line.startswith('v '):
                parts = line.split()
                x = float(parts[1]) / 1000.0
                y = float(parts[2]) / 1000.0
                z = float(parts[3]) / 1000.0
                vertices.append([x, y, z])
    
    # Compute the geometric center of the vertices
    center = np.mean(vertices, axis=0)
    
    # Shift all vertices so that the geometric center is at the origin
    vertices = [v - center for v in vertices]
    
    # Write out the modified OBJ file with shifted vertices
    with open('cleansing_foam/output.obj', 'w') as f:
        with open('cleansing_foam/cleansing_foam.obj', 'r') as f_in:
            for line in f_in:
                if line.startswith('v '):
                    parts = line.split()
                    x, y, z = vertices.pop(0)
                    f.write('v {} {} {}\n'.format(x, y, z))
                else:
                    f.write(line)
    
  3. 处理之后得到output.obj文件,可以观察到vertex数值变成了m为度量的数值
    在这里插入图片描述

生成物体包络模型作为WEBOTS碰撞体

  1. 打开meshlab,打开output.obj文件
    在这里插入图片描述
  2. 选择filter中的simplification选项简化模型
    在这里插入图片描述
  3. 通过减少target number of faces用于简化模型体,例如简化到100个面
    在这里插入图片描述
  4. 点击apply应用简化,可以看到我们得到了一个简化后的模型可以用于形成bounding box
    在这里插入图片描述
  5. 最后export mesh as存储为collision.obj
    在这里插入图片描述

导入物体visual模型到webots

  1. 在webots中新建一个Robot或solid节点,在节点children里面进行模型导入
    在这里插入图片描述
  2. 添加一个CadShape节点
    在这里插入图片描述
  3. 从CadShape节点里面编辑url,选择output.obj的路径
    在这里插入图片描述
    在这里插入图片描述

导入物体collision模型到webots

  1. 类似于导入visual模型,在bounding_box中添加一个mesh,在mesh的url里面选取collision.obj的文件路径即可
    在这里插入图片描述
  2. 导入之后可以看到物体能够正常显示也能看到包络mesh的大致形状

测试WEBOTS物体导入

  1. 添加physics性质使得我们的节点具备碰撞模拟和重力模拟
  2. 保存world,开启仿真运行,看一下物体是否自由掉落,是否不发生碰撞穿模
    在这里插入图片描述
  • 18
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MeshLab是一款用于处理三维模型和点云数据的开源软件。它提供了丰富的功能,可以生成三维模型,同时也可以将三维模型转换为点云数据。 在MeshLab中,我们可以导入点云数据,点云数据是由大量的点组成的三维数据集。通过点云数据,我们可以获取物体的表面形状和结构。导入点云数据后,我们可以对点云数据进行处理和编辑。 在生成三维模型方面,MeshLab提供了多种算法和工具。我们可以使用点云重建算法将点云数据转换为三维模型。点云重建算法可以根据点云数据中的点的位置和属性,重新构建出模型的表面形状。通过调整算法的参数,我们可以获得不同精度和复杂度的三维模型。 此外,MeshLab还支持多种三维模型和点云数据的处理和编辑功能。我们可以对模型进行修改、平滑、切割、连接等操作,以调整模型的形状和结构。同时,我们还可以进行纹理映射、颜色调整、材质设置等操作,以增强模型的外观效果。 最后,MeshLab可以将处理后的三维模型导出为各种常见的文件格式,如PLY、OBJ、STL等。这些文件格式可以被其他三维建模软件和可视化工具所支持,方便我们在其他平台上使用和展示生成的三维模型。 总之,MeshLab是一款强大的工具,可以通过点云数据生成三维模型,并提供丰富的功能用于处理和编辑三维模型。无论是研究者、设计师还是艺术家,都可以利用MeshLab进行三维模型生成和处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值