Offset Pivots
When you pivot an entity, it rotates about its center-point by default. This default behavior works well for entities like planets, ice skaters, and spinning tops, but not for entities like doors, drawbridges, and treasure chest lids. For the motion of these entities to look natural, they need to offset (move) the pivot point to rotate about.
When you create an asset using a Digital Content Creation Tool, you can configure the 3D model to use an offset pivot instead of a center-point pivot. When you ingest (import) this type of asset, you have the option to Preserve offset pivots.
When you enable Preserve pivot offsets, entities spawned from the asset will rotate about the pivot defined in the FBX file, and not about the center-point. You can write TypeScript code that uses the offset pivot for rotating and scaling. You can use offset pivots in both the VR Editor and the Desktop Editor.
Note: You can ingest single-mesh FBX files that contain only one pivot offset. Offset pivots don’t support custom colliders.
Follow this procedure to use the Meta-provided asset file that contains an offset pivot.
- Download the Demo asset
. This file is a zip archive that contains a single mesh 3D model that contains an offset pivot, and a texture file.

- Unzip the archive to a local folder. Next, you’ll import the 3D model into your Private Asset Library.
- Visit your Private Asset Library online.

- Click Import.
- From the list that appears, select 3D Model. The Import Model dialog appears.

- Click choose files on your device.
- Navigate to the folder that contains the unzipped asset files.
- Select the two asset files and then click Open.

- Leave the Parent Folder set to My Assets.
- Leave Preserve offset pivots enabled.
- Click Import. The asset appears in your My Assets folder.

- Open a new world in the Horizon Desktop Editor.
- Launch the Oculus client application for Windows.

- In the Oculus App Library, navigate to the Meta Horizon Worlds app.

- Click the app’s associated menu icon (...).
- From the pop-up menu that appears, select Start in Desktop Mode. The Desktop Editor appears.

- After Meta Horizon Worlds loads in the Desktop Editor, create a new world by selecting New world.

- Name your world something fun, and then select Custom Model Import.

- Click Create. Your new world opens in the Desktop Editor.
- Spawn an instance of the asset by dragging the SkateboardBird asset from your My Assets folder, and dropping it in the scene.

Manipulating entities with offset pivots In this section, you’ll see how to manipulate the entity based on its offset pivot. You can do this in the Desktop Editor, and in the VR Editor.
With the SkateboardBird entity selected in the Hierarchy, look at the entity’s Position coordinate values in the Property Pane. This is the entity’s offset pivot.
You can modify the Attribute values to:
- Change the position of the offset pivot by editing the Position values.
- Rotate the entity around the offset pivot by editing the Rotation values.
- Scale the entity using the offset pivot as an anchor, by changing the Scale values.
Note: Scripted changes to property values have the same effect as when you manually edit a property value.
The behavior of manipulation handles
You can enable and disable the use of offset pivots. When enabled, manipulation handles use the offset pivot. When disabled, manipulation handles revert to using the entity’s center point. This setting persists across Horizon sessions, and it defaults to disabling the offset pivot behavior.
Enable and disable offset pivots in the desktop editor Enable and disable offset pivots in VR In the following image, the left entity doesn’t use an offset pivot, but the right entity does. The right entity has its pivot offset is at the bottom-center, which makes it “grounded”.
Note: The handles intersect at the offset pivot instead of at the entity’s center.
Hints and tips on managing offset pivots
Preserve Single-Mesh Uploads You can preserve offset pivots only for single-mesh FBX files.
You can try to use a multi-mesh hierarchy, but your results will be undefined. If your entity has a hierarchy with offset pivots, then you must import the offset pivot meshes one at a time.
Use non-custom Box Colliders You should import meshes that have only non-custom box colliders, because using custom colliders produces undefined results.