code: public void loadModel(final GVRResourceVolume fileVolume,
                            final GVRSceneObject model,
                            final EnumSet<GVRImportSettings> settings,
                            final boolean cacheEnabled,
                            final IAssetEvents handler)
      {
          Threads.spawn(new Runnable()
          {
              public void run()
              {
                  String filePath = fileVolume.getFileName();
                  String ext = filePath.substring(filePath.length() - 3).toLowerCase();
                  AssetRequest assetRequest =
                          new AssetRequest(model, fileVolume, null, handler, false);
                  model.setName(assetRequest.getBaseName());
                  assetRequest.setImportSettings(settings);
                  assetRequest.useCache(cacheEnabled);
                  try
                  {
                      if (ext.equals("x3d"))
                      {
                          loadX3DModel(assetRequest, model);
                      }
                      else
                      {
                          loadJassimpModel(assetRequest, model);
                      }
                  }
                  catch (IOException ex)
                  {
                      // onModelError is generated in this case
                  }
              }
          });
      }
docs: Loads a scene object {@link GVRSceneObject} asynchronously from
  a 3D model and raises asset events to a handler.
  <p>
  This function is a good choice for loading assets because
  it does not block the thread from which it is initiated.
  Instead, it runs the load request on a background thread
  and issues events to the handler provided.
  </p>
  
  @param fileVolume
  GVRResourceVolume with the path to the model to load.
  The filename is relative to the root of this volume.
  The volume will be used to load models referenced by this model.
  
  @param model
  {@link GVRSceneObject} that is the root of the hierarchy generated
  by loading the 3D model.
  
  @param settings
  Additional import {@link GVRImportSettings settings}
  
  @param cacheEnabled
  If true, add the model's textures to the texture cache
  
  @param handler
  IAssetEvents handler to process asset loading events
  @see IAssetEvents #loadMesh(GVRAndroidResource.MeshCallback, GVRAndroidResource, int)