Adds custom asset handling to external template generation
Description
The external template generator didn’t originally account for adding personal assets, but it just felt right to include this — it’s cleaner and more intuitive for users to keep everything in one place when needed.
This PR adds that option. During project generation, the script now asks whether the user plans to use a custom asset. If so, it sets up the necessary directory structure under data/, copies in relevant example files (like the Cartpole USD and its config), and modifies the asset configuration files accordingly. Since the Cartpole environment is already used throughout the generator as a reference, I kept building on that as the base when a custom setup is requested.
I also removed the .usd restriction from the .gitignore in external projects, since it doesn’t make sense to forbid tracked USDs when the user explicitly wants to include them.
One thing I’m not totally happy with is that to download the assets, I hardcoded this URL:
ISAACLAB_NUCLEUS_DIR = "http://omniverse-content-production.s3-us-west-2.amazonaws.com/Assets/Isaac/4.5/Isaac/IsaacLab"
I didn’t want to do import ISAACLAB_NUCLEUS_DIR from isaaclab.utils.assets just to avoid spinning up the app during generation. If there’s a better way to handle this, I’m open to suggestions!
Type of change
- New feature (non-breaking change which adds functionality)
- This change requires a documentation update
Checklist
- [x] I have run the
pre-commitchecks with./isaaclab.sh --format - [x] I have made corresponding changes to the documentation
- [x] My changes generate no new warnings
- [x] I have added tests that prove my fix is effective or that my feature works
- [ ] I have updated the changelog and the corresponding version in the extension's
config/extension.tomlfile - [x] I have added my name to the
CONTRIBUTORS.mdor my name already exists there