How to Use Poly Haven CC0 Assets in Unreal Engine
Poly Haven is a public 3D asset library offering models, textures, and HDRIs under CC0, which means you can use them in commercial Unreal Engine projects without attribution or licensing fees. To get them working, you need to match the right download format to the right Unreal import path: FBX for models, PNG or JPG for textures, and EXR or HDR for lighting. This guide covers the full workflow from search to a lit scene, plus the import problems that trip people up most often.
What Poly Haven Offers for Unreal Projects
The library is organized into three asset types, and each maps to a different part of an Unreal scene:
| Asset type | Typical format | Used in Unreal for |
|---|---|---|
| Models | FBX (also common interchange formats) | Props, set dressing, environment pieces |
| Textures | PNG, JPG (often with PBR maps) | Material bases, roughness, normal, AO |
| HDRIs | EXR, HDR | Sky lighting, reflections, ambient light |
Because everything is CC0, the license question is settled before you start: no attribution required, no restrictions on commercial use. That makes Poly Haven a practical first stop for game prototypes and arch-viz scenes where you want to move fast without tracking licenses.
Finding the Right Assets
Search by the role the asset plays in your scene rather than by name. For a game environment, you might search for a specific prop category; for arch-viz, you might search for a material type or an HDRI that matches the time of day you're lighting for.
Two habits save time later:
- Check the resolution options before downloading. Textures and HDRIs are usually offered at several resolutions. Pick the lowest one that holds up at your target camera distance — a 1K texture on a background prop is often indistinguishable from 4K and far cheaper on memory.
- Download the full PBR set for textures, not just the base color. A base color map alone will look flat. You want the accompanying normal, roughness, and ambient occlusion maps so the material responds correctly to light.
For models, confirm the format list on the asset page. FBX is the safest choice for Unreal because the importer handles it natively and preserves the material slot structure.
Importing Models
- Download the FBX from the asset page.
- Drag the file into the Content Browser, or use the Import button. Unreal will open the FBX Import Options dialog.
- Set the import settings. For static props, leave the default static mesh import. Check that "Import Materials" is enabled if you want Unreal to generate placeholder materials from the FBX's material slots.
- Confirm scale. Poly Haven models are typically authored at real-world scale in meters. Unreal's default unit is centimeters, and the FBX importer applies a conversion automatically. If a model comes in visibly too large or too small, this conversion is the first thing to check — see the troubleshooting section below.
After import, the mesh appears in the Content Browser. Drag it into the level to place it.
Setting Up Materials on Imported Models
The materials Unreal generates from an FBX are usually placeholder-quality. To get the intended look:
- Create a new Material (or Material Instance) in the Content Browser.
- Add texture sample nodes for each map you downloaded — base color into Base Color, normal into Normal, roughness into Roughness, and so on.
- Assign the material to the mesh's material slots.
If the model has multiple material slots (common for props with distinct surface types), you'll repeat this per slot.
Importing Textures and Building Materials
Textures import as Texture assets. Drag them into the Content Browser and Unreal handles the rest, but two settings matter:
- sRGB. Base color maps should have sRGB enabled. Normal, roughness, and other data maps should have sRGB disabled, or the values will be interpreted as color and the material will look wrong.
- Compression. The default compression is fine for most cases. For normal maps, Unreal usually detects the correct setting from the texture name or you can set it manually.
Once imported, wire the textures into a material as described above. For a tiling surface, set the texture's sampler to wrap and use a TextureCoordinate node to control tiling scale.
Setting Up HDRI Lighting
HDRIs are the fastest way to get believable lighting in an Unreal scene, and this is where the EXR/HDR format matters.
- Download the HDRI at a resolution appropriate to your needs. Higher resolutions give sharper reflections; lower resolutions are lighter.
- Import the EXR or HDR into Unreal. It becomes a Texture asset.
- Create a Sky Light in the level and set its source type to use the HDRI texture (via a cubemap or the Sky Light's cubemap slot, depending on your Unreal version's workflow).
- Optionally add a Sky Atmosphere or background sphere with the HDRI mapped to it so the sky is visible, not just the lighting.
The HDRI drives ambient light and reflections. If your scene looks flat after adding a Sky Light, check that the HDRI texture actually imported with the correct color depth — an 8-bit import of an HDR file will lose the highlight range that makes HDRI lighting useful.
Licensing: What CC0 Means Here
CC0 places the work in the public domain. For Unreal projects, that means:
- Commercial use is allowed — you can ship a game or client arch-viz project using these assets.
- No attribution is required, though crediting Poly Haven is a reasonable courtesy.
- No derivative restrictions — you can modify, retexture, and redistribute the assets as part of your project.
The one thing CC0 does not do is guarantee that a given asset is free of other claims (for example, a scanned object that itself has trademark protection). For ordinary props, materials, and HDRIs, this is rarely a practical concern, but it's worth knowing the distinction between a permissive license and a legal clearance.
Troubleshooting Common Import Issues
Model comes in at the wrong scale
This is the most common FBX import problem. Causes and fixes:
- Unit mismatch. If the FBX was authored in meters and Unreal interprets it as centimeters (or vice versa), the model will be off by a factor of 100. Check the FBX Import Options for the "Convert" or scale setting and adjust.
- Non-uniform scale in the source. If the model was scaled non-uniformly before export, it can import distorted. Re-export from the source at uniform scale if possible.
Textures look wrong or washed out
Almost always an sRGB setting. Base color maps need sRGB on; data maps (normal, roughness, metallic, AO) need it off. Fix it in the Texture asset's details panel and the material will update.
HDRI lighting looks flat
Either the HDRI imported at reduced bit depth, or the Sky Light isn't set to use it as a cubemap source. Verify the texture's imported format and the Sky Light's source setting.
Missing textures after import
Unreal doesn't automatically find textures referenced by an FBX unless they're in the expected relative path. The reliable fix is to import textures manually and wire them into materials yourself, which also gives you control over sRGB and compression settings.
A Practical Starting Order
For a new scene, this sequence avoids rework:
- Pick and import your HDRI first — it sets the lighting mood everything else is judged against.
- Import models and place them roughly.
- Import textures and build materials, then assign them.
- Adjust lighting and exposure last, once the materials are correct.
Working in this order means you're not re-tuning lighting every time a material changes.