Latest update: 29 April 2025
- Project Architecture
- One‑Click Mesh Combination
- One‑Click Mesh Export → OBJ
- One‑Click Waypoint Pair Export
- Isaac Gym
UnityTerrainModule - Coordinate Alignment FAQ
├── Assets
│ ├── Prefab # ⚙️ Example scene
│ ├── Scenes # 🎬 Unity scenes
│ ├── Scripts # 📜 C# utilities
│ │ ├── MeshCombiner # 1‑click mesh combination
│ │ ├── OBJExporter # 1‑click OBJ export
│ │ ├── ExportObjectPosition # 1‑click waypoint export
│ │ └── …
│ └── ExampleResources # 🗺️ Sample data
│ ├── map_v1 # Example map
│ └── isaac_gym_files # Example Isaac Gym terrains
└── …No more exporting & re‑importing terrains!
-
Group assets
Put everything you want to combine under a single parent GameObject (e.g.Map). -
Run the tool
Select that parent in the Hierarchy, then choose
Tools → Combine Meshesfrom the menu. -
Result
A new child calledCombinedMeshappears containing the merged geometry.
| Before | After |
|---|---|
![]() |
![]() |
- Select the
CombinedMeshGameObject. - Click
Tools → Export Selected to OBJand choose Export in ROS coordinate so the mesh aligns with Isaac Gym. - Save the file (e.g.
Assets/ExampleResources/map_v1/CombinedMesh.obj).
- Create waypoints
Under an empty parent (e.g.waypoints) add children named whatever you like (waypoint1, …). Give each an icon so they’re easy to see. - Tag them
Add a tag namedway_point(exact spelling) and apply it to every waypoint object. - Export
Select thewaypointsparent and runTools → Export Object Positions(defaults are fine). The file (e.g.point_set_1.txt) is written next to your OBJ. - Move files
Copy the entiremap_v1folder into your Isaac Gym resources.
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Call the three API hooks in your Legged Gym environment:
// create_envs()
terrainModule.Init(config);
terrainModule.AddToSim(sim);
// reset_idx()
terrainModule.OnEnvResetIdx(envIds);Use the point_pair_files field to load the waypoint file exported above.
When resampling, pull goals from the terrain module so everything stays in sync.
- Mesh export writes local vertex positions.
- Waypoint export writes world positions.
- Therefore the mesh’s local axes must match the Unity world axes.
- Inspect the Transform of your mesh and its parents.
- Ensure that every parent up to the Scene has
Position = (0,0,0)andRotation = (0,0,0).
If CombinedMesh is at the origin in world space, exported OBJ and waypoint files will line up perfectly.
- Combine → Export → Tag → Export → Train ✨
- PRs and issues welcome!















