How to Render a Custom 180/ 360 Projection in Unreal Engine

How to render a 180/ 360 output from a custom mask, rendering the exact pixels you need in Unreal Engine
Written by Off World Live
Updated 1 month ago

Sometimes the surface you are projecting on isn't a standard shape. In that case you can use our 'Custom Projection' option, which allows you to input a Mask from a UV Unwrap of your projection space and render the exact pixels you need for that projection.

This is available for Equirectangular, Mono Equirectangular, VR 180 and VR 360 projection types.

Rendering only the pixels you need will increase performance and give you better file-size management.

  1. To configure your Custom output in your project, use the OWL360CamCapture or Component to select your Projection Type: 
  2. In Advanced, you will see a number of new settings:
    1. Cube Face Rotation: This allows you to rotate the cube faces (but not the camera itself) so that you can only use the exact cube faces required for your render.
    2. Show Debug Face Colors: This tickbox will overlay a cube showing you the exact position of each cubeface on your current render output. You can use this in combination with 'Cube Face Rotation' and 'Horizontal/ Vertical FOV' to select the minimum number of cube faces to render your output. You can then use Advanced> and deselect any cube faces you are not using, saving render time and performance.
    3. Camera Rotation: This allows you to rotate the camera itself, this will affect your content output.
    4. Horizontal FOV: This makes wider or more narrow the horizontal Field of View of your Output.
    5. Vertical FOV: This makes wider or more narrow the vertical Field of View of your Output.
    6. Output Mask: This is the Mask of the surface you will be projecting on, you can upload this as a png, Make sure the resolution is aligned with your target output resolution.
    7. Render 'x' Face: This allows you to deselect faces which aren't required for your mask.
  3. In Output Mask, use the drop down to select a Mask for your output. You can add this as a png into your Content Browser:
  4. Now when you open your Render/ Texture Target you will see that your output matches this Mask:
  5. To find the minimum number of faces that can be used to render this output, enable the 'Show Debug Face Colors':
  6. We can see that in this case we are using part of four faces, so we can adjust the orientation of the cube faces to see if we can only use 3 faces. In the example of this Mask, we will use Cube Face Rotation and rotate by 45 degrees on the Z axis and then 31.15 degrees on the Y axis (it's better to use the array to do this sequentially:
  7. Now we can see that we are almost using only 3 cube faces:
  8. We have the issue of the red and blue pixels in the mid left and right, which are the corners of other faces. To remove these we will slightly increase the Horizontal Field of View to 146. The Vertical FOV doesn't need adjustment in this case:
  9. Now we are only rendering three faces to get the exact pixels we need!
  10. We can double check this by going to Advanced> and deselecting three cube faces with Show Debug Colors now unticked:
  11. We can confirm that even with only three faces rendering, we can output the whole projection:
  12. To Render this in Movie Render Queue, you can open your settings as normal from the Sequencer. In the OWL 180/ 360 Rendering section you will see a new option for 'Update from 360 Component'. When you click this it will automatically import all your settings from your OWL360Capture/ Component:
  13. The only option that will not automatically update is your Mask, which you will need to add as a file path using 'Output Mask File Path'.
  14. We don't recommend adjusting settings here (because you can't preview the output), but if you want to you can select 'Override 360Component Settings' and you will see the Custom options appear.
  15. You can now render and you will output the exact pixels required for your Custom projection!

Did this answer your question?