> For the complete documentation index, see [llms.txt](https://docs.siminsights.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.siminsights.com/hyperskill-studio-authoring/virtual-entities/vx-publisher/import-model-as-virtual-object-vo.md).

# Import Model as Virtual Object (VO)

Package a 3D model as a virtual object and upload it to your HyperSkill account with the VX Packager (see [VX Publisher](/hyperskill-studio-authoring/virtual-entities/vx-publisher.md)). Check [Special Considerations](/hyperskill-studio-authoring/virtual-entities/vx-publisher/special-considerations.md) for platform-specific requirements.

## Import the model

1. Open **Tools > VX Packager**.
2. Under **1. Import**, drag your model (.fbx, .obj or .dae) and its texture files onto the drop area, or click **Add Files...**.
3. Enter an **Asset Name** (no spaces) and set **Type** to **Object**.
4. If the model was exported in other units, set **Scale Factor**, for example 0.01 for a model exported in centimeters. Leave **Include Nearby Textures** and **Create Prefab** on.
5. Click **Import**.

![The Import section of the VX Packager with a model added](https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2FDO4NfUOGtbcloqXQQdTN%2Fvx-packager-import.jpg?alt=media)

The VX Packager creates `Assets/VO/<Asset Name>` with `Models`, `Textures` and `Materials` folders, imports the model with consistent settings, extracts its materials and textures, and creates `<Asset Name>.prefab`.

## Check the prefab

6. Open the prefab and check its size against the human-scale model in the VOPackageScene. Adjust materials if needed.
7. Keep the root of the prefab at position 0,0,0, with no rotation and a scale of 1,1,1, because HyperSkill spawns objects with these values.

{% hint style="info" %}
You can also build the prefab yourself. Save it as `<Name>.prefab` in a folder with the same name, for example `Assets/VO/Chair/Chair.prefab`. Its textures, materials and models can stay anywhere in the project: packaging copies them into the folder.
{% endhint %}

## Package and upload

8. Under **2. Package**, check that **Asset Folder** shows your asset. It is filled in automatically after **Import**.
9. Review the settings:
   * **Type**: Object.
   * **Default Collider**: **Auto** adds a box collider that fits the model when the prefab has no collider. Choose **None**, **Box**, **Capsule** or **ConvexMesh** to change this.
   * **Thumbnail Size**: the size of the generated thumbnail.
   * **Platforms**: the platforms to build. Platforms marked *(not installed)* are skipped; install their build support in Unity Hub to include them.
   * **Upload Format**: keep **Legacy (v1) - current apps**.
10. Click **Package + Upload**. To build without uploading, click **Package**.

![The Package section with the result of a packaging run](https://2704613365-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxYaaXoZ4YGbVdAnAhdcE%2Fuploads%2Fq1sR4EyybJymYF2UyCXw%2Fvx-packager-package.jpg?alt=media)

Packaging:

* copies every texture, material, shader and model the prefab uses into its folder, so the asset is self-contained;
* adds the default collider;
* renders a thumbnail;
* builds an asset bundle for each platform and a .unitypackage, then uploads them with the thumbnail.

When it finishes, **Result** shows the thumbnail and any warnings; **Details** lists everything that was done. Your VO is now in your private repository and is available the next time you launch HyperSkill on your supported platforms.

You can also right-click the asset folder in the Project window and choose **VX > Package and Upload**.

## Update an uploaded VO

After the first upload, the asset folder remembers its virtual object ID, which is shown next to **HyperSkill**. Change the prefab and click **Package + Upload** again: the VX Packager updates the same virtual object with new asset bundles and a new thumbnail instead of creating a new one. To upload the asset as a new virtual object, click **Forget** first.
