code: public void loadModel(final GVRSceneObject model, final GVRResourceVolume volume, final EnumSet<GVRImportSettings> settings, final GVRScene scene)
      {
          Threads.spawn(new Runnable()
          {
              public void run()
              {
                  String filePath = volume.getFileName();
                  AssetRequest assetRequest = new AssetRequest(model, volume, scene, null, false);
                  String ext = filePath.substring(filePath.length() - 3).toLowerCase();
  
                  model.setName(assetRequest.getBaseName());
                  assetRequest.setImportSettings(settings);
                  try
                  {
                      if (ext.equals("x3d"))
                      {
                          loadX3DModel(assetRequest, model);
                      }
                      else
                      {
                          loadJassimpModel(assetRequest, model);
                      }
                  }
                  catch (IOException ex)
                  {
                      // onModelError is generated in this case.
                  }
              }
          });
      }
docs: Loads a hierarchy of scene objects {@link GVRSceneObject} asymchronously from a 3D model
  on the volume provided and adds it to the specified scene.
  <p>
  and will return before the model is loaded.
  IAssetEvents are emitted to event listeners attached to the context.
  The resource volume may reference res/raw in which case all textures
  and other referenced assets must also come from res/raw. The asset loader
  cannot load textures from the drawable directory.
  
  @param model
  A GVRSceneObject to become the root of the loaded model.
  @param volume
  A GVRResourceVolume based on the asset path to load.
  This volume will be used as the base for loading textures
  and other models contained within the model.
  You can subclass GVRResourceVolume to provide custom IO.
  @param settings
  Import settings controlling how assets are imported
  @param scene
  If present, this asset loader will wait until all of the textures have been
  loaded and then it will add the model to the scene.
  
  @see #loadMesh(GVRAndroidResource.MeshCallback, GVRAndroidResource, int)
  @see #loadScene(GVRSceneObject, GVRResourceVolume, EnumSet, GVRScene, IAssetEvents)