13. ShapeNet Importer Tutorial

13.1. Learning Objectives

This tutorial demonstrates how to import the ShapeNet V2 3D model database into Omniverse Isaac Sim as USD files. After this tutorial, you will know how to create a local ShapeNet repository and import assets from the ShapeNet database into your experiments and simulations.

5-10 Minute Tutorial

13.2. Getting Started

Prerequisites

  • Please review the Essential Tutorial series, especially Isaac Sim Workflows, prior to beginning this tutorial.

  • This extension requires you to download the ShapeNet V2 database at shapenet.org prior to using this extension.

Note

You must set the environment variable SHAPENET_LOCAL_DIR, see Storing the ShapeNet Database Locally

13.3. Using the ShapeNet Importer Extension

There are two ways to add models using the ShapeNet Importer extension:

  1. Use the Omniverse Isaac Sim User Interface

  2. Use the Python API

This section details the use and benefits of each method. Each of the methods will check the Omniverse server for the shapenet model converted to USD first and add it to the scene. This allows you to make changes to the USD models in Omniverse to improve them. If the model is not in Omniverse, the ShapeNet Importer extension will convert the local obj file in SHAPENET_LOCAL_DIR and convert it to USD before adding the USD file to the scene.

13.3.1. Add a Model via User Interface

The ShapeNet Importer UI is under the Isaac Utils menu in Omniverse Isaac Sim, and can also be accessed with the Geometry radio button on the Isaac Sim Utilities selector. The UI is recommended when adding a small number of models.

To add a model:

  1. Use the synsetId and modelId to set exact ids, or set the the string to “random”. If the synsetId is set to an exact id, the modelId may still be “random”, and that will produce a random model from within the set synset category.

  2. Set the transform parameters to place the model in the scene; default scale and rotation from the scene are added automatically.

  3. Check the Automatically add physics checkbox if you want physics, and the Use convex decomposition checkbox for convex decomposition of complex collision objects.

  4. Click the Add A Model button at the top of the ShapeNet Loader tab.

13.3.2. Add a Model via Python API

The second method to use the ShapeNet Importer extension is by using its Python API.

Users can get to the ShapeNet Importer extension folder by clicking on the Folder button in the Extension Manager, or by looking in exts/omni.isaac.shapenet/omni/isaac/shapenet/. The main function, addShapePrim, is in the ShapeNet Importer extension folder’s shape.py file.

  • omniverseServer is the name of the server that stores the shapes once converted to USD.

  • synsetId and modelId can be specific or not set for random values

  • The transform is set with pos for the translation, rot for the rotation as a Gf.Rotation in axis angle notation, and scale

  • Set auto_add_physics and / or use_convex_decomp to True for physics and decomposition of complex collision objects

  • do_not_place is a specialized parameter for if you want to use the plugin to mass convert and download models but do not want to place them in the scene.

For an example of how to use addShapePrim, refer to how settings.py uses that function.

13.4. Summary

This tutorial covered the following topics:

  1. Connecting Omniverse Isaac Sim to ShapeNet.

  2. Adding Models from ShapeNet into a scene via User Interface.

  3. Adding Models from ShapeNet into a scene via Python API.

13.4.1. Further Learning

For a more in-depth look into the concepts covered in this tutorial, refer to the following reference materials: