动态几何(网格)在植物最终确定后发生变化

问题描述 投票:0回答:1

这是阅读本文后的后续内容:

在最终确定后添加新的几何形状

我想知道如何改变网格的几何形状,以实现感知和插图角色。有人提到,可以更深入地了解

SceneGraph
对象并操纵对象。 但是,我无法找到适当的 API 调用来检索和设置几何图形。

在我正在处理的示例中,我想更新链接的网格作为多体植物的一部分。

更具体地说,我有一个与代表粗糙地形的网格的固定链接。我想可视化网格上每个顶点的某种任意变化并移动它们。 (有点类似于可变形体,但明确地移动点而不是涉及力)

上下文旁注: 这些是我集成土壤模拟器进行地形力学模拟的早期步骤。

我是 Drake 新手用户,感谢您的帮助和支持。

我加载了带有

.dae
网格文件的 SDF 模型,并成功创建了正确的计划和场景。然而,我不知道如何在模拟运行时更改网格。

drake
1个回答
0
投票

因此,您唯一的办法就是重新定义与几何图形关联的shape。我们目前没有任何机制可以扰乱特定的顶点位置。工作流程看起来像这样:

  1. 您的原始地面地形在磁盘上定义为“ground.obj”(或类似的东西)。
  2. 您已将具有插图或感知属性的
    Mesh
    形状添加到
    SceneGraph
    。您需要它的
    GeometryId
    和(当前)使用的
    SourceId
    。最有可能的是,如果您从 sdf/urdf 文件解析它,它会使用
    MultibodyPlant
    的源 ID (
    MultibodyPlant::get_source_id()
    ) 进行注册。
  3. 给定新的网格(具有重新定位的顶点),您必须将该网格写入磁盘,如
    ground1.obj
  4. 调用
    SceneGraph::ChangeShape()
    通行证,您提供引用
    Mesh
    ground1.obj
    • 确保您调用的
      ChangeShape()
      版本的第一个参数是您当前的
      Context

就是这样。这很麻烦(必须转到磁盘),但是目前,这是我们更改几何图形的唯一机制。幸运的是,

MultibodyPlant
对身体的视觉(插图/感知)表示不敏感,因此它不会干扰这些动作。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.