Hi, is it possible to do render passes for post editing currently ?
Hi @user131001! Great question! Yes we have the ability to do render passes. Take a look at our documentation here: https://docs.omniverse.nvidia.com/app_create/prod_materials-and-rendering/rtx_render-settings.html#post-processing-settings
Please let me know if this answered your question!
This is for the debugging side which have not much use frankly for final output, there should be an option when using the movie capture to render the frames and select these passes as additional output so that these can be use for post editing software like Nuke/adobe AE/Premier. Please bring this option to the development team as it is a crucial element for using omniverse as an rendering tool.
Hi @DavidDPD. I have contacted the dev team for more information on this. I will post back when I have more information for you!
Hi @user131001 & @DavidDPD! The development team has informed me that the ability to run Render Passes will be available in the “Next Major Release”. You can take a peek at our Omniverse Public Roadmap to see what we are working on for the next release!
Reviving this old topic, we still don’t have ways to easily rendered out mask passes like Object ID’s where we can set it to either by materials or actors like in unreal engine implementation UE renderpass.
This will be a really useful feature to have for post production. Hope the developers can add this in future releases of USD composer. Thank you
- specify the Multimatte ID on the prim - under prim property (Geometry > Mesh rollout), the value would be -1 by default; but, just like in Max where you can specify the ‘GBufferID’, OV simply refers it as Multimatte ID .
- set up your Path Tracing render setting - instruct these IDs to be taken into account like Vray’s multimatte render element. here i have cubes from left to right as ID 1, 2, and 3 (R, G, and B respectively). you will want to append the total number of channel count under the “Multi Matte” rollout (step 4 in the screenshot below). notice the 3 IDs i have specified are going into “Multimatte0” render pass.
----- following steps are all demonstrated in the video recording linked above or can be found in the docs -----
- establish the AOV - go to Create > AOV and add all the render passes in one go. notice the PtMultiMatte0 can be found here. this is the pass that’ll include the IDs we’ve set up in step 2.
- configure the Movie Capture setting - shown in the recording
- hit render
- check your AOVs/passes - once you are in post production software (i am using Resolve), you can verify the AOVs. even though the AOV set up in the OV stage includes several PtMultiMatte passes, only the ones you’ve included in the Path Tracing would be rendered out. my rendered example shows only one pass, and you could use it for your masks in post.
now, if you wish to do it via material assignments, you could consider adding a layer for a material overwrite with self illuminated color (R, G, B). then render them out separately. the amount of set up will depend on how much control you need to have per material during post production (and to some extent, how the mesh was prepped). needless to say, the more mattes you want to use, the more times you will need to render out.
with mesh geometry, at least you are getting them for free with the PtMultiMatte pass based on assigned IDs, so it’s a bit less intensive. and if you wish to do it on multiple objects at once, you can filter then select them by type in Stage and change their Multimatte ID in the properties like you would on a single object.
i am more than happy for the dev to chime in and point us to existing tools/extensions/methodology that i’ve overlooked!
Thanks for the reply, I do know about multimatte but in terms of usability and set up it is just too much work and each pass only have 3 color(R,G,B), which is fine for a simple and non complex scene but scaling it up to something much more complex this will be an issue.
I’ll share one extension that that can give automatically ID pass, look for Indoorkit under third party extension.
For using the automatic assign color pass, click the icon and in the drop down on RenderVar switch to InstanceIdSegmentation as shown in the screenshot below.
It will give a color pass like this as shown below where which parts is auto assign a color.
For more control you can switch the drop down to SemanticIdSegmentation where you can assign the object to be the same color based on their Multimatte ID number.
This extension is good but the issue is there seems to be no AA on the output and if the object comes in different parts or hierarchy, there will be time involved once again to do setup and they add up for a complex scenes which is not always ideal. Unless there a way to set multimatte id for a group/xform hierarchy head which will speed up this process but I never found out if its possible.
Based on the above and what you have already shared ,I know there are ways to somehow do this but I am coming from the perspective of usability and ease of use where this process have become common place in software like unreal engine and enscape whereby such setup is just a few clicks. It will be good for omniverse to have this capabilities build in to gain traction.
Another update on the render pass, I found out that in IRAY under render settings → Canvas → drop down and select the material ID. This give the auto color mask render pass which is separated by material and the AA is amazing which I personally find the most useful and what I am looking for, only that rendering in IRAY is so resources heavy that in most scene I have trouble even switching to this mode on my 10Gb rtx 3080 but if anyone have better hardware resources then this is a solution. I do hope the developer can develop this option for path tracer mode.
this is actually really good to know, thanks for pointing that out regarding Iray!
in order for us to get output buffer found in the synthetic data sensors extension (standardized in Issac Sim and what the indoorkit extension uses) such as instance or semantic id segmentation, we might need to look into whether the AOV in PT can support those RenderVar. currently seems like it only accommodates standard passes like Reflection, GI, ZDepth, etc. but if we could somehow expand those RenderVar list during PT render, it just might give us antialiased image for segmentation visualization, which seems like typical wirecolor pass in Vray.
and, just to think outloud here (and maybe for the dev) - has there been any implementation of cryptomattes in OV?
looks like the doc on Iray canvas could use a small update to accommodate the added output buffer like Normal and Material ID.
given the resource bottleneck you are experiencing in your scene(s), i wonder if it makes sense to dedicate the ID pass separately from the main render so that you could adjust setting to reduce the hit on VRAM? a few settings i am thinking of are “Samples Limit”, “Max Path Length”, etc. or even disabling light calculation? or is the memory allocation primarily from highres textures and amount of shaders/textures you have in the scene? also, do you primarily render your outputs from Realtime or Interactive?
What you have suggested (tune down all light related settings, make compression of materials to high) does helps a lot in rendering out the ID pass much faster but I find that the Vram load is not optimize at all in Iray. It just seems like once there is a load into Vram it stays there and it piles up from there until the Vram is used up and everything starts to crawl or object doesn’t load. Totally no recycling of Vram resources which is apparent like when you hit the Vram limit, you can load a new scene, even switch back to real time first and then switch to Iray mode and it just doesn’t load the scene fully cause it runs out of Vram.
personally, i don’t use Iray a ton either, but i think it wouldn’t hurt for me to do some more reading/digging in general and see if there are more efficient ways to work with it.