success
This commit is contained in:
83
data_generation/tools/convert_dataset.py
Executable file
83
data_generation/tools/convert_dataset.py
Executable file
@@ -0,0 +1,83 @@
|
||||
import argparse
|
||||
import asyncio
|
||||
import os
|
||||
|
||||
import omni
|
||||
from omni.isaac.kit import SimulationApp
|
||||
|
||||
|
||||
async def convert(in_file, out_file, load_materials=True):
|
||||
# This import causes conflicts when global
|
||||
import omni.kit.asset_converter
|
||||
|
||||
def progress_callback(progress, total_steps):
|
||||
pass
|
||||
|
||||
converter_context = omni.kit.asset_converter.AssetConverterContext()
|
||||
# setup converter and flags
|
||||
converter_context.ignore_materials = not load_materials
|
||||
# converter_context.ignore_animation = False
|
||||
# converter_context.ignore_cameras = True
|
||||
# converter_context.single_mesh = True
|
||||
# converter_context.smooth_normals = True
|
||||
# converter_context.preview_surface = False
|
||||
# converter_context.support_point_instancer = False
|
||||
# converter_context.embed_mdl_in_usd = False
|
||||
# converter_context.use_meter_as_world_unit = True
|
||||
# converter_context.create_world_as_default_root_prim = False
|
||||
instance = omni.kit.asset_converter.get_instance()
|
||||
task = instance.create_converter_task(in_file, out_file, progress_callback, converter_context)
|
||||
success = True
|
||||
while True:
|
||||
success = await task.wait_until_finished()
|
||||
if not success:
|
||||
await asyncio.sleep(0.1)
|
||||
else:
|
||||
break
|
||||
return success
|
||||
|
||||
|
||||
def asset_convert(folders):
|
||||
supported_file_formats = ["stl", "obj", "fbx"]
|
||||
for folder in folders:
|
||||
local_asset_output = folder + "_converted"
|
||||
result = omni.client.create_folder(f"{local_asset_output}")
|
||||
|
||||
for folder in folders:
|
||||
print(f"\nConverting folder {folder}...")
|
||||
|
||||
(result, models) = omni.client.list(folder)
|
||||
for i, entry in enumerate(models):
|
||||
model = str(entry.relative_path)
|
||||
model_name = os.path.splitext(model)[0]
|
||||
model_format = (os.path.splitext(model)[1])[1:]
|
||||
# Supported input file formats
|
||||
if model_format in supported_file_formats:
|
||||
input_model_path = folder + "/" + model
|
||||
converted_model_path = folder + "_converted/" + model_name + "_" + model_format + ".usd"
|
||||
if not os.path.exists(converted_model_path):
|
||||
status = asyncio.get_event_loop().run_until_complete(
|
||||
convert(input_model_path, converted_model_path, True)
|
||||
)
|
||||
if not status:
|
||||
print(f"ERROR Status is {status}")
|
||||
print(f"---Added {converted_model_path}")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
parser = argparse.ArgumentParser(description='Process some integers.')
|
||||
parser.add_argument('dataset_path', type=str, help='path to the dataset')
|
||||
args = parser.parse_args()
|
||||
|
||||
folders = []
|
||||
for root, dirs, files in os.walk(args.dataset_path, topdown=False):
|
||||
for name in dirs:
|
||||
path = os.path.join(root, name)
|
||||
if(os.path.join(root, name)[-4:] == "Scan"):
|
||||
folders.append(path)
|
||||
|
||||
kit = SimulationApp()
|
||||
from omni.isaac.core.utils.extensions import enable_extension
|
||||
enable_extension("omni.kit.asset_converter")
|
||||
asset_convert(folders)
|
||||
kit.close()
|
Reference in New Issue
Block a user