Matching colour space between Unity and Blender?

What are the colour space/tonemapping settings I should have on to match the export from Unity and Blender to look identical with Needle?

To match the color space and tonemapping settings between Unity and Blender for exports to look identical in Needle Engine, here are the general recommended settings:

Unity:

  1. Color Space: Set the color space to Linear in Unity. This is crucial as using a Gamma color space can break normal maps and other color corrections necessary for accurate rendering (see the documentation).

  2. Tonemapping: Utilize the TonemappingEffect component to control exposure, and ensure it is set to the desired tonemapping curve (e.g., Neutral, ACES) (see releases). The aim is to replicate the lighting and exposure you have in Unity within Needle.

Blender:

  1. Color Space: Ensure that the output is set to Linear color space. The lightmap texture or image settings should be adjusted to ‘Linear’ as well (see the documentation) (see the documentation).

  2. Tonemapping: Adjust Blender’s view transform in the scene settings to match Unity’s look. Utilize Blender’s scene linear workflow and set the view transform to sRGB for display.

General Tips:

  • Ensure that lightmaps, textures, and any baked elements are following linear workflows in both applications to avoid discrepancies in color and brightness (see faq).
  • Validate that your textures are correctly managed between sRGB and Linear spaces and baked with the same intensity of HDR lighting if a more complex HDR workflow is used (see the documentation).

For further customization, you may want to manually test settings for Bloom, Tone Mapping, and other post-processing effects to achieve closer visual fidelity across applications. Always refer to Needle’s API documentation for any specific rendering settings tailored for your projects (see component reference).

24 replies left
thread_ZChd2YyDVXmPXsyyJOwtKBIK
Reply to this message to continue the conversation

Its mainly the appearance of the exported skybox doesn’t match between Blender and Unity when using the same skybox at default settings

To ensure that the skybox appearance matches between Blender and Unity when using Needle Engine, here are the steps you can take:

Blender Settings

  1. Color Management: Set the View Transform in Blender to Standard. By default, Blender uses Filmic, which can cause discrepancies in color rendering. This adjustment will help in aligning it with the color space used in Unity (see index).

  2. World Opacity: Under the World settings, set the World Opacity to 1 if using a skybox texture. This ensures that the background image is fully visible in the output (see index).

  3. Skybox Quality: Make sure that any skybox images used are of appropriate resolution and that they follow the necessary format (e.g., EXR for high dynamic range images) (see releases).

Unity Settings

  1. Skybox Shader: Use a skybox shader that aligns with those in Blender. If needed, the Skybox/Better Cubemap (Needle) shader can be used. This shader provides additional options such as exposure control that could help fine-tune the appearance (see the documentation).

  2. Cubemap Settings: Ensure the skybox texture in Unity is set to the appropriate size. If your skybox texture is larger than necessary, consider scaling it down to avoid heavy rendering. Unity often prefers textures in powers of two, so adjust accordingly if required (see the documentation) (see releases).

  3. Light Settings: Match lighting settings in Unity with Blender’s rendering environment. This includes the intensity of ambient lights and any skybox lighting settings which might affect the overall look of your scene (see index) (see the documentation).

Export Settings

  • When exporting, ensure your textures are set to correct resolutions and formats that both Blender and Unity can interpret properly, as mismatches can lead to visual differences in the final render (see the documentation) (see the documentation).

Testing

  • After applying the above settings, test by rendering both in Blender and Unity, then check the output in Needle Engine. You may need to tweak values slightly based on the specifics of your project and how lighting interacts with your skybox.

By aligning these settings, you should be able to achieve a consistent appearance in both applications for your skybox when using Needle Engine. If you have further specifics about the settings you’ve encountered or need more assistance, feel free to ask!

24 replies left
thread_ZChd2YyDVXmPXsyyJOwtKBIK
Reply to this message to continue the conversation

Can you show a screenshot of the exported skyboxes? And could you explain your usecase here were the same website is sometimes exported from Unity and sometimes from Blender for my understanding?

I think I clocked it- blur was being applied to the skybox despite the material not having blur set on it, I needed to add Camera Skybox Data or another Skybox component in my scene and totally set it to 0, the skyboxes were rotated slightly differently due to the different coordinate systems of Unity and Blender also which I have now corrected by rotating one in Unity.

Which skybox did have blur applied?

I used the QuickLook Skybox material from the samples in Unity Needle but I copy/pasted it to my project files so it was its own copy of the material and texture, I made sure blur wasn’t ticked on either in any way on the material. I noticed the skybox was still exported blurred after a cache clear so then I checked the Camera Skybox Data component wasn’t in the scene already - as it wasn’t in the scene I added it and set the blur to 0 to force no blur.