we are loading a stage through a service call and after loading the stage we start a capturing. But in some cases we gat an error message indicating that the camera-prim we would like to use for capturing does not exists… and yes if we try to access that prim it is not found in that moment. The camera is defined in a sub layer, so I think the sublayer has not yes finished loading in those cases… is there any way to wait until the stage including all it sublayers etc. is loaded?
I will check for more info, but if you can read the realtime log output, you can wait until the file is fully loaded by waiting for this line where is says “The activity log has been written”. That means the file has finished loading. “[Info] [omni.activity.ui.activity_extension] The activity log has been written to $D:/Omniverse/Cache/Kit/105.1/dd92291b/activities/demo.activity.”
thank you for the hint… I think that shouldn’t be a big deal.
I thought I just have to subscribe to the log event stream to inspect the log messages… but the IEvent does not give me the message text… sender and type are always null and payload does only contain the level, but not the message… can you give me some advice how to get notified when the mentioned log message is written?
Thank you very much, that helped a lot. At the the end, I’ve done it by subscribing to the stage event stream bevore loading the stage, to make sure the ASSETS_LOADED event it not fired bevor the first next_stage_event_async call, but this works fine.
I thinks there is still a problem… in some cases the assetsloaded-event is not fired… the fist time I open a stage it always works… but when opening other stages (in the same process) it stops working. the other events are still fired, only the one I’m waiting for is not fired anymore…
I have to reopen this topic, because I still have the problem that the assestsloaded-event is only fired once. When opening another stage it is not fired again. This is a big issue for us because we have to wait a very long time to make sure that another possibly larger stage is fully loaded.
In the past weeks we could see that in some cases it works as expected ans fires the event for every opened stage. But in other cases it works only once.
Do you know anything that could cause the difference? Can we anything provide to debug this on your side? We have seen comments in Nvidia own extensions pointing to the same problem… we can reproduce this behavior anytime and provide dumps from processes that are in the state where they do not fire the event anymore.
I could imagine that for example a missing or corrupt asset could cause this. And that there is somewhere a counter for loaded assets that is never resetted and so can never reach the number of total assets to load (what fires the event) again.
Perhaps you can forward this to the dev team, because I’ve seen some commend in Nvidia own code regarding the problem that the ASSETS_LOADED event is not fired “in some cases”. Perhaps this hint helps the dev team to fix that.
Carl
PS: Using the capture extension sets the asyncRendering-setting. So after you use the capture extension once, you never get the event again
Thanks Carl. We really appreciate your advanced insight into this issue. I have forwarded your problem and solution to the kit devs and I will see what they say. Thanks again !