# Static 3D Object Meta Asset

Please refer to the [3D Static Object Asset ](https://docs.rawrshak.io/developers/meta-asset-framework/asset-types/static-3d-objects)for specific requirements of the Audio Meta Asset Framework before uploading an asset.&#x20;

#### 1. Find or Create the model file that you want to upload.

You can use any 3d modelling software and 3d model object file that is supported by Unity. For testing purposes, please you can find free 3d assets at [Sketchfab](https://sketchfab.com/tags/free).&#x20;

{% hint style="info" %}
A more complex model with high definition textures will be a larger file and will cost more to upload to Arweave. This also increases download time. Please check out <https://prices.ardrive.io/> to determine Arweave upload costs per megabyte or gigabyte.
{% endhint %}

#### 2. Create a Unity project and install the Rawrshak Tools SDK

Please refer to [this tutorial](https://docs.rawrshak.io/tutorials/developer/unity/loading-the-rawrshak-tools) on how to install the Rawrshak Tools SDK.

#### 3. Move the asset into the Unity project

![Move the folder containing the asset information including the model and necessary textures into the project](https://3589313620-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FW434aEw5RavAs7ROSj7s%2Fuploads%2FMt6r1lZSmbe0g0BS8LxF%2Fimage.png?alt=media\&token=c84d4ab2-7457-41d4-a002-95b0508f8df0)

#### 4. Select the model and drag into the scene. Click the model in the scene and  make sure the Transform is set correctly.

![](https://3589313620-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FW434aEw5RavAs7ROSj7s%2Fuploads%2F5OlEKYkwTnGTi7uUiVYp%2Fimage.png?alt=media\&token=cedaebb1-b823-4e5b-bac7-b75de3a66377)

{% hint style="info" %}
Make sure that the Transform is set to the following at the start:

Position: (0,0,0)

Rotation: (0,0,0)

Scale: (1,1,1)&#x20;
{% endhint %}

#### 5. Correct the orientation

Make sure that the front of the asset is pointing towards the Z direction. The Z-direction is the Blue Arrow in the scene.

In this case, we flipped the Y axis 180 degrees.

![Oriented the asset](https://3589313620-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FW434aEw5RavAs7ROSj7s%2Fuploads%2FKzgAy1JfcYijFlYVXj3D%2Fimage.png?alt=media\&token=7aa7701b-2da7-47ee-952e-2354f26cce9d)

#### 6. Select the desired Bounding Box and place it in the scene.

Go to Assets\Rawrshak\Tools\Static3dObjectVerfier\Prefabs and select the desired bounding box. In this case, we're going to select Horizontal-Z shape bounding box. Drag that into the scene hierarchy to preserve the position.

{% hint style="info" %}
Make sure to drag the prefab into the Hierarchy Tab, not the Scene tab. This preserves the position.&#x20;

Make sure that the Position of the bounding box matches the initial Position of the prefab by selecting the prefab and comparing its position with the bounding box in the scene. In the example's case, it's position is at (0, 0.5, 0).
{% endhint %}

![Drag Desired bounding box into the hierarchy, into the scene.](https://3589313620-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FW434aEw5RavAs7ROSj7s%2Fuploads%2FzkYxyOaDKOJcqtlarf9N%2Fimage.png?alt=media\&token=f51a0843-583c-4242-894f-94d314a821b9)

#### 7. Add a Collider to the model

The box collider will be used by the bounding box to determine if the model is within the Asset Framework.&#x20;

Select the largest mesh in the model hierarchy. Select 'Add Component' and search for a Collider component. In this case, we're using a simple box collider.

![Add a Box Collider](https://3589313620-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FW434aEw5RavAs7ROSj7s%2Fuploads%2FByUWY39KFA9w0NektUa4%2Fimage.png?alt=media\&token=b1143e26-de5c-4415-8e4b-3ddccba6db59)

#### 7.B. You may need to adjust the Collider if it doesn't fit the mesh correctly.

![Adjust the Box Collider if necessary](https://3589313620-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FW434aEw5RavAs7ROSj7s%2Fuploads%2FRbrJ0ixyQOkpMacVMxlQ%2Fimage.png?alt=media\&token=80d4291d-88a0-4bba-b6b2-a6df0a1ecc27)

#### 8. Select the Bounding Box object and set the Target Object to the object that has the box collider. Click "Load Target Object"

![Set the Target Object in the Object Bounds script in the Horizontal Z bounding box object](https://3589313620-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FW434aEw5RavAs7ROSj7s%2Fuploads%2FES6f07kWiUu26j3v6CT6%2Fimage.png?alt=media\&token=093c8138-b734-4f4a-bf73-666099dfb32d)

#### 9. Re-scale and re-position the object until the object fits into the bounding box (Bounding Box is white)

![Model intersects with the bounding box.](https://3589313620-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FW434aEw5RavAs7ROSj7s%2Fuploads%2FtBDgFdi1QtTscdYDb9LO%2Fimage.png?alt=media\&token=a276d2bc-a1bd-4d29-b817-9a92f6620e4f)

![Model is firmly inside the bounding box, the bounding box will turn green.](https://3589313620-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FW434aEw5RavAs7ROSj7s%2Fuploads%2F9Jlyj24CdTKEaD5ktbxb%2Fimage.png?alt=media\&token=6b02c644-87a7-47d5-b82a-5801c6c74cfb)

#### 10. Create a new Empty Game Object to be the parent of the prefab

![Create Empty object](https://3589313620-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FW434aEw5RavAs7ROSj7s%2Fuploads%2FrsMDa8HPcnlxUXW0oDpA%2Fimage.png?alt=media\&token=27b4f217-0b73-41b9-ae35-c02aeb6d53d4)

{% hint style="info" %}
Make sure the position of the new empty object is set to (0,0,0)
{% endhint %}

#### 11. Move the model game object into the parent

![Move the batmobile model into the Batmobile-parent object](https://3589313620-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FW434aEw5RavAs7ROSj7s%2Fuploads%2FE4VuVotLLsCcSKLaOnhl%2Fimage.png?alt=media\&token=a5e2b8b5-46bb-4053-b869-d7c6e2b4cd6e)

#### 12. Drag and drop the parent object into the Project Folder in order to create a prefab

![Create a Prefab](https://3589313620-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FW434aEw5RavAs7ROSj7s%2Fuploads%2FrmiNeti5JPt8nxwGCZiv%2Fimage.png?alt=media\&token=58c9f24d-deef-40e3-a8b3-0d7cdb274bc6)

#### 13. Set the prefab's asset bundle name

![Set Asset Bundle Name](https://3589313620-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FW434aEw5RavAs7ROSj7s%2Fuploads%2FaagOAhMMvqzpwEvnr9OF%2Fimage.png?alt=media\&token=b8ad93dd-f7d6-4fcb-81cc-caeaf53df65e)

#### 14. Open the Asset Bundles Menu, select the Platform Targets, and click Generate Asset Bundles

Go to the menu and select: **Rawrshak -> Asset Bundles**

![Select StandaloneWindows and WebGL, and click the Generate Asset Bundle](https://3589313620-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FW434aEw5RavAs7ROSj7s%2Fuploads%2F3nOuFrabNeRdgwvdKzYc%2Fimage.png?alt=media\&token=99fabd01-cb4b-4d23-a12e-0731eaa746e0)

#### 15. View the Asset Bundle Information

![Click the asset bundle and view the information](https://3589313620-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FW434aEw5RavAs7ROSj7s%2Fuploads%2FCEStWopB8ZCptF7XaJI0%2Fimage.png?alt=media\&token=2e749179-a9e3-46b8-ae1c-74f3daab5f30)

#### 16. Upload it to Arweave

Please check out [this tutorial ](https://docs.rawrshak.io/tutorials/developer/rawrshak-dapp/upload-data-to-arweave)in order to upload to Arweave.

#### 17. Connect to the Rawrshak Dapp and navigate your way to the Content Contract page

![Create New Asset](https://3589313620-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FW434aEw5RavAs7ROSj7s%2Fuploads%2F9PbolFurA3arNsXyFNj3%2Fimage.png?alt=media\&token=9b28e620-5d02-420d-9e14-2d902a1c5a30)

#### 18. Fill in the information about the Asset

<table><thead><tr><th>Value</th><th width="541.3197616683218">Description</th></tr></thead><tbody><tr><td>Pinata API Key &#x26; Secret </td><td>This is needed for the metadata to be uploaded to IPFS. Please see the <a href="../../setup/pinata">Pinata tutorial</a> to set this up.</td></tr><tr><td>Name</td><td>Name of the meta asset </td></tr><tr><td>Description</td><td>Description of the meta asset</td></tr><tr><td>Image</td><td>Image src that will show up on Dapps and other front-ends</td></tr><tr><td>Tags</td><td>An array of tags categorizing the asset</td></tr><tr><td>Max Supply</td><td>The maximum instances for this asset that can ever be minted. If left at 0, it will automatically be converted to UINT256_MAX.</td></tr><tr><td>Royalty Receiver Address</td><td>The ethereum address that royalty fees will be sent to. If this is set to the Zero Address, the asset royalty will fall back to the default Content Contract royalty.</td></tr><tr><td>Royalty Rate</td><td>The percent royalty the developer will receive when this asset is traded in a marketplace that supports royalty fees.</td></tr><tr><td>Type</td><td>The Main type of meta asset. In this case, it should be set to Image</td></tr><tr><td>Subtype</td><td>The subtype of the meta asset. Please refer to the <a href="../../../../developers/meta-asset-framework/asset-types/image-assets">Image Assets</a> page to get more info on which subtype to select. Defaults to square.</td></tr><tr><td>NSFW</td><td>Notifies game developers and users of explicit content. Please mark this correctly.</td></tr></tbody></table>

**Static 3D Object Asset Data**

<table><thead><tr><th>Value</th><th width="541.3197616683218">Description</th></tr></thead><tbody><tr><td>Name</td><td>This 'name' is reserved for the name of the prefab that will be loaded by the game based on the Asset Names in the Asset bundle Menu.</td></tr><tr><td>Engine</td><td>Engine that this file is packaged for. Currently only supports Unity.</td></tr><tr><td>Platform</td><td>The platform refers to the operating system that the game will be running on. Values include android, ios, windows, and webgl.</td></tr><tr><td>Render Pipeline</td><td>Render Pipeline refers to the specific rendering pipeline that is set for a game engine. Values on this include brp (built-in render pipeline), urp (universal render pipeline), or hdrp (high-definition render pipeline). <strong>For now, we only support the built-in render pipeline so please set it to BRP.</strong></td></tr><tr><td>Fidelity</td><td>Fidelity refers to the asset's quality, ease of download, and ease of loading. Values include low, medium, and high. Definition for Low, Medium, and High Fidelity is to be determined. <strong>For now, please set it to Low.</strong></td></tr><tr><td>Shape</td><td>Shape refers to which type of default asset this object is expecting to replace.Values include small, medium, large, horizontalx, horizontaly, and horizontalz.</td></tr><tr><td>3d Static object file URI</td><td>Uri to the asset package stored in a decentralized database.</td></tr></tbody></table>

{% hint style="info" %}
The Static 3D Object Meta Asset Framework has some requirements for each type and subtype. If your asset doesn't comply with the framework requirements, it may be unloadable by games.&#x20;

Games expect the asset to follow the framework in order for them to load it.
{% endhint %}

To get the prefab name for **Name** section of the Static 3D Object Asset Data, you must open the Asset Bundle Menu, select the bundle name to view the information, and find the correct Asset name.

In this example, it's not *"batmobile"***,** instead it's "***assets/batmobile-parent.prefab"***

![Use the Prefab name for the Name section](https://3589313620-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FW434aEw5RavAs7ROSj7s%2Fuploads%2F1kIBwgxGwuVT4IG5tgFt%2Fimage.png?alt=media\&token=d7d89823-cc7a-488e-85fb-0296f802cf27)

#### 19. Fill in the Asset Information from the static 3d object information above.

![Fill in 3D static object information](https://3589313620-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FW434aEw5RavAs7ROSj7s%2Fuploads%2Fudc8YApKX0eqaqLsqPw0%2Fimage.png?alt=media\&token=c369c8a7-8d72-4d13-bf1a-9f62c4c72d40)

#### 20. Click *Create Asset* and wait for the Metadata to propagate

![Click Create Asset](https://3589313620-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FW434aEw5RavAs7ROSj7s%2Fuploads%2FfJEqRqJdefVTj20P62GH%2Fimage.png?alt=media\&token=fe3c7d8c-7231-4e56-ad94-6b034bb2761b)

![Wait for Json to propagate ](https://3589313620-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FW434aEw5RavAs7ROSj7s%2Fuploads%2F2os0NQFLTY7GvU8YpaOF%2Fimage.png?alt=media\&token=502ed406-13da-418f-b1b8-735e9e0dd1b1)

#### 21. Wait for the transaction to process and Verify

![Verify for the asset to show up in the contract](https://3589313620-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FW434aEw5RavAs7ROSj7s%2Fuploads%2F5PWC9aOMePrDgCRC5Icg%2Fimage.png?alt=media\&token=3b7ec18f-21fa-4a0d-affa-f5c1db0bec46)

If you're running into problems or find any issues, please join our discord and reach out. We'll help answer questions and fix issues as fast as we can.&#x20;

{% content-ref url="../../../../rawrshak-platform/community-channels" %}
[community-channels](https://docs.rawrshak.io/rawrshak-platform/community-channels)
{% endcontent-ref %}
