init_code
This commit is contained in:
78
test_garment_sim.py
Normal file
78
test_garment_sim.py
Normal file
@@ -0,0 +1,78 @@
|
||||
import os
|
||||
import argparse
|
||||
from pathlib import Path
|
||||
|
||||
from pygarment.meshgen.boxmeshgen import BoxMesh
|
||||
from pygarment.meshgen.simulation import run_sim
|
||||
import pygarment.data_config as data_config
|
||||
from pygarment.meshgen.sim_config import PathCofig
|
||||
|
||||
|
||||
def get_command_args():
|
||||
"""command line arguments to control the run"""
|
||||
# https://stackoverflow.com/questions/40001892/reading-named-command-arguments
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument(
|
||||
'--pattern_spec', '-p',
|
||||
help='pattern specification JSON file. File name should end with "_specification.json"',
|
||||
type=str,
|
||||
default='./assets/Patterns/shirt_mean_specification.json')
|
||||
parser.add_argument(
|
||||
"--body", "-b", type=str,
|
||||
choices=['mean_all', 'mean_female', 'mean_male', 'f_smpl_average_A40', 'm_smpl_average_A40', 'nana'],
|
||||
default='mean_all', help="Body to use.")
|
||||
parser.add_argument(
|
||||
'--sim_config', '-s',
|
||||
help='Path to simulation config',
|
||||
type=str,
|
||||
default='./assets/Sim_props/default_sim_props.yaml')
|
||||
|
||||
args = parser.parse_args()
|
||||
print('Commandline arguments: ', args)
|
||||
|
||||
return args
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
args = get_command_args()
|
||||
|
||||
props = data_config.Properties(args.sim_config)
|
||||
props.set_section_stats('sim', fails={}, sim_time={}, spf={}, fin_frame={}, body_collisions={}, self_collisions={})
|
||||
props.set_section_stats('render', render_time={})
|
||||
|
||||
spec_path = Path(args.pattern_spec)
|
||||
garment_name, _, _ = spec_path.stem.rpartition('_') # assuming ending in '_specification'
|
||||
|
||||
sys_props = data_config.Properties('./system.json')
|
||||
paths = PathCofig(
|
||||
in_element_path=spec_path.parent,
|
||||
out_path=sys_props['output'],
|
||||
in_name=garment_name,
|
||||
body_name=args.body, # 'f_smpl_average_A40'
|
||||
smpl_body=False, # NOTE: depends on chosen body model
|
||||
add_timestamp=True
|
||||
)
|
||||
|
||||
# Generate and save garment box mesh (if not existent)
|
||||
print(f"Generate box mesh of {garment_name} with resolution {props['sim']['config']['resolution_scale']}...")
|
||||
print('\nGarment load: ', paths.in_g_spec)
|
||||
|
||||
garment_box_mesh = BoxMesh(paths.in_g_spec, props['sim']['config']['resolution_scale'])
|
||||
garment_box_mesh.load()
|
||||
garment_box_mesh.serialize(
|
||||
paths, store_panels=False, uv_config=props['render']['config']['uv_texture'])
|
||||
|
||||
props.serialize(paths.element_sim_props)
|
||||
|
||||
run_sim(
|
||||
garment_box_mesh.name,
|
||||
props,
|
||||
paths,
|
||||
save_v_norms=False,
|
||||
store_usd=False, # NOTE: False for fast simulation!
|
||||
optimize_storage=False, # props['sim']['config']['optimize_storage'],
|
||||
verbose=False
|
||||
)
|
||||
|
||||
props.serialize(paths.element_sim_props)
|
||||
Reference in New Issue
Block a user