2

是否可以在Webots中将地板的原点从中心更改为左上角?例如,矩形竞技场的大小为 20x20,我想将其原点设置为 0,0 到 10,10

4

1 回答 1

1

是的,您可以通过创建自己的 proto 文件来做到这一点。我建议您从现有的原型开始,例如WEBOTS_HOME/projects/objects/floors/protos/Floor.proto. 将此文件复制并重命名MyFloor.proto为 example 并对其进行编辑以更改IndexedFaceSet节点的坐标。通常,您必须更换:

        geometry IndexedFaceSet {
          coord Coordinate {
            point [
              %{= -(size.x / 2) }% 0 %{= -(size.y / 2) }%
              %{= size.x / 2 }% 0 %{= -(size.y / 2) }%
              %{= -(size.x / 2) }% 0 %{= size.y / 2 }%
              %{= size.x / 2 }% 0 %{= size.y / 2 }%
            ]
          }

经过:

        geometry IndexedFaceSet {
          coord Coordinate {
            point [
              0 0 0
              %{= size.x }% 0 0
              0 0 %{= size.y }%
              %{= size.x }% 0 %{= size.y }%
            ]
          }

这将移动地板一角的地板原点。此外,boundingObject 应该更新,以便在选择时地板看起来更好。代替:

    boundingObject Plane {
      size IS size
    }

经过:

    boundingObject Transform {
      translation %{= size.x / 2 }% 0 %{= size.y / 2 }%
      children Plane {
        size IS size
      }
    }
于 2019-05-17T13:11:29.617 回答