Updating output file structure for USD frames

This commit is contained in:
Abhishek Joshi
2023-10-19 12:24:57 -05:00
parent b785642b3f
commit 49e8cd0fd3
3 changed files with 20 additions and 14 deletions
BIN
View File
Binary file not shown.
+5 -2
View File
@@ -348,6 +348,11 @@ class USDLight(object):
self.translate_op = self.xform.AddTranslateOp() self.translate_op = self.xform.AddTranslateOp()
self.translate_op.Set(pos) self.translate_op.Set(pos)
if pos == (0, 0, 0):
self.prim.GetIntensityAttr().Set(0);
else:
self.prim.GetIntensityAttr().Set(50000);
# TODO attributes: # TODO attributes:
# - direction # - direction
# - intensity # - intensity
@@ -355,8 +360,6 @@ class USDLight(object):
# - radius # - radius
# - specular # - specular
self.prim.GetIntensityAttr().Set(15000);
class USDCamera(object): class USDCamera(object):
""" """
Class for created cameras Class for created cameras
+15 -12
View File
@@ -19,18 +19,21 @@ class USDRenderer(object):
height=480, height=480,
width=480, width=480,
geom_groups=[1,1,1,1,1,1], geom_groups=[1,1,1,1,1,1],
in_memory=True, output_frame_dir="frame_tmp"):
tmp_usd_stage_file='tmp_usd_stage.usd'):
self.model = model self.model = model
self.data = None self.data = None
self.renderer = mujoco.Renderer(model, height, width) self.renderer = mujoco.Renderer(model, height, width)
self.in_memory = in_memory
self.loaded_scene_info = False self.loaded_scene_info = False
self.frame_count = 0
self.output_frame_dir = output_frame_dir
if not os.path.exists(self.output_frame_dir):
os.mkdir(self.output_frame_dir)
if in_memory: # Directory to store all image assets used by the usd scene
self.stage = Usd.Stage.CreateInMemory() if not os.path.exists("image_assets"):
else: os.mkdir("image_assets")
self.stage = Usd.Stage.CreateNew(tmp_usd_stage_file)
self.stage = Usd.Stage.CreateInMemory()
UsdGeom.SetStageUpAxis(self.stage, UsdGeom.Tokens.z) UsdGeom.SetStageUpAxis(self.stage, UsdGeom.Tokens.z)
@@ -47,10 +50,10 @@ class USDRenderer(object):
return self.renderer.scene return self.renderer.scene
def save_scene(self): def save_scene(self):
if not self.in_memory: output_file_path = os.path.join(self.output_frame_dir, f'frame_{self.frame_count}.usd')
self.stage.GetRootLayer().Save() with open(output_file_path, "w") as f:
else: f.write(self.usd)
raise Exception("Can only save files if in_memory=False") self.frame_count += 1
def update_scene(self, data): def update_scene(self, data):
self.renderer.update_scene(data, scene_option=self.scene_option) self.renderer.update_scene(data, scene_option=self.scene_option)
@@ -80,7 +83,7 @@ class USDRenderer(object):
pixels = 3*height*width pixels = 3*height*width
rgb = self.model.tex_rgb[data_adr:data_adr+pixels] rgb = self.model.tex_rgb[data_adr:data_adr+pixels]
img = rgb.reshape(height, width, 3) img = rgb.reshape(height, width, 3)
file_name = f'{texid}.png' file_name = f'image_assets/{texid}.png'
img = im.fromarray(img) img = im.fromarray(img)
img = ImageOps.flip(img) img = ImageOps.flip(img)
img.save(file_name) img.save(file_name)