Hello,
First, thank you for putting blenderProc together, it is a great repo!
I would like to use it for the following usecase, I would appreciate any advice on the best way to proceed:
REPEAT (say 10 000 times):
From issues #154 and #52 (and also from working through the examples), my understanding is that this is not currently natively supported by BlenderProc, the issue being the "dynamic" domain randomisation on each of the keyframes in step ii.
My question is: 

Would you recommend to :

A. Modify the blenderProc modules slightly to make them rely on independent random generators and then on the external script play set the seeds for these generators so that on each call of blenderProc the generated scenes keep some aspects constant and some aspects randomised?
B. Make a module (or modify existing ones) to save different randomised states (object poses, materials, lights) to keyframes, the same way that camera poses are being saved for different keyframes (Would that even be possible?)?
C. Any better recommended way to proceed for that usecase?
Thanks again, I appreciate any help/tips on this!
Hey,
first of all, are you sure you need this? Creating a wider variety of camera poses and scene randomizations usually helps with the training of CNNs.
If you are sure that you need to fix a certain part, because you want to study how certain randomizations affect the performance, then I would suggest going with B. It is super easy to key frame any kind of attribute of an object, here for example, we key frame the location:
Materials and textures on the other hand are harder to key frame, as blender doesn't support the keyframing of the material assignment. You could still do this by using a mix shader to blend between different materials, however, this is really complicated and I would rather suggest you generate a random collection of scenes, save them as blend and then randomize the things you want to randomize on top of that (light, material, ...).
Best,
Max
Oh great, thank you for the answer!
I essentially need to change the objects loaded in the scene (randomly) every 10 steps, but then do domain randomisation and take renderings from different camera poses at every step.
So, to summarise:
I think that works, thanks again for the help! :)
Hey,
that sounds like a plan. As always if you have finished a certain module, we are always looking for contributions!
I will close this for now.
Best,
Max