Files
Mujoco_WASM/python/mujoco/usd/demo.py
T

79 lines
2.7 KiB
Python

# Copyright 2024 DeepMind Technologies Limited
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# ==============================================================================
import argparse
from pathlib import Path
from tqdm import tqdm
import mujoco
from mujoco.usd import exporter
def generate_usd_trajectory(args):
"""Generates a USD file from a mujoco trajectory."""
# load a model to mujoco
model_path = args.model_path
m = mujoco.MjModel.from_xml_path(model_path)
d = mujoco.MjData(m)
# create an instance of the USDExporter
exp = exporter.USDExporter(model=m,
output_directory_name=Path(args.model_path).stem,
output_directory_root=args.output_directory_root,
camera_names=args.camera_names)
# step through the model for length steps
for _ in tqdm(range(args.length)):
for _ in range(args.steps_per_frame):
mujoco.mj_step(m, d)
exp.update_scene(d)
exp.save_scene(filetype=args.export_extension)
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument('--model_path',
type=str,
required=True,
help='path to mjcf xml model')
parser.add_argument('--length',
type=int,
default=100,
help='length of trajectory to render')
parser.add_argument('--output_directory_root',
type=str,
default="../usd_trajectories/",
help='location where to create usd files')
parser.add_argument('--camera_names',
type=str,
nargs='+',
help='cameras to include in usd')
parser.add_argument('--export_extension',
type=str,
default="usd",
help='extension of exported file (usd, usda, or usdc)')
parser.add_argument('--steps_per_frame',
type=int,
default=1,
help='number of frames to skip for each rendering step')
args = parser.parse_args()
generate_usd_trajectory(args)