在 webots 中改变全局坐标系

Changing global coordinate frame in webots

我刚开始使用 webots,遇到了以下问题:

Webots 全局坐标系将其 y 轴定义为向上显示(具有负 y 分量的重力矢量)。但是我想围绕一个z轴向上显示的坐标系构建一个世界。

是否可以全局更改?

感谢您的回复。

是的,可以按照以下步骤操作:

  • 应旋转对象(Webots PROTOs 或 "level-0" Transform),使其底部指向 Z 轴(负)。您可以在选择对象后使用 3D 视图的 Gizmo 执行此操作。
  • WorldInfo.gravity 字段应更改为 0 0 -9.81。除了改变重力外,这个参数还影响视点使用鼠标移动的方式。
  • WorldInfo.north 如果您打算在模拟中使用 Compass 传感器,则应进行修改。
  • Webots 中为背景天空立方体发布的立方体纹理沿 y 轴方向。旋转它们并不简单。删除 Background.cubmap 是一个快速的解决方案,但它会避免获得好看的渲染(如果没有带纹理的背景,PBR 材料将无法正常工作)。为了更进一步,您必须为您的世界创建一组自定义纹理($YOUR_PROJECT/worlds/textures/cubic/*.png)。可能 switching/rotating/renaming 纹理就足够了。

请注意,在 Webots 中,由于 VRML 和 X3D 遗留问题,全局 y 轴向上。许多 X3D 导出​​器(如 Blender)允许在导出期间更改下轴。 => 向下使用 y 轴是个不错的主意:-)

从 Webots R2020b 开始,重力不再是矢量。相反,您可以在 WorldInfo 节点中将 coordinateSystem 字段的值设置为 ENU
https://cyberbotics.com/doc/reference/worldinfo

但是请注意,coordinateSystem 字段不会影响对象的轴系。如果您想将对象的轴系统更改为例如FLU (x-Forward, y-Left, z-Up) 然后你有手动修改对象。