twanghcmut's picture
download
raw
2.78 kB
from pathlib import Path
import mujoco
import numpy as np
from ..geometry import look_at_xyaxes
from .scene import HandScene
class ReconstructedScene(HandScene):
def __init__(
self, hands, camera, intrinsics, image_size, vertices, faces, uv, texture
):
self.vertices = vertices
self.faces = faces
self.uv = uv
self.texture = str(Path(texture).resolve())
super().__init__(hands, camera, intrinsics, image_size)
def _compile(self):
spec = mujoco.MjSpec()
spec.visual.global_.offwidth, spec.visual.global_.offheight = (1920, 1080)
spec.visual.headlight.ambient = [0.8, 0.8, 0.8]
spec.visual.headlight.diffuse = [0.2, 0.2, 0.2]
spec.add_texture(
name="scene_rgb", type=mujoco.mjtTexture.mjTEXTURE_2D, file=self.texture
)
material = spec.add_material(name="scene_rgb", texuniform=False, specular=0)
material.textures[mujoco.mjtTextureRole.mjTEXROLE_RGB] = "scene_rgb"
spec.add_mesh(
name="scene_surface",
uservert=self.vertices.ravel(),
userface=self.faces.ravel(),
usertexcoord=self.uv.ravel(),
userfacetexcoord=self.faces.ravel(),
)
spec.worldbody.add_geom(
name="scene_surface",
type=mujoco.mjtGeom.mjGEOM_MESH,
meshname="scene_surface",
material="scene_rgb",
contype=0,
conaffinity=0,
)
spec.worldbody.add_geom(
name="floor",
type=mujoco.mjtGeom.mjGEOM_PLANE,
size=[10, 10, 0.1],
rgba=[0.2, 0.22, 0.26, 1],
)
for rig in self.rigs:
rig.attach(spec)
mount = spec.worldbody.add_body(name="ego_mount", mocap=True)
mount.add_camera(name="ego", fovy=self.fovy)
eye, target = self._overview_view()
spec.worldbody.add_camera(
name="overview", pos=eye, xyaxes=look_at_xyaxes(eye, target), fovy=65
)
self.spec = spec
return spec.compile()
def render_ids(self, camera="ego", size=(518, 294)):
with mujoco.Renderer(self.model, height=size[1], width=size[0]) as renderer:
renderer.enable_segmentation_rendering()
frames = []
for index in range(len(self)):
self.set_frame(index)
renderer.update_scene(self.data, camera=camera)
segmentation = renderer.render()
frames.append(
np.where(
segmentation[..., 1] == mujoco.mjtObj.mjOBJ_GEOM,
segmentation[..., 0],
-1,
)
)
return np.stack(frames)

Xet Storage Details

Size:
2.78 kB
·
Xet hash:
e8bea22a067bbcec21dfd5aa45fa0a1c1d1e4ed79e8a1f96363429501da8e7d3

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.