How to Import USDZ and USD Models into Reality Composer Pro

A step-by-step guide to bringing 3D models into Reality Composer Pro, organizing them into a scene, and preparing them for use in your RealityKit app.

What you need before you start

You need a current version of Xcode installed, since Reality Composer Pro ships with it rather than as a standalone download.

You also need a model in a supported format. Apple's pipeline is built around Universal Scene Description, so USD and USDZ files are the natural fit. Many 3D applications can export to USD, and Apple also publishes conversion tooling for common formats.

Before importing, sanity-check the asset itself: reasonable polygon count, correct scale, and embedded or clearly referenced textures. Fixing a problem at the source model is almost always easier than patching it after import.

Finally, have a target project in mind. Reality Composer Pro projects are structured as Swift packages, so you will usually create or open one that your app can reference later.

Step 1: Open or create a Reality Composer Pro project

The cleanest way to start is from Xcode. When you create a visionOS app, Xcode can generate a Reality Composer Pro package for you, wired into the project automatically.

You can also launch Reality Composer Pro directly from Xcode's Developer Tools menu and create a new project there. Either path gives you a package that contains your scenes and assets.

Give the project a clear name and location inside your app's repository. Keeping it version-controlled alongside your Swift code makes collaboration and history far easier.

Once the project opens, you will see a scene hierarchy, a viewport, and inspectors. This is where you will assemble your content.

Step 2: Bring the model into the project

To import, drag your USD or USDZ file into the project browser, or use the tool's import affordance to add assets from disk.

Reality Composer Pro will register the asset in the package so it becomes part of your content bundle. Imported models show up as entities you can place into a scene.

If your model references external textures rather than embedding them, make sure those files come along too. USDZ typically packages everything together, which is why it is convenient for interchange, whereas loose USD may point at separate texture files.

After import, select the asset and confirm it appears in the viewport. If it is invisible or tiny, note that for the scale and troubleshooting steps below rather than assuming the import failed.

Step 3: Place and organize entities in the scene

Drag the imported model into your scene so it becomes part of the hierarchy. Position, rotate, and scale it using the transform controls or the inspector's numeric fields.

Good organization pays off later. Give entities meaningful names and group related objects, because your Swift code will often look entities up by name to attach behavior.

Establish a sensible root. Many developers create a top-level entity that acts as the anchor point for a logical group, which keeps runtime code tidy when you add or remove content.

Remember that RealityKit works in meters. A model that was authored in centimeters can appear a hundred times too large or small, so verify real-world scale early instead of eyeballing it in an empty viewport.

Step 4: Check materials and lighting

Once placed, inspect how the model looks. If surfaces appear flat, black, or untextured, the material or texture references may not have carried over cleanly.

Reality Composer Pro lets you assign or rebuild materials using its node-based editor. For many imported assets the materials come through fine, but complex or non-standard shaders from other tools may need attention.

Lighting affects perception too. A model can look wrong simply because the scene has no meaningful light, so preview it under conditions closer to your app's real environment.

This is also a good moment to decide what is authored in the model versus what you will drive at runtime. Static look-dev belongs here; dynamic, data-driven changes belong in code.

Step 5: Preview before you wire up code

Use the built-in preview to rotate around the scene and confirm the composition reads well. Because the tool shares rendering foundations with RealityKit, the preview is a strong predictor of the on-device result.

Walk through the scene as a user might encounter it. Check silhouettes, spacing, and whether important detail survives at the distances you expect.

Iterating here is cheaper than iterating through full app builds. Fix obvious issues now so your code integration is about behavior, not cosmetics.

When the scene looks right, you are ready to reference it from Swift. The composition work is essentially done; the rest is loading and driving it.

Step 6: Load the scene in your app with RealityKit

In Xcode, make sure your app target references the Reality Composer Pro package. This link is what lets your code find the bundle at runtime.

In SwiftUI, a common approach is to present content inside a RealityView and load an entity from your package by name. RealityKit resolves the entity from the bundle you imported it into.

From there, treat the loaded entity like any other RealityKit object: add components, run systems, respond to gestures, and animate it. The scene you composed becomes the starting state your code builds on.

Always verify against the current RealityKit documentation, since the exact initializers and APIs evolve across releases. Confirm names match exactly, because a typo in an entity name is a frequent cause of a scene that silently fails to appear.

Verify the import actually succeeded

Before moving on, take a deliberate moment to confirm the asset imported the way you expect rather than assuming it did.

Select the imported model and check that it shows up as an entity with a sensible hierarchy. A single flat entity where you expected named sub-parts can mean the export collapsed detail you were counting on in code.

Look at the transform values too. A non-uniform scale or an unexpected rotation baked into the import can quietly cause problems later when you try to position the entity from Swift.

Finally, glance at the asset's textures and materials in the inspector. Catching a missing map or a broken reference now, while the import is fresh in your mind, is far easier than tracing a black or untextured surface after you have already wired the scene into your app.

Common pitfalls to avoid

The most common mistake is a name mismatch between the entity in Reality Composer Pro and the string used in code. Keep names deliberate and consistent.

The second is scale. Authoring in the wrong unit produces objects that seem missing because they are enormous or microscopic. Standardize on meters and verify.

The third is assuming the tool ships the app. It does not. Reality Composer Pro composes content; Xcode still builds and signs the binary, and App Store distribution requires the Apple Developer Program.

Finally, do not treat it as a modeling suite. Author complex geometry in dedicated 3D software and use Reality Composer Pro for composition, materials, and scene assembly.

Frequently Asked Questions

What file formats does Reality Composer Pro import?

Apple's pipeline is built around Universal Scene Description, so USD and USDZ are the natural formats. Many 3D tools export USD, and Apple provides conversion utilities for some other formats. Check current documentation for supported specifics.

Where do I get Reality Composer Pro?

It is bundled with Xcode rather than downloaded separately. Install current Xcode and open Reality Composer Pro from its Developer Tools menu, or let a new visionOS project generate a package for you.

Why does my imported model look huge or invisible?

This is almost always a scale issue. RealityKit works in meters, so a model authored in centimeters can be a hundred times off. Verify and correct the real-world scale after import.

Do imported materials always come through correctly?

Simple, standard materials usually transfer well, but complex or non-standard shaders from other tools may need to be rebuilt using Reality Composer Pro's node-based material editor.

Can I use imported scenes in an iPhone app?

The content is RealityKit-based and USD-driven, which is relevant across Apple's 3D and AR experiences. visionOS is the primary target, so confirm platform support for your specific use case in Apple's documentation.