Hello everyone, I’m currently trying to create an SDG (System Dependency Graph) graph using Replicator’s Python API. My goal is to randomly move the camera’s position in every odd-numbered frame, while keeping the camera’s position unchanged in even-numbered frames. To achieve this, my approach involves checking the remainder when dividing the frame number by 2 in the on_frame
event, and only applying a random camera movement when the remainder is 1.
However, I’m facing a challenge because it’s not straightforward to use the with
context in Branch nodes within the Replicator API. I’m uncertain about how to implement this with the Replicator API.
I’d appreciate any guidance or suggestions on how to achieve this. Thank you for your assistance.
from omni.replicator.core import utils
import omni.replicator.core as rep
with rep.new_layer():
camera = rep.create.camera(focus_distance=200,f_stop=0.5)
with rep.trigger.on_frame(num_frames=10) as event:
n_frames = utils.create_node("omni.graph.nodes.ConstantInt")
n_frames.get_attribute("inputs:value").set(2)
modulo = utils.create_node("omni.graph.nodes.Modulo")
event.node.get_attribute("outputs:frameNumber").connect(modulo.get_attribute("inputs:a"), True)
n_frames.get_attribute("inputs:value").connect(modulo.get_attribute("inputs:b"), True)
branch = utils.create_node("omni.graph.action.Branch")
event.node.get_attribute("outputs:execOut").connect(branch.get_attribute("inputs:execIn"), True)
modulo.get_attribute("outputs:result").connect(branch.get_attribute("inputs:condition"), True)
with branch:
cam_position_edit = rep.modify.pose(position=rep.distribution.uniform((-500, 200, -500), (500, 500, 500)), look_at=(0,0,0))