topview-3d-cli 0.1.0__tar.gz → 0.1.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {topview_3d_cli-0.1.0/topview_3d_cli.egg-info → topview_3d_cli-0.1.2}/PKG-INFO +2 -2
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/README.md +1 -1
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/__init__.py +1 -1
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/render.mjs +1 -1
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/bom.py +1 -1
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/local_bom.py +1 -1
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/local_cli.py +17 -4
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/local_errors.py +7 -3
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/local_inspect.py +1 -1
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/local_project.py +32 -2
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/local_render.py +1 -1
- topview_3d_cli-0.1.2/topview_3d_cli/local_studio.py +146 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2/topview_3d_cli.egg-info}/PKG-INFO +2 -2
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli.egg-info/SOURCES.txt +1 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/LICENSE +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/LICENSE-ASSETS +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/NOTICE +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/pyproject.toml +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/setup.cfg +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/__main__.py +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/LICENSE +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/NOTICE +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/characters/a3d_char_30ec53c93eae4173946b38639691ebe0.glb +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/characters/a3d_char_461b4f4b76ae4b198f439fa4f6f743b6.glb +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/characters/a3d_char_7d220ac359844c80a8faaf0e25478477.glb +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/characters/a3d_char_de37873a79244fbe8a0660ea08d1b4ab.glb +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_action-attack-jab.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_action-attack-lunge.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_action-attack-rear.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_action-crawling-forward-reaching-with-le.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_action-exaggerated-punch-with-right-hand.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_action-examine-fwd.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_action-holding-bow.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_action-jab-with-right-hand.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_action-on-hands-and-toes-right-leg-forwa.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_action-on-right-leg.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_action-push-up.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_action-pushing-backwards.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_action-pushing-with-both-hands.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_action-pushing-with-left-side-of-body.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_action-sliding.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_crouch-arms-spread-looking-upwards.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_crouch-examine-fwd.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_crouch-lean-fwd-right-hand-supporting.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_crouch-leaning-against-object-look-l.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_crouch-look-back.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_crouch-look-down-back.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_crouch-look-fwd-f.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_crouch-look-fwd-m.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_crouch-on-knees-arms-up.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_crouch-sneaking.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_dance-l-toe-top-of-right-foot.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_dance-legs-spread-lean-l.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_dance-legs-spread-lean-r.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_dance-legs-x.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_dance-r-foot-arms-extended-backwards.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_dance-r-toe-arms-up.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_dance-r-toe-l-leg-up.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_dance-toes-arch.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_dance-toes-reach.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_dyn-floating-bent-forwards.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_dyn-floating-left-leg-bent-hands-spread.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_dyn-floating-legs-bent-and-arms-spread.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_dyn-floating-legs-raised-arms-extended-u.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_dyn-l-toe-look-l.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_dyn-leaping-forward-arms-extended-backwa.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_dynamic-float-arch.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_dynamic-float-dive.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_lay-back-arched-arms-supp.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_lay-legs-to-side-arms-up.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_lay-legs-x-arms-supp.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_lay-on-back-left-leg-bent-hands-head.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_lay-on-back-left-leg-bent.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_lay-on-back-legs-x-hands-head.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_lay-on-left-side-left-arm-supporting-hea.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_lay-on-left-side-left-arm-supporting.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_lay-on-right-side-right-arm-supporting.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_lay-on-right-side-right-hand-supporting.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_lay-on-stomach-elbows-supporting.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_lay-right-arm-supporting-l-arm-up.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_lay-right-leg-forward-arms-supp.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_loco-run-fwd.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_loco-run-reach.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_loco-sneaking-forward.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_loco-sprinting.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_loco-stepping-forward-look-l.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_loco-walk-fwd-look-r.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_loco-walk-fwd.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_loco-walking-arms-on-hips.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_loco-walking-right-arm-on-hip.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_loco-walking.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_sit-arms-holding-left-knee-reclining.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_sit-arms-holding-right-knee.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_sit-arms-resting-on-knees.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_sit-arms-supp.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_sit-arms-up.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_sit-elbows-on-legs-lean-fwd.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_sit-elbows-on-legs-lean-l.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_sit-knees-up-hold.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_sit-lean-back-arms-supp.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_sit-lean-fwd-elbows-on-knees.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_sit-lean-fwd-hands-in-front.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_sit-legs-x-arms-x.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_sit-legs-x-hands-head.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_sit-legs-x-hold.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_sit-legs-x-reclining.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_sit-legs-x-right-arm-over-knee.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_sit-reaching-hands-towards-toes.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_sit-reaching-left-hand-towards-right-toe.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_sit-reclined-facepalm.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_sit-reclined-hands-head.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_sit-reclined-left-leg-crossed-hands-head.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_sit-reclined-left-leg-crossed.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_sit-reclined-look-down.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_sit-reclined-right-leg-crossed-hands-hea.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_sit-rev-sit-hands-grasping.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_sit-rev-sit-hands-relaxed.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_stand-arms-behind-back.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_stand-arms-down.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_stand-arms-slightly-spread.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_stand-bending-forward-arms-x-over-knees.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_stand-hands-on-hips-look-back.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_stand-l-hip-f.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_stand-l-hip-m.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_stand-l-leg-r-hip-l-arm-up.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_stand-lean-back-arms-behind.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_stand-lean-back-l-hip.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_stand-left-elbow-resting-obj.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_stand-left-leg-obj-left-hand-on-knee-r-h.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_stand-left-leg-obj-left-hand-on-knee.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_stand-legs-x-arms-up.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_stand-legs-x-l-hip.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_stand-legs-x-leaning-obj.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_stand-legs-x-left-arm-obj-r-hip.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_stand-look-down-r.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_stand-look-fwd.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_stand-look-l.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_stand-look-r.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_stand-r-arm-up-l-hip.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_stand-r-foot-l-leg-up.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_stand-r-foot-up.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_stand-r-hip-l-arm-up.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_stand-r-hip.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_stand-right-hand-behind-head.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_stand-right-leg-obj-arms-x.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_stand-right-leg-obj-l-hip-right-hand-on.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/covers/a3d_pose_t-pose.webp +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/manifest.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_action-attack-jab.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_action-attack-lunge.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_action-attack-rear.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_action-crawling-forward-reaching-with-le.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_action-exaggerated-punch-with-right-hand.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_action-examine-fwd.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_action-holding-bow.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_action-jab-with-right-hand.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_action-on-hands-and-toes-right-leg-forwa.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_action-on-right-leg.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_action-push-up.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_action-pushing-backwards.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_action-pushing-with-both-hands.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_action-pushing-with-left-side-of-body.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_action-sliding.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_crouch-arms-spread-looking-upwards.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_crouch-examine-fwd.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_crouch-lean-fwd-right-hand-supporting.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_crouch-leaning-against-object-look-l.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_crouch-look-back.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_crouch-look-down-back.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_crouch-look-fwd-f.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_crouch-look-fwd-m.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_crouch-on-knees-arms-up.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_crouch-sneaking.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_dance-l-toe-top-of-right-foot.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_dance-legs-spread-lean-l.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_dance-legs-spread-lean-r.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_dance-legs-x.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_dance-r-foot-arms-extended-backwards.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_dance-r-toe-arms-up.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_dance-r-toe-l-leg-up.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_dance-toes-arch.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_dance-toes-reach.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_dyn-floating-bent-forwards.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_dyn-floating-left-leg-bent-hands-spread.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_dyn-floating-legs-bent-and-arms-spread.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_dyn-floating-legs-raised-arms-extended-u.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_dyn-l-toe-look-l.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_dyn-leaping-forward-arms-extended-backwa.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_dynamic-float-arch.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_dynamic-float-dive.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_lay-back-arched-arms-supp.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_lay-legs-to-side-arms-up.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_lay-legs-x-arms-supp.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_lay-on-back-left-leg-bent-hands-head.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_lay-on-back-left-leg-bent.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_lay-on-back-legs-x-hands-head.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_lay-on-left-side-left-arm-supporting-hea.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_lay-on-left-side-left-arm-supporting.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_lay-on-right-side-right-arm-supporting.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_lay-on-right-side-right-hand-supporting.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_lay-on-stomach-elbows-supporting.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_lay-right-arm-supporting-l-arm-up.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_lay-right-leg-forward-arms-supp.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_loco-run-fwd.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_loco-run-reach.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_loco-sneaking-forward.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_loco-sprinting.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_loco-stepping-forward-look-l.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_loco-walk-fwd-look-r.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_loco-walk-fwd.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_loco-walking-arms-on-hips.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_loco-walking-right-arm-on-hip.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_loco-walking.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_sit-arms-holding-left-knee-reclining.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_sit-arms-holding-right-knee.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_sit-arms-resting-on-knees.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_sit-arms-supp.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_sit-arms-up.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_sit-elbows-on-legs-lean-fwd.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_sit-elbows-on-legs-lean-l.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_sit-knees-up-hold.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_sit-lean-back-arms-supp.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_sit-lean-fwd-elbows-on-knees.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_sit-lean-fwd-hands-in-front.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_sit-legs-x-arms-x.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_sit-legs-x-hands-head.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_sit-legs-x-hold.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_sit-legs-x-reclining.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_sit-legs-x-right-arm-over-knee.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_sit-reaching-hands-towards-toes.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_sit-reaching-left-hand-towards-right-toe.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_sit-reclined-facepalm.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_sit-reclined-hands-head.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_sit-reclined-left-leg-crossed-hands-head.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_sit-reclined-left-leg-crossed.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_sit-reclined-look-down.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_sit-reclined-right-leg-crossed-hands-hea.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_sit-rev-sit-hands-grasping.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_sit-rev-sit-hands-relaxed.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_stand-arms-behind-back.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_stand-arms-down.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_stand-arms-slightly-spread.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_stand-bending-forward-arms-x-over-knees.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_stand-hands-on-hips-look-back.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_stand-l-hip-f.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_stand-l-hip-m.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_stand-l-leg-r-hip-l-arm-up.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_stand-lean-back-arms-behind.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_stand-lean-back-l-hip.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_stand-left-elbow-resting-obj.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_stand-left-leg-obj-left-hand-on-knee-r-h.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_stand-left-leg-obj-left-hand-on-knee.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_stand-legs-x-arms-up.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_stand-legs-x-l-hip.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_stand-legs-x-leaning-obj.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_stand-legs-x-left-arm-obj-r-hip.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_stand-look-down-r.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_stand-look-fwd.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_stand-look-l.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_stand-look-r.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_stand-r-arm-up-l-hip.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_stand-r-foot-l-leg-up.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_stand-r-foot-up.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_stand-r-hip-l-arm-up.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_stand-r-hip.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_stand-right-hand-behind-head.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_stand-right-leg-obj-arms-x.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_stand-right-leg-obj-l-hip-right-hand-on.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/poses/a3d_pose_t-pose.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/applyIntent.mjs +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/browser.mjs +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/cli.mjs +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/editSequence.mjs +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/evaluate.mjs +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/mediaUrl.mjs +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/node_modules/@topview/3d-builder/dist/draco/draco_decoder.js +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/node_modules/@topview/3d-builder/dist/draco/draco_decoder.wasm +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/node_modules/@topview/3d-builder/dist/draco/draco_wasm_wrapper.js +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/node_modules/@topview/3d-builder/dist/engine/index.mjs +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/node_modules/@topview/3d-builder/dist/evaluate/index.mjs +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/node_modules/@topview/3d-builder/dist/headless/index.mjs +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/node_modules/@topview/3d-builder/package.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/node_modules/three/LICENSE +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/node_modules/three/build/three.core.js +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/node_modules/three/build/three.module.js +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/node_modules/three/examples/jsm/controls/OrbitControls.js +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/node_modules/three/examples/jsm/curves/NURBSCurve.js +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/node_modules/three/examples/jsm/curves/NURBSUtils.js +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/node_modules/three/examples/jsm/libs/draco/draco_decoder.js +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/node_modules/three/examples/jsm/libs/draco/draco_decoder.wasm +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/node_modules/three/examples/jsm/libs/draco/draco_wasm_wrapper.js +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/node_modules/three/examples/jsm/libs/fflate.module.js +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/node_modules/three/examples/jsm/lines/LineMaterial.js +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/node_modules/three/examples/jsm/lines/LineSegments2.js +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/node_modules/three/examples/jsm/lines/LineSegmentsGeometry.js +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/node_modules/three/examples/jsm/loaders/DRACOLoader.js +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/node_modules/three/examples/jsm/loaders/FBXLoader.js +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/node_modules/three/examples/jsm/loaders/GLTFLoader.js +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/node_modules/three/examples/jsm/utils/BufferGeometryUtils.js +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/node_modules/three/examples/jsm/utils/SkeletonUtils.js +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/node_modules/three/package.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/node_modules/zod/LICENSE +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/node_modules/zod/index.js +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/node_modules/zod/package.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/node_modules/zod/v3/ZodError.js +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/node_modules/zod/v3/errors.js +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/node_modules/zod/v3/external.js +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/node_modules/zod/v3/helpers/errorUtil.js +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/node_modules/zod/v3/helpers/parseUtil.js +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/node_modules/zod/v3/helpers/typeAliases.js +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/node_modules/zod/v3/helpers/util.js +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/node_modules/zod/v3/locales/en.js +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/node_modules/zod/v3/types.js +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/package.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/playwright.mjs +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/static/headless.html +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/static/measure.mjs +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/static/pose.mjs +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/staticIntent.mjs +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/runtime.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/contracts/director-v1/schema/director-document.schema.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/contracts/director-v1/schema/fcurves-compact-v1.schema.json +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/director_camera_view.py +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/director_document.py +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/director_geometry.py +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/director_operations.py +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/director_static.py +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/local_assets.py +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/local_catalog.py +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/local_edit.py +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/local_read.py +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/node_batch.py +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/renderer.py +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/runtime.py +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli.egg-info/dependency_links.txt +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli.egg-info/entry_points.txt +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli.egg-info/requires.txt +0 -0
- {topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: topview-3d-cli
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.2
|
|
4
4
|
Summary: Build and render 3D director scenes locally with the topview-3d-cli command.
|
|
5
5
|
License-Expression: Apache-2.0 AND CC-BY-4.0
|
|
6
6
|
Project-URL: Homepage, https://www.topview.ai/topview-3d-builder
|
|
@@ -26,7 +26,7 @@ Dynamic: license-file
|
|
|
26
26
|
# topview-3d-cli
|
|
27
27
|
|
|
28
28
|
`topview-3d-cli` builds and renders 3D director scenes on your machine. Projects are plain files in a
|
|
29
|
-
`.
|
|
29
|
+
`.topview-3d/` directory; rendering uses a local headless Chromium and makes no network requests.
|
|
30
30
|
|
|
31
31
|
Requirements: Python 3.11+ and Node.js 20.6+ (with npm).
|
|
32
32
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# topview-3d-cli
|
|
2
2
|
|
|
3
3
|
`topview-3d-cli` builds and renders 3D director scenes on your machine. Projects are plain files in a
|
|
4
|
-
`.
|
|
4
|
+
`.topview-3d/` directory; rendering uses a local headless Chromium and makes no network requests.
|
|
5
5
|
|
|
6
6
|
Requirements: Python 3.11+ and Node.js 20.6+ (with npm).
|
|
7
7
|
|
{topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/director-cli/render.mjs
RENAMED
|
@@ -143,7 +143,7 @@ function publicAssetBase(body) {
|
|
|
143
143
|
}
|
|
144
144
|
|
|
145
145
|
// outputDir is `<absolute>/renders/<runId>`: the caller chooses the root (a project's
|
|
146
|
-
// .
|
|
146
|
+
// .topview-3d/renders), the renderer writes exactly one run directory below it.
|
|
147
147
|
export function resolveOutputDir(outputDir, pathApi = path) {
|
|
148
148
|
if (typeof outputDir !== 'string' || !outputDir.trim()) {
|
|
149
149
|
throw new Error('RENDER_OUTPUT_DIR_REQUIRED')
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"""Plan / constraint record (BOM): intent, relationships, constraints, camera roles, model review.
|
|
2
2
|
|
|
3
3
|
Pure merge and evidence logic behind the ``topview-3d-cli bom`` and ``inspect views`` commands (stored as
|
|
4
|
-
``.
|
|
4
|
+
``.topview-3d/bom.json``). ``checkpoint`` fields are model-owned; the
|
|
5
5
|
runtime owns ``observed`` and ``verification``. Errors are ``ValueError("<CODE>: ...")``.
|
|
6
6
|
"""
|
|
7
7
|
from __future__ import annotations
|
|
@@ -22,6 +22,7 @@ from topview_3d_cli.local_errors import EXIT_INVALID_INPUT, EXIT_OK, exit_code_f
|
|
|
22
22
|
from topview_3d_cli.local_project import (
|
|
23
23
|
CLI_VERSION,
|
|
24
24
|
LocalProjectError,
|
|
25
|
+
adopt_edit,
|
|
25
26
|
apply_operations,
|
|
26
27
|
init_project,
|
|
27
28
|
open_project,
|
|
@@ -31,6 +32,7 @@ from topview_3d_cli.local_project import (
|
|
|
31
32
|
from topview_3d_cli.local_inspect import evaluate, inspect_nodes, inspect_views, parse_frames
|
|
32
33
|
from topview_3d_cli.local_read import camera_presets, document_view, renders_list, renders_show
|
|
33
34
|
from topview_3d_cli.local_render import render
|
|
35
|
+
from topview_3d_cli.local_studio import open_studio
|
|
34
36
|
from topview_3d_cli.renderer import node_path
|
|
35
37
|
from topview_3d_cli.runtime import PLAYWRIGHT_VERSION, builder_version, node_env, runtime
|
|
36
38
|
|
|
@@ -261,6 +263,9 @@ def _parser() -> argparse.ArgumentParser:
|
|
|
261
263
|
init.add_argument("directory")
|
|
262
264
|
init.add_argument("--force", action="store_true", help="replace an existing project")
|
|
263
265
|
project.add_parser("status").add_argument("directory")
|
|
266
|
+
adopt = project.add_parser("adopt", help="write a Studio edit back into the project so later commands continue from it")
|
|
267
|
+
adopt.add_argument("directory")
|
|
268
|
+
adopt.add_argument("payload", help="{\"document\"?, \"fcurves\"?} JSON file, or - for stdin")
|
|
264
269
|
|
|
265
270
|
document = group("document", "read, validate and edit the director document")
|
|
266
271
|
get = document.add_parser("get", help="the stored document; --summary or --entity for smaller reads")
|
|
@@ -317,7 +322,7 @@ def _parser() -> argparse.ArgumentParser:
|
|
|
317
322
|
camera = group("camera", "camera helpers")
|
|
318
323
|
camera.add_parser("presets", help="camera preset ids for add_camera")
|
|
319
324
|
|
|
320
|
-
bom = group("bom", "plan / constraint record (.
|
|
325
|
+
bom = group("bom", "plan / constraint record (.topview-3d/bom.json)")
|
|
321
326
|
bom.add_parser("get").add_argument("directory")
|
|
322
327
|
checkpoint = bom.add_parser("checkpoint", help="merge a checkpoint patch (compare-and-set)")
|
|
323
328
|
checkpoint.add_argument("directory")
|
|
@@ -329,7 +334,7 @@ def _parser() -> argparse.ArgumentParser:
|
|
|
329
334
|
listing.add_argument("--kind", choices=KINDS)
|
|
330
335
|
search = asset.add_parser("search", help="keyword search with filters and facets")
|
|
331
336
|
search.add_argument("query", nargs="?", default="")
|
|
332
|
-
search.add_argument("--project", dest="directory", help="also search <project>/.
|
|
337
|
+
search.add_argument("--project", dest="directory", help="also search <project>/.topview-3d/assets")
|
|
333
338
|
search.add_argument("--kind", choices=KINDS)
|
|
334
339
|
search.add_argument("--category")
|
|
335
340
|
search.add_argument("--tag", action="append", help="required tag (repeatable)")
|
|
@@ -342,7 +347,7 @@ def _parser() -> argparse.ArgumentParser:
|
|
|
342
347
|
show_asset.add_argument("--kind", choices=KINDS)
|
|
343
348
|
importing = asset.add_parser("import", help="copy a model or pose file into an asset root")
|
|
344
349
|
target = importing.add_mutually_exclusive_group(required=True)
|
|
345
|
-
target.add_argument("--project", dest="directory", help="import into <project>/.
|
|
350
|
+
target.add_argument("--project", dest="directory", help="import into <project>/.topview-3d/assets")
|
|
346
351
|
target.add_argument("--builtin", action="store_true", help="import into the built-in asset root")
|
|
347
352
|
importing.add_argument("file")
|
|
348
353
|
importing.add_argument("--kind", required=True, choices=("character", "prop", "pose"))
|
|
@@ -376,6 +381,8 @@ def _parser() -> argparse.ArgumentParser:
|
|
|
376
381
|
browser = group("browser", "renderer browser setup")
|
|
377
382
|
ensure = browser.add_parser("ensure", help="install the pinned Playwright and Chromium (idempotent)")
|
|
378
383
|
ensure.add_argument("--with-deps", action="store_true", help="also install Linux system packages (sudo)")
|
|
384
|
+
studio = group("studio", "open the local Studio app on this project")
|
|
385
|
+
studio.add_parser("open", help="start Studio with Node if needed and open this project in the browser").add_argument("directory")
|
|
379
386
|
return parser
|
|
380
387
|
|
|
381
388
|
|
|
@@ -405,8 +412,14 @@ def _dispatch(args: argparse.Namespace) -> dict[str, Any]:
|
|
|
405
412
|
return doctor()
|
|
406
413
|
if command == "browser":
|
|
407
414
|
return browser_ensure(with_deps=args.with_deps)
|
|
415
|
+
if command == "studio":
|
|
416
|
+
return open_studio(args.directory)
|
|
408
417
|
if command == "project":
|
|
409
|
-
|
|
418
|
+
if sub == "init":
|
|
419
|
+
return init_project(args.directory, force=args.force)
|
|
420
|
+
if sub == "adopt":
|
|
421
|
+
return adopt_edit(args.directory, load_spec(args.payload, "PROJECT_ADOPT_INVALID"))
|
|
422
|
+
return project_status(args.directory)
|
|
410
423
|
if command == "document":
|
|
411
424
|
if sub == "get":
|
|
412
425
|
return document_view(args.directory, summary=args.summary, entity=args.entity,
|
|
@@ -14,8 +14,9 @@ EXIT_INVALID_INPUT = 2
|
|
|
14
14
|
ERROR_CODES: dict[str, tuple[int, str]] = {
|
|
15
15
|
# Command line and input files
|
|
16
16
|
"USAGE_INVALID": (2, "Unknown command, missing argument or bad option."),
|
|
17
|
-
"PROJECT_NOT_INITIALIZED": (2, "The directory has no .
|
|
17
|
+
"PROJECT_NOT_INITIALIZED": (2, "The directory has no .topview-3d project; run `project init`."),
|
|
18
18
|
"PROJECT_EXISTS": (2, "`project init` target already contains a project; pass --force to replace it."),
|
|
19
|
+
"PROJECT_ADOPT_INVALID": (2, "`project adopt` body must be a JSON object with document and/or fcurves."),
|
|
19
20
|
"OPERATIONS_NOT_FOUND": (2, "The operations file does not exist."),
|
|
20
21
|
"OPERATIONS_JSON_INVALID": (2, "The operations file is not JSON or not an operation batch."),
|
|
21
22
|
"RENDER_PAYLOAD_INVALID": (2, "The render payload is not a JSON object of frames/width/height/cameraNodeId/publicAssetBase."),
|
|
@@ -34,7 +35,7 @@ ERROR_CODES: dict[str, tuple[int, str]] = {
|
|
|
34
35
|
"ENTITY_NOT_FOUND": (2, "Delete targets an entity that never existed."),
|
|
35
36
|
"DIRECTOR_NODE_NOT_FOUND": (2, "A referenced node does not exist (the message names it; batches add details.index)."),
|
|
36
37
|
"DOCUMENT_ENTITY_NOT_FOUND": (2, "`document get --entity` found no node, clip or fcurves shard with that id."),
|
|
37
|
-
"RENDER_NOT_FOUND": (2, "No such render run or frame image in .
|
|
38
|
+
"RENDER_NOT_FOUND": (2, "No such render run or frame image in .topview-3d/renders."),
|
|
38
39
|
"BOM_CHECKPOINT_INVALID": (2, "`bom checkpoint` patch fails its schema or repeats/conflicts ids."),
|
|
39
40
|
"BOM_TOO_LARGE": (2, "The merged BOM would exceed 64 KiB."),
|
|
40
41
|
# Operation shape (nothing is applied)
|
|
@@ -72,7 +73,7 @@ ERROR_CODES: dict[str, tuple[int, str]] = {
|
|
|
72
73
|
"BUILDER_PACKAGE_UNREADABLE": (1, "editor/packages/builder/package.json is missing or has no version."),
|
|
73
74
|
"ASSET_MANIFEST_INVALID": (1, "An asset manifest is corrupt or lists a path outside its root."),
|
|
74
75
|
"POSE_ASSET_INVALID": (1, "A pose file is larger than 1 MiB or lacks hips and 1-256 bone quaternions."),
|
|
75
|
-
"BOM_JSON_INVALID": (1, ".
|
|
76
|
+
"BOM_JSON_INVALID": (1, ".topview-3d/bom.json is corrupt; fix or delete it."),
|
|
76
77
|
"RENDER_IMAGE_INVALID": (1, "A render image is not a PNG or no longer matches the sha256 in render.json."),
|
|
77
78
|
"ASSET_FILE_MISSING": (1, "A manifest entry points to a file that does not exist."),
|
|
78
79
|
"ASSET_NOT_AVAILABLE": (1, "A character or prop model in the document has no local asset (see details)."),
|
|
@@ -87,6 +88,9 @@ ERROR_CODES: dict[str, tuple[int, str]] = {
|
|
|
87
88
|
"RENDER_RESULT_MISSING": (1, "The Node renderer printed no result."),
|
|
88
89
|
"RENDER_RESULT_INVALID": (1, "The Node renderer printed a non-JSON result."),
|
|
89
90
|
"DOCTOR_FAILED": (1, "Plain `doctor` found a missing or outdated dependency (`doctor --json` always exits 0)."),
|
|
91
|
+
"STUDIO_UNAVAILABLE": (1, "Studio is not in this install: it lives in editor/apps/studio of a checkout with Next.js installed."),
|
|
92
|
+
"STUDIO_START_FAILED": (1, "Node started Studio, but it did not list this project on port 3002."),
|
|
93
|
+
"STUDIO_PROJECT_MISSING": (1, "Studio is already running on port 3002 without this project; stop it and retry."),
|
|
90
94
|
"INTERNAL_ERROR": (1, "Unexpected failure; the message carries the exception."),
|
|
91
95
|
}
|
|
92
96
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"""Read-only checks: ``evaluate`` (dry-run numbers), ``inspect nodes`` (mesh measurements), ``inspect views``.
|
|
2
2
|
|
|
3
3
|
Nothing here edits the director document. ``inspect views`` writes render runs and records the
|
|
4
|
-
runtime evidence in ``.
|
|
4
|
+
runtime evidence in ``.topview-3d/bom.json``.
|
|
5
5
|
"""
|
|
6
6
|
from __future__ import annotations
|
|
7
7
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"""Local, single-writer Scene3D project storage.
|
|
2
2
|
|
|
3
|
-
``.
|
|
3
|
+
``.topview-3d/entities.json`` is the authoritative entity store (see
|
|
4
4
|
``director_operations``). ``document.json`` and ``fcurves.json`` are derived views
|
|
5
5
|
rewritten on every commit for renderers and humans; editing them has no effect.
|
|
6
6
|
"""
|
|
@@ -25,9 +25,11 @@ from topview_3d_cli.director_document import (
|
|
|
25
25
|
validate_fcurves,
|
|
26
26
|
)
|
|
27
27
|
from topview_3d_cli.director_operations import (
|
|
28
|
+
MAX_BATCH_OPERATIONS,
|
|
28
29
|
DirectorConflictError,
|
|
29
30
|
DirectorOperationError,
|
|
30
31
|
DirectorStore,
|
|
32
|
+
diff_operations,
|
|
31
33
|
genesis_store,
|
|
32
34
|
)
|
|
33
35
|
from topview_3d_cli.local_errors import LocalProjectError
|
|
@@ -36,6 +38,7 @@ from topview_3d_cli.runtime import builder_version
|
|
|
36
38
|
FORMAT_NAME = "scene3d-local-project"
|
|
37
39
|
SCHEMA_VERSION = 2
|
|
38
40
|
CLI_VERSION = __version__
|
|
41
|
+
STATE_DIR_NAME = ".topview-3d"
|
|
39
42
|
|
|
40
43
|
|
|
41
44
|
@dataclass(frozen=True)
|
|
@@ -61,7 +64,7 @@ class Project:
|
|
|
61
64
|
|
|
62
65
|
def project_paths(root: str | os.PathLike[str]) -> ProjectPaths:
|
|
63
66
|
directory = Path(root).expanduser().resolve()
|
|
64
|
-
state = directory /
|
|
67
|
+
state = directory / STATE_DIR_NAME
|
|
65
68
|
return ProjectPaths(
|
|
66
69
|
root=directory,
|
|
67
70
|
state=state,
|
|
@@ -192,6 +195,33 @@ def base_result(project: Project) -> dict[str, Any]:
|
|
|
192
195
|
return result
|
|
193
196
|
|
|
194
197
|
|
|
198
|
+
def adopt_edit(root: str | os.PathLike[str], payload: dict[str, Any]) -> dict[str, Any]:
|
|
199
|
+
"""Replace the stored scene with a Studio edit so the next CLI command continues from it.
|
|
200
|
+
|
|
201
|
+
``payload`` may include ``document``, ``fcurves``, or both. The omitted side stays as stored.
|
|
202
|
+
The entity store remains authoritative: the edit is applied as operations, then rewritten.
|
|
203
|
+
"""
|
|
204
|
+
if not isinstance(payload, dict) or not ({"document", "fcurves"} & payload.keys()):
|
|
205
|
+
raise LocalProjectError("PROJECT_ADOPT_INVALID", "body must be an object with document and/or fcurves")
|
|
206
|
+
project = open_project(root)
|
|
207
|
+
current = project.store.assemble()
|
|
208
|
+
document = payload["document"] if "document" in payload else current["document"]
|
|
209
|
+
fcurves = payload["fcurves"] if "fcurves" in payload else current["fcurves"]
|
|
210
|
+
try:
|
|
211
|
+
operations = diff_operations(current, document, fcurves, stem="studio")
|
|
212
|
+
except (TypeError, ValueError) as exc:
|
|
213
|
+
raise LocalProjectError("INVALID_DIRECTOR_DOCUMENT", str(exc)) from exc
|
|
214
|
+
if not operations:
|
|
215
|
+
return {**base_result(project), "adopted": False, "operations": 0}
|
|
216
|
+
try:
|
|
217
|
+
for start in range(0, len(operations), MAX_BATCH_OPERATIONS):
|
|
218
|
+
project.store.apply(operations[start:start + MAX_BATCH_OPERATIONS], strict_versions=False, batch_id="studio")
|
|
219
|
+
except (DirectorConflictError, DirectorOperationError, ValueError) as exc:
|
|
220
|
+
raise LocalProjectError("INVALID_DIRECTOR_DOCUMENT", str(exc)) from exc
|
|
221
|
+
commit(project)
|
|
222
|
+
return {**base_result(project), "adopted": True, "operations": len(operations)}
|
|
223
|
+
|
|
224
|
+
|
|
195
225
|
def project_status(root: str | os.PathLike[str]) -> dict[str, Any]:
|
|
196
226
|
project = open_project(root)
|
|
197
227
|
assembled = project.store.assemble()
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
"""Open a local project in the checkout's Studio app.
|
|
2
|
+
|
|
3
|
+
Studio is the Next.js app at ``editor/apps/studio``. It is not inside the published
|
|
4
|
+
wheel, so this command only works from a repository checkout. It starts Studio with
|
|
5
|
+
Node when port 3002 is free, then opens the system browser on this project.
|
|
6
|
+
"""
|
|
7
|
+
from __future__ import annotations
|
|
8
|
+
|
|
9
|
+
import json
|
|
10
|
+
import os
|
|
11
|
+
import re
|
|
12
|
+
import shutil
|
|
13
|
+
import socket
|
|
14
|
+
import sys
|
|
15
|
+
import subprocess
|
|
16
|
+
import time
|
|
17
|
+
import urllib.error
|
|
18
|
+
import urllib.request
|
|
19
|
+
import webbrowser
|
|
20
|
+
from pathlib import Path
|
|
21
|
+
|
|
22
|
+
from topview_3d_cli.local_errors import LocalProjectError
|
|
23
|
+
from topview_3d_cli.local_project import open_project
|
|
24
|
+
from topview_3d_cli.runtime import REPO_ROOT, runtime, user_cache_dir
|
|
25
|
+
|
|
26
|
+
STUDIO_PORT = 3002
|
|
27
|
+
STUDIO_HOST = "127.0.0.1"
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
def studio_project_id(directory_name: str) -> str:
|
|
31
|
+
slug = re.sub(r"[^a-z0-9]+", "-", directory_name.lower()).strip("-") or "project"
|
|
32
|
+
return f"cli-{slug[:48]}"
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def _studio_dir() -> Path:
|
|
36
|
+
studio = REPO_ROOT / "editor" / "apps" / "studio"
|
|
37
|
+
if not (studio / "package.json").is_file():
|
|
38
|
+
raise LocalProjectError(
|
|
39
|
+
"STUDIO_UNAVAILABLE",
|
|
40
|
+
"Studio is part of a repository checkout (editor/apps/studio), not the published package",
|
|
41
|
+
)
|
|
42
|
+
return studio
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
def _next_bin(studio: Path) -> Path:
|
|
46
|
+
candidates = [
|
|
47
|
+
studio / "node_modules" / "next" / "dist" / "bin" / "next",
|
|
48
|
+
studio.parents[1] / "node_modules" / "next" / "dist" / "bin" / "next",
|
|
49
|
+
]
|
|
50
|
+
for candidate in candidates:
|
|
51
|
+
if candidate.is_file():
|
|
52
|
+
return candidate
|
|
53
|
+
raise LocalProjectError(
|
|
54
|
+
"STUDIO_UNAVAILABLE",
|
|
55
|
+
"Next.js is not installed; run pnpm install in editor/ of the checkout",
|
|
56
|
+
)
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
def _port_open(port: int) -> bool:
|
|
60
|
+
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock:
|
|
61
|
+
sock.settimeout(0.2)
|
|
62
|
+
return sock.connect_ex((STUDIO_HOST, port)) == 0
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
def _projects(port: int) -> list[dict]:
|
|
66
|
+
url = f"http://{STUDIO_HOST}:{port}/api/projects"
|
|
67
|
+
try:
|
|
68
|
+
with urllib.request.urlopen(url, timeout=2) as response:
|
|
69
|
+
body = json.loads(response.read().decode("utf-8"))
|
|
70
|
+
except (OSError, urllib.error.URLError, json.JSONDecodeError, TimeoutError) as exc:
|
|
71
|
+
raise LocalProjectError("STUDIO_START_FAILED", f"Studio on port {port} did not list projects: {exc}") from exc
|
|
72
|
+
projects = body.get("projects") if isinstance(body, dict) else None
|
|
73
|
+
if not isinstance(projects, list):
|
|
74
|
+
raise LocalProjectError("STUDIO_START_FAILED", "Studio /api/projects did not return a project list")
|
|
75
|
+
return projects
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
def _wait_until_listed(port: int, project_id: str, timeout: float = 60) -> None:
|
|
79
|
+
deadline = time.monotonic() + timeout
|
|
80
|
+
last_error = "timed out"
|
|
81
|
+
while time.monotonic() < deadline:
|
|
82
|
+
if _port_open(port):
|
|
83
|
+
try:
|
|
84
|
+
if any(item.get("id") == project_id for item in _projects(port) if isinstance(item, dict)):
|
|
85
|
+
return
|
|
86
|
+
last_error = f"project {project_id} is not in the list"
|
|
87
|
+
except LocalProjectError as exc:
|
|
88
|
+
last_error = str(exc)
|
|
89
|
+
time.sleep(0.4)
|
|
90
|
+
raise LocalProjectError("STUDIO_START_FAILED", f"Studio did not become ready: {last_error}")
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
def _start(studio: Path, next_bin: Path, project_root: Path) -> int:
|
|
94
|
+
log_dir = user_cache_dir() / "studio"
|
|
95
|
+
log_dir.mkdir(parents=True, exist_ok=True)
|
|
96
|
+
log_path = log_dir / "studio.log"
|
|
97
|
+
env = dict(os.environ)
|
|
98
|
+
env["TOPVIEW3D_PROJECTS"] = str(project_root)
|
|
99
|
+
env["TOPVIEW3D_CLI"] = shutil.which("topview-3d-cli") or sys.argv[0]
|
|
100
|
+
try:
|
|
101
|
+
env["TOPVIEW3D_BUILTIN_ASSETS"] = str(runtime().builtin_assets)
|
|
102
|
+
except LocalProjectError:
|
|
103
|
+
pass
|
|
104
|
+
log = log_path.open("ab")
|
|
105
|
+
try:
|
|
106
|
+
process = subprocess.Popen(
|
|
107
|
+
["node", str(next_bin), "dev", "--port", str(STUDIO_PORT), "--hostname", STUDIO_HOST],
|
|
108
|
+
cwd=studio,
|
|
109
|
+
env=env,
|
|
110
|
+
stdout=log,
|
|
111
|
+
stderr=subprocess.STDOUT,
|
|
112
|
+
start_new_session=True,
|
|
113
|
+
)
|
|
114
|
+
finally:
|
|
115
|
+
log.close()
|
|
116
|
+
return process.pid
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
def open_studio(directory: str) -> dict:
|
|
120
|
+
project = open_project(directory)
|
|
121
|
+
root = project.paths.root
|
|
122
|
+
project_id = studio_project_id(root.name)
|
|
123
|
+
url = f"http://{STUDIO_HOST}:{STUDIO_PORT}/?project={project_id}"
|
|
124
|
+
started = False
|
|
125
|
+
pid = None
|
|
126
|
+
if _port_open(STUDIO_PORT):
|
|
127
|
+
listed = _projects(STUDIO_PORT)
|
|
128
|
+
if not any(item.get("id") == project_id for item in listed if isinstance(item, dict)):
|
|
129
|
+
raise LocalProjectError(
|
|
130
|
+
"STUDIO_PROJECT_MISSING",
|
|
131
|
+
f"Studio is already running on port {STUDIO_PORT} without this project; stop it and run studio open again",
|
|
132
|
+
)
|
|
133
|
+
else:
|
|
134
|
+
studio = _studio_dir()
|
|
135
|
+
pid = _start(studio, _next_bin(studio), root)
|
|
136
|
+
started = True
|
|
137
|
+
_wait_until_listed(STUDIO_PORT, project_id)
|
|
138
|
+
webbrowser.open(url)
|
|
139
|
+
return {
|
|
140
|
+
"ok": True,
|
|
141
|
+
"url": url,
|
|
142
|
+
"projectId": project_id,
|
|
143
|
+
"project": str(root),
|
|
144
|
+
"started": started,
|
|
145
|
+
"pid": pid,
|
|
146
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: topview-3d-cli
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.2
|
|
4
4
|
Summary: Build and render 3D director scenes locally with the topview-3d-cli command.
|
|
5
5
|
License-Expression: Apache-2.0 AND CC-BY-4.0
|
|
6
6
|
Project-URL: Homepage, https://www.topview.ai/topview-3d-builder
|
|
@@ -26,7 +26,7 @@ Dynamic: license-file
|
|
|
26
26
|
# topview-3d-cli
|
|
27
27
|
|
|
28
28
|
`topview-3d-cli` builds and renders 3D director scenes on your machine. Projects are plain files in a
|
|
29
|
-
`.
|
|
29
|
+
`.topview-3d/` directory; rendering uses a local headless Chromium and makes no network requests.
|
|
30
30
|
|
|
31
31
|
Requirements: Python 3.11+ and Node.js 20.6+ (with npm).
|
|
32
32
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{topview_3d_cli-0.1.0 → topview_3d_cli-0.1.2}/topview_3d_cli/_runtime/builtin-assets/LICENSE
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|