polats commited on
Commit
de752b1
·
verified ·
1 Parent(s): c8ea716

Deploy Karate Wiener (kimodo kata maker)

Browse files
Files changed (4) hide show
  1. _check_drawer.js +49 -16
  2. app.py +48 -30
  3. deploy_out12.txt +4 -0
  4. deploy_out13.txt +495 -0
_check_drawer.js CHANGED
@@ -803,11 +803,20 @@
803
  return btoa(bin);
804
  }
805
  function viewerPayload(m, id, prompt, opts) {
 
 
 
 
 
 
806
  return {
807
- id: id || '', prompt: prompt || '', keepCamera: !!(opts && opts.keepCamera),
808
- num_joints: m.num_joints, num_frames: m.num_frames, preview_frames: m.num_frames,
809
- preview_fps: m.fps, fps: m.fps, bone_names: m.bone_names, parents: m.parents,
810
- joint_data_b64: f32b64(m.posed_joints), quat_data_b64: f32b64(m.global_quats_xyzw), root_data_b64: f32b64(m.root_positions),
 
 
 
811
  // Red target skeletons at each move's seam (only for stitched katas, >1 move).
812
  target_frames: (m.target_frames && m.target_frames.length > 1) ? m.target_frames : null,
813
  created_by: m.created_by || '', created_by_name: m.created_by_name || '',
@@ -1402,17 +1411,26 @@
1402
  // Re-stitch the generated prefix and refresh the scrubbable preview. When `startMove`
1403
  // is given, playback begins at THAT move's start pose (not frame 0) — so after a
1404
  // GENERATE you see the kata pick up from the just-built move, not replay from the top.
1405
- async function updateKataPreview(startMove) {
1406
  const { ids } = generatedPrefix();
1407
- if (!ids.length) { composePlayer = null; renderComposePlayer(); return; }
1408
  try {
1409
- const m = await composeStitch(ids);
1410
- m.num_joints = (m.posed_joints && m.posed_joints[0]) ? m.posed_joints[0].length : 22;
1411
- if (!m.bone_names || !m.bone_names.length) m.bone_names = SMPLX22_BONES;
1412
- m.parents = SMPLX22_PARENTS;
 
 
 
 
 
 
 
 
 
1413
  _czViewerHasPreview = true;
1414
  loadIntoViewer(m, '', (composeCurrentKata && composeCurrentKata.label) || 'kata', { keepCamera: true });
1415
- composePlayer = { numFrames: m.num_frames || 1, fps: m.fps || 30, poseFrac: posefracFromStrip(), curFrame: 0, playing: true, genCount: ids.length, boundaries: _czBoundaries(m), _payload: m };
1416
  renderComposePlayer();
1417
  // Start at the requested move's start frame (pf[startMove-1]) instead of the top.
1418
  let sf = 0;
@@ -2158,7 +2176,9 @@
2158
  if (meta.move_index) { composeJustGenIdx = meta.move_index; clearPlaceMode(); } // per-move bridge: highlight the move just built
2159
  saveCurrentKata();
2160
  const builtIdx = meta.move_index || (composeStrip.length - 1);
2161
- updateKataPreview(builtIdx).then(() => { if (builtIdx >= 1 && builtIdx < composeStrip.length) { if (composeStrip[builtIdx]) _czGenPulseUid = composeStrip[builtIdx]._uid; selectMove(builtIdx); } }); // play from this move's start + keep selected + pulse gray→purple
 
 
2162
  setComposeStatus('▶ generated');
2163
  } else {
2164
  renderComposePlayer();
@@ -2953,10 +2973,23 @@
2953
  setPulse(true);
2954
  });
2955
 
2956
- // The rail button is server-rendered, so it already exists when this runs; re-apply
2957
- // once shortly after in case the rail mounts a touch late.
2958
- applyState();
2959
- setTimeout(applyState, 800);
 
 
 
 
 
 
 
 
 
 
 
 
 
2960
  })();
2961
 
2962
 
 
803
  return btoa(bin);
804
  }
805
  function viewerPayload(m, id, prompt, opts) {
806
+ // m may be a RAW stitched record (posed_joints/global_quats_xyzw/root_positions) OR an
807
+ // already-encoded preview payload (joint_data_b64/...). When it's already b64 (the
808
+ // server-stitched in-process build), pass it through verbatim instead of re-encoding
809
+ // undefined raw arrays — so the live iframe can be reused without a reload.
810
+ const b64 = !!m.joint_data_b64;
811
+ const nf = m.num_frames || m.preview_frames;
812
  return {
813
+ id: id || m.id || '', prompt: prompt || m.prompt || '', keepCamera: !!(opts && opts.keepCamera),
814
+ num_joints: m.num_joints, num_frames: nf, preview_frames: m.preview_frames || nf,
815
+ preview_fps: m.preview_fps || m.fps, fps: m.fps || m.preview_fps,
816
+ bone_names: m.bone_names, parents: m.parents,
817
+ joint_data_b64: b64 ? m.joint_data_b64 : f32b64(m.posed_joints),
818
+ quat_data_b64: b64 ? (m.quat_data_b64 || null) : f32b64(m.global_quats_xyzw),
819
+ root_data_b64: b64 ? (m.root_data_b64 || null) : f32b64(m.root_positions),
820
  // Red target skeletons at each move's seam (only for stitched katas, >1 move).
821
  target_frames: (m.target_frames && m.target_frames.length > 1) ? m.target_frames : null,
822
  created_by: m.created_by || '', created_by_name: m.created_by_name || '',
 
1411
  // Re-stitch the generated prefix and refresh the scrubbable preview. When `startMove`
1412
  // is given, playback begins at THAT move's start pose (not frame 0) — so after a
1413
  // GENERATE you see the kata pick up from the just-built move, not replay from the top.
1414
+ async function updateKataPreview(startMove, prebuilt) {
1415
  const { ids } = generatedPrefix();
1416
+ if (!ids.length && !prebuilt) { composePlayer = null; renderComposePlayer(); return; }
1417
  try {
1418
+ let m;
1419
+ if (prebuilt) {
1420
+ // Server-stitched preview handed back from the in-process (Space) build. Reuse the
1421
+ // LIVE viewer iframe (no reload) and DON'T re-fetch the just-saved clips — the
1422
+ // dataset CDN lags right after a commit, so a client re-stitch would 404.
1423
+ m = prebuilt;
1424
+ if (!m.num_frames) m.num_frames = m.preview_frames || 1;
1425
+ } else {
1426
+ m = await composeStitch(ids);
1427
+ m.num_joints = (m.posed_joints && m.posed_joints[0]) ? m.posed_joints[0].length : 22;
1428
+ if (!m.bone_names || !m.bone_names.length) m.bone_names = SMPLX22_BONES;
1429
+ m.parents = SMPLX22_PARENTS;
1430
+ }
1431
  _czViewerHasPreview = true;
1432
  loadIntoViewer(m, '', (composeCurrentKata && composeCurrentKata.label) || 'kata', { keepCamera: true });
1433
+ composePlayer = { numFrames: m.num_frames || 1, fps: m.fps || m.preview_fps || 30, poseFrac: posefracFromStrip(), curFrame: 0, playing: true, genCount: ids.length, boundaries: _czBoundaries(m), _payload: m };
1434
  renderComposePlayer();
1435
  // Start at the requested move's start frame (pf[startMove-1]) instead of the top.
1436
  let sf = 0;
 
2176
  if (meta.move_index) { composeJustGenIdx = meta.move_index; clearPlaceMode(); } // per-move bridge: highlight the move just built
2177
  saveCurrentKata();
2178
  const builtIdx = meta.move_index || (composeStrip.length - 1);
2179
+ // Play the server-stitched preview straight into the LIVE iframe (no page reload)
2180
+ // the in-process build hands it back via meta.preview_payload.
2181
+ updateKataPreview(builtIdx, meta.preview_payload || null).then(() => { if (builtIdx >= 1 && builtIdx < composeStrip.length) { if (composeStrip[builtIdx]) _czGenPulseUid = composeStrip[builtIdx]._uid; selectMove(builtIdx); } }); // play from this move's start + keep selected + pulse gray→purple
2182
  setComposeStatus('▶ generated');
2183
  } else {
2184
  renderComposePlayer();
 
2973
  setPulse(true);
2974
  });
2975
 
2976
+ // Don't start the first-run pulse until the intro TITLE overlay has finished. The intro
2977
+ // (#kw-title-overlay) is added just after this script and REMOVED from the DOM when it
2978
+ // ends; it covers the whole screen meanwhile. So: wait until it has appeared and gone,
2979
+ // or — if no intro exists (no audio asset) — proceed after a short grace window.
2980
+ function gateInitialPulse() {
2981
+ var present = function () { return !!document.getElementById('kw-title-overlay'); };
2982
+ var sawIntro = present();
2983
+ var iv = setInterval(function () {
2984
+ if (present()) { sawIntro = true; return; } // intro still on screen
2985
+ if (sawIntro) { clearInterval(iv); applyState(); } // appeared then gone = intro done
2986
+ }, 250);
2987
+ // No intro showed up within the grace window => nothing to wait for.
2988
+ setTimeout(function () { if (!sawIntro && !present()) { clearInterval(iv); applyState(); } }, 1300);
2989
+ // Hard safety: never wait forever.
2990
+ setTimeout(function () { clearInterval(iv); applyState(); }, 15000);
2991
+ }
2992
+ gateInitialPulse();
2993
  })();
2994
 
2995
 
app.py CHANGED
@@ -4590,11 +4590,20 @@ _KATA_JS = r"""
4590
  return btoa(bin);
4591
  }
4592
  function viewerPayload(m, id, prompt, opts) {
 
 
 
 
 
 
4593
  return {
4594
- id: id || '', prompt: prompt || '', keepCamera: !!(opts && opts.keepCamera),
4595
- num_joints: m.num_joints, num_frames: m.num_frames, preview_frames: m.num_frames,
4596
- preview_fps: m.fps, fps: m.fps, bone_names: m.bone_names, parents: m.parents,
4597
- joint_data_b64: f32b64(m.posed_joints), quat_data_b64: f32b64(m.global_quats_xyzw), root_data_b64: f32b64(m.root_positions),
 
 
 
4598
  // Red target skeletons at each move's seam (only for stitched katas, >1 move).
4599
  target_frames: (m.target_frames && m.target_frames.length > 1) ? m.target_frames : null,
4600
  created_by: m.created_by || '', created_by_name: m.created_by_name || '',
@@ -5200,17 +5209,26 @@ _COMPOSE_JS = r"""
5200
  // Re-stitch the generated prefix and refresh the scrubbable preview. When `startMove`
5201
  // is given, playback begins at THAT move's start pose (not frame 0) — so after a
5202
  // GENERATE you see the kata pick up from the just-built move, not replay from the top.
5203
- async function updateKataPreview(startMove) {
5204
  const { ids } = generatedPrefix();
5205
- if (!ids.length) { composePlayer = null; renderComposePlayer(); return; }
5206
  try {
5207
- const m = await composeStitch(ids);
5208
- m.num_joints = (m.posed_joints && m.posed_joints[0]) ? m.posed_joints[0].length : 22;
5209
- if (!m.bone_names || !m.bone_names.length) m.bone_names = SMPLX22_BONES;
5210
- m.parents = SMPLX22_PARENTS;
 
 
 
 
 
 
 
 
 
5211
  _czViewerHasPreview = true;
5212
  loadIntoViewer(m, '', (composeCurrentKata && composeCurrentKata.label) || 'kata', { keepCamera: true });
5213
- composePlayer = { numFrames: m.num_frames || 1, fps: m.fps || 30, poseFrac: posefracFromStrip(), curFrame: 0, playing: true, genCount: ids.length, boundaries: _czBoundaries(m), _payload: m };
5214
  renderComposePlayer();
5215
  // Start at the requested move's start frame (pf[startMove-1]) instead of the top.
5216
  let sf = 0;
@@ -5956,7 +5974,9 @@ _COMPOSE_JS = r"""
5956
  if (meta.move_index) { composeJustGenIdx = meta.move_index; clearPlaceMode(); } // per-move bridge: highlight the move just built
5957
  saveCurrentKata();
5958
  const builtIdx = meta.move_index || (composeStrip.length - 1);
5959
- updateKataPreview(builtIdx).then(() => { if (builtIdx >= 1 && builtIdx < composeStrip.length) { if (composeStrip[builtIdx]) _czGenPulseUid = composeStrip[builtIdx]._uid; selectMove(builtIdx); } }); // play from this move's start + keep selected + pulse gray→purple
 
 
5960
  setComposeStatus('▶ generated');
5961
  } else {
5962
  renderComposePlayer();
@@ -7147,7 +7167,9 @@ def _compose_single_move_logged_in(
7147
  )
7148
  if not isinstance(payload, dict) or record is None:
7149
  err = meta.get("error") if isinstance(meta, dict) else "generation failed"
7150
- return _empty_preview_html(f"Move generation failed: {err}"), meta, None
 
 
7151
  # Stitch the generated prefix (loaded from the store — store.get reads the
7152
  # freshly-committed records reliably) + the new move, so the viewer shows the
7153
  # kata up to here without waiting on dataset/CDN propagation.
@@ -7162,22 +7184,20 @@ def _compose_single_move_logged_in(
7162
  spine_ids = list(prefix_ids) + [record["id"]]
7163
  n = len(spine_ids)
7164
  spayload["prompt"] = f"kata · {n} move{'' if n == 1 else 's'}"
7165
- character = model if int(spayload.get("num_joints", 0) or 0) == 22 else "skeleton"
7166
- # Point the picker at the just-generated move (a real, non-"kata:" clip id) so the
7167
- # viewer PLAYS the stitched preview we pass as `data`. Passing None defaulted the
7168
- # picker to the first kata option and auto-played the STARTUP kata 60ms later instead
7169
- # of the move just generated. (Mirrors the single-generate path's current_id.)
7170
  spayload["id"] = record["id"]
7171
- html_ = _render_preview_html(spayload, character, _clothing_from_json(clothing_state), _animation_list(), record["id"])
7172
- # Same meta shape the batch path returns, so __kimodoOnComposeBuilt assigns the
7173
- # spine clipIds unchanged; move_index drives the per-card "just generated" state.
 
 
7174
  meta_out = {
7175
  "kata_root": spine_ids[0], "kata_ids": spine_ids, "moves": n,
7176
  "num_frames": stitched["num_frames"], "move_index": int(mv.get("index") or n),
 
7177
  }
7178
  if creator:
7179
  meta_out.update(creator)
7180
- return html_, meta_out, npz_path
7181
 
7182
 
7183
  def compose_ui_logged_in(
@@ -7240,23 +7260,21 @@ def compose_ui_logged_in(
7240
  )
7241
  if not isinstance(payload, dict) or record is None:
7242
  err = meta.get("error") if isinstance(meta, dict) else "generation failed"
7243
- return _empty_preview_html(f"Build failed at move {i + 1}: {err}"), meta, None
7244
  prev_id = record["id"]
7245
  recs.append(record)
7246
  npz_last = npz_path
7247
  stitched = _stitch_records(recs)
7248
  spayload = _preview_payload_from_record(stitched)
7249
  spayload["prompt"] = f"storyboard · {len(recs)} moves"
7250
- character = model if int(spayload.get("num_joints", 0) or 0) == 22 else "skeleton"
7251
- # Point the picker at the last built move (non-"kata:" clip id) so the viewer plays
7252
- # the stitched `data` instead of defaulting to / auto-playing the startup kata.
7253
  spayload["id"] = recs[-1]["id"]
7254
- html_ = _render_preview_html(spayload, character, _clothing_from_json(clothing_state), _animation_list(), recs[-1]["id"])
7255
- # Spine ids (in order) so the client can stitch + replay the kata from the library.
7256
- meta_out = {"kata_root": recs[0]["id"], "kata_ids": [r["id"] for r in recs], "moves": len(recs), "num_frames": stitched["num_frames"]}
 
7257
  if creator:
7258
  meta_out.update(creator)
7259
- return html_, meta_out, npz_last
7260
 
7261
 
7262
  # Collapse the empty drawer host (its content is fixed-positioned) so it leaves
 
4590
  return btoa(bin);
4591
  }
4592
  function viewerPayload(m, id, prompt, opts) {
4593
+ // m may be a RAW stitched record (posed_joints/global_quats_xyzw/root_positions) OR an
4594
+ // already-encoded preview payload (joint_data_b64/...). When it's already b64 (the
4595
+ // server-stitched in-process build), pass it through verbatim instead of re-encoding
4596
+ // undefined raw arrays — so the live iframe can be reused without a reload.
4597
+ const b64 = !!m.joint_data_b64;
4598
+ const nf = m.num_frames || m.preview_frames;
4599
  return {
4600
+ id: id || m.id || '', prompt: prompt || m.prompt || '', keepCamera: !!(opts && opts.keepCamera),
4601
+ num_joints: m.num_joints, num_frames: nf, preview_frames: m.preview_frames || nf,
4602
+ preview_fps: m.preview_fps || m.fps, fps: m.fps || m.preview_fps,
4603
+ bone_names: m.bone_names, parents: m.parents,
4604
+ joint_data_b64: b64 ? m.joint_data_b64 : f32b64(m.posed_joints),
4605
+ quat_data_b64: b64 ? (m.quat_data_b64 || null) : f32b64(m.global_quats_xyzw),
4606
+ root_data_b64: b64 ? (m.root_data_b64 || null) : f32b64(m.root_positions),
4607
  // Red target skeletons at each move's seam (only for stitched katas, >1 move).
4608
  target_frames: (m.target_frames && m.target_frames.length > 1) ? m.target_frames : null,
4609
  created_by: m.created_by || '', created_by_name: m.created_by_name || '',
 
5209
  // Re-stitch the generated prefix and refresh the scrubbable preview. When `startMove`
5210
  // is given, playback begins at THAT move's start pose (not frame 0) — so after a
5211
  // GENERATE you see the kata pick up from the just-built move, not replay from the top.
5212
+ async function updateKataPreview(startMove, prebuilt) {
5213
  const { ids } = generatedPrefix();
5214
+ if (!ids.length && !prebuilt) { composePlayer = null; renderComposePlayer(); return; }
5215
  try {
5216
+ let m;
5217
+ if (prebuilt) {
5218
+ // Server-stitched preview handed back from the in-process (Space) build. Reuse the
5219
+ // LIVE viewer iframe (no reload) and DON'T re-fetch the just-saved clips — the
5220
+ // dataset CDN lags right after a commit, so a client re-stitch would 404.
5221
+ m = prebuilt;
5222
+ if (!m.num_frames) m.num_frames = m.preview_frames || 1;
5223
+ } else {
5224
+ m = await composeStitch(ids);
5225
+ m.num_joints = (m.posed_joints && m.posed_joints[0]) ? m.posed_joints[0].length : 22;
5226
+ if (!m.bone_names || !m.bone_names.length) m.bone_names = SMPLX22_BONES;
5227
+ m.parents = SMPLX22_PARENTS;
5228
+ }
5229
  _czViewerHasPreview = true;
5230
  loadIntoViewer(m, '', (composeCurrentKata && composeCurrentKata.label) || 'kata', { keepCamera: true });
5231
+ composePlayer = { numFrames: m.num_frames || 1, fps: m.fps || m.preview_fps || 30, poseFrac: posefracFromStrip(), curFrame: 0, playing: true, genCount: ids.length, boundaries: _czBoundaries(m), _payload: m };
5232
  renderComposePlayer();
5233
  // Start at the requested move's start frame (pf[startMove-1]) instead of the top.
5234
  let sf = 0;
 
5974
  if (meta.move_index) { composeJustGenIdx = meta.move_index; clearPlaceMode(); } // per-move bridge: highlight the move just built
5975
  saveCurrentKata();
5976
  const builtIdx = meta.move_index || (composeStrip.length - 1);
5977
+ // Play the server-stitched preview straight into the LIVE iframe (no page reload)
5978
+ // the in-process build hands it back via meta.preview_payload.
5979
+ updateKataPreview(builtIdx, meta.preview_payload || null).then(() => { if (builtIdx >= 1 && builtIdx < composeStrip.length) { if (composeStrip[builtIdx]) _czGenPulseUid = composeStrip[builtIdx]._uid; selectMove(builtIdx); } }); // play from this move's start + keep selected + pulse gray→purple
5980
  setComposeStatus('▶ generated');
5981
  } else {
5982
  renderComposePlayer();
 
7167
  )
7168
  if not isinstance(payload, dict) or record is None:
7169
  err = meta.get("error") if isinstance(meta, dict) else "generation failed"
7170
+ # gr.skip() leaves the viewer iframe untouched (no reload) surface the error
7171
+ # through meta instead; the composer JS shows it via setComposeStatus.
7172
+ return gr.skip(), {"error": str(err)[:160]}, None
7173
  # Stitch the generated prefix (loaded from the store — store.get reads the
7174
  # freshly-committed records reliably) + the new move, so the viewer shows the
7175
  # kata up to here without waiting on dataset/CDN propagation.
 
7184
  spine_ids = list(prefix_ids) + [record["id"]]
7185
  n = len(spine_ids)
7186
  spayload["prompt"] = f"kata · {n} move{'' if n == 1 else 's'}"
 
 
 
 
 
7187
  spayload["id"] = record["id"]
7188
+ # REUSE the existing viewer iframe instead of returning fresh HTML: returning HTML to
7189
+ # the `preview` output made Gradio swap #main-preview, fully reloading three.js + the
7190
+ # character GLB + clothing on every move. Hand the server-stitched preview to the client
7191
+ # (via meta.preview_payload) so it postMessages it straight into the live iframe, and
7192
+ # gr.skip() the preview so the iframe is never touched.
7193
  meta_out = {
7194
  "kata_root": spine_ids[0], "kata_ids": spine_ids, "moves": n,
7195
  "num_frames": stitched["num_frames"], "move_index": int(mv.get("index") or n),
7196
+ "preview_payload": spayload,
7197
  }
7198
  if creator:
7199
  meta_out.update(creator)
7200
+ return gr.skip(), meta_out, npz_path
7201
 
7202
 
7203
  def compose_ui_logged_in(
 
7260
  )
7261
  if not isinstance(payload, dict) or record is None:
7262
  err = meta.get("error") if isinstance(meta, dict) else "generation failed"
7263
+ return gr.skip(), {"error": f"Build failed at move {i + 1}: {str(err)[:140]}"}, None
7264
  prev_id = record["id"]
7265
  recs.append(record)
7266
  npz_last = npz_path
7267
  stitched = _stitch_records(recs)
7268
  spayload = _preview_payload_from_record(stitched)
7269
  spayload["prompt"] = f"storyboard · {len(recs)} moves"
 
 
 
7270
  spayload["id"] = recs[-1]["id"]
7271
+ # Reuse the live viewer iframe (no reload): hand the server-stitched preview to the
7272
+ # client to postMessage in, and gr.skip() the preview output (see the per-move twin).
7273
+ meta_out = {"kata_root": recs[0]["id"], "kata_ids": [r["id"] for r in recs], "moves": len(recs),
7274
+ "num_frames": stitched["num_frames"], "preview_payload": spayload}
7275
  if creator:
7276
  meta_out.update(creator)
7277
+ return gr.skip(), meta_out, npz_last
7278
 
7279
 
7280
  # Collapse the empty drawer host (its content is fixed-positioned) so it leaves
deploy_out12.txt CHANGED
@@ -556,3 +556,7 @@ variables + HF_TOKEN secret set
556
 
557
  ...eft_hand_thumb_2_link.STL: 100%|##########| 1.52MB / 1.52MB
558
 
559
  ...keletons\smplx22\beta.npy: 100%|##########| 1.33kB / 1.33kB
560
 
561
  [+ 75 files] : 100%|##########| 76.6MB / 76.6MB
 
 
 
 
 
556
 
557
  ...eft_hand_thumb_2_link.STL: 100%|##########| 1.52MB / 1.52MB
558
 
559
  ...keletons\smplx22\beta.npy: 100%|##########| 1.33kB / 1.33kB
560
 
561
  [+ 75 files] : 100%|##########| 76.6MB / 76.6MB
562
+ No files have been modified since last commit. Skipping to prevent empty commit.
563
+ Uploaded: https://huggingface.co/spaces/build-small-hackathon/karate-wiener/commit/c8ea71643563e3cf3c7c104af10f9b34fa520801
564
+ Space URL: https://huggingface.co/spaces/build-small-hackathon/karate-wiener
565
+ restarting local gradio -> http://127.0.0.1:7860 (log: C:\Users\paulg\AppData\Local\Temp\kimodo_local_gradio.log)
deploy_out13.txt ADDED
@@ -0,0 +1,495 @@
 
 
 
 
 
0
  ...\beanie_green_sausage.glb: 100%|##########| 1.21MB / 1.21MB 
 
 
1
  ...\beanie_green_sausage.glb: 100%|##########| 1.21MB / 1.21MB 
 
 
2
  ...\beanie_green_sausage.glb: 100%|##########| 1.21MB / 1.21MB 
 
 
3
  ...\beanie_green_sausage.glb: 100%|##########| 1.21MB / 1.21MB 
 
 
4
  ...\beanie_green_sausage.glb: 100%|##########| 1.21MB / 1.21MB 
 
 
5
  ...\beanie_green_sausage.glb: 100%|##########| 1.21MB / 1.21MB
 
 
 
 
 
 
6
  ...othing\kimono_sausage.glb: 100%|##########| 2.38MB / 2.38MB 
 
 
7
  ...othing\kimono_sausage.glb: 100%|##########| 2.38MB / 2.38MB 
 
 
8
  ...othing\kimono_sausage.glb: 100%|##########| 2.38MB / 2.38MB 
 
 
9
  ...othing\kimono_sausage.glb: 100%|##########| 2.38MB / 2.38MB 
 
 
10
  ...othing\kimono_sausage.glb: 100%|##########| 2.38MB / 2.38MB
 
 
 
 
 
 
11
  ...mono_trousers_sausage.glb: 100%|##########| 2.20MB / 2.20MB 
 
 
12
  ...mono_trousers_sausage.glb: 100%|##########| 2.20MB / 2.20MB 
 
 
13
  ...mono_trousers_sausage.glb: 100%|##########| 2.20MB / 2.20MB 
 
 
14
  ...mono_trousers_sausage.glb: 100%|##########| 2.20MB / 2.20MB 
 
 
15
  ...mono_trousers_sausage.glb: 100%|##########| 2.20MB / 2.20MB
 
 
 
 
 
 
16
  ...nerdy_glasses_sausage.glb: 100%|##########| 246kB / 246kB 
 
 
17
  ...nerdy_glasses_sausage.glb: 100%|##########| 246kB / 246kB 
 
 
18
  ...nerdy_glasses_sausage.glb: 100%|##########| 246kB / 246kB 
 
 
19
  ...nerdy_glasses_sausage.glb: 100%|##########| 246kB / 246kB 
 
 
20
  ...nerdy_glasses_sausage.glb: 100%|##########| 246kB / 246kB
 
 
 
 
 
 
21
  ...ts\citizen_skin_color.png: 100%|##########| 1.26MB / 1.26MB 
 
 
22
  ...ts\citizen_skin_color.png: 100%|##########| 1.26MB / 1.26MB 
 
 
23
  ...ts\citizen_skin_color.png: 100%|##########| 1.26MB / 1.26MB 
 
 
24
  ...ts\citizen_skin_color.png: 100%|##########| 1.26MB / 1.26MB 
 
 
25
  ...ts\citizen_skin_color.png: 100%|##########| 1.26MB / 1.26MB
 
 
 
 
 
 
26
  ...assets\unirig_citizen.glb: 100%|##########| 115kB / 115kB 
 
 
27
  ...assets\unirig_citizen.glb: 100%|##########| 115kB / 115kB 
 
 
28
  ...assets\unirig_citizen.glb: 100%|##########| 115kB / 115kB 
 
 
29
  ...assets\unirig_citizen.glb: 100%|##########| 115kB / 115kB 
 
 
30
  ...assets\unirig_citizen.glb: 100%|##########| 115kB / 115kB 
 
 
31
  ...assets\unirig_citizen.glb: 100%|##########| 115kB / 115kB
 
 
 
 
 
 
 
 
 
32
  ...\right_hand_palm_link.STL: 100%|##########| 2.14MB / 2.14MB 
 
 
 
33
  ..._kmd_db1d3fe8af7846f5.png: 100%|##########| 146kB / 146kB 
 
 
 
 
34
  ...assets\unirig_citizen.glb: 100%|##########| 115kB / 115kB 
 
 
 
 
 
35
  ...ce\built_moves_verify.png: 100%|##########| 146kB / 146kB 
 
 
 
 
 
 
36
  ...e\wiener_session_crab.png: 100%|##########| 376kB / 376kB 
 
 
 
 
 
 
 
37
  ...pace\comic_klein_test.png: 100%|##########| 2.34MB / 2.34MB 
 
 
 
 
 
 
 
 
38
  ...ce\weiner_raw_contact.png: 100%|##########| 2.13MB / 2.13MB 
 
 
 
 
 
 
 
 
 
39
  ...g1\torso_link_rev_1_0.STL: 100%|##########| 2.57MB / 2.57MB 
 
 
 
 
 
 
 
 
 
 
40
  ...laxed_hands_rest_pose.npy: 100%|##########| 2.90kB / 2.90kB 
 
 
 
 
 
 
 
 
 
 
 
41
  ...rso_constraint_R_link.STL: 100%|##########| 204kB / 204kB 
 
 
42
  ...\right_hand_palm_link.STL: 100%|##########| 2.14MB / 2.14MB 
 
 
 
43
  ..._kmd_db1d3fe8af7846f5.png: 100%|##########| 146kB / 146kB 
 
 
 
 
44
  ...assets\unirig_citizen.glb: 100%|##########| 115kB / 115kB 
 
 
 
 
 
45
  ...ce\built_moves_verify.png: 100%|##########| 146kB / 146kB 
 
 
 
 
 
 
46
  ...e\wiener_session_crab.png: 100%|##########| 376kB / 376kB 
 
 
 
 
 
 
 
47
  ...pace\comic_klein_test.png: 100%|##########| 2.34MB / 2.34MB 
 
 
 
 
 
 
 
 
48
  ...ce\weiner_raw_contact.png: 100%|##########| 2.13MB / 2.13MB 
 
 
 
 
 
 
 
 
 
49
  ...g1\torso_link_rev_1_0.STL: 100%|##########| 2.57MB / 2.57MB 
 
 
 
 
 
 
 
 
 
 
50
  ...laxed_hands_rest_pose.npy: 100%|##########| 2.90kB / 2.90kB 
 
 
 
 
 
 
 
 
 
 
 
51
  [+ 75 files] : 100%|##########| 76.3MB / 76.3MB 
 
 
52
  ...ft_shoulder_roll_link.STL: 100%|##########| 400kB / 400kB 
 
 
 
53
  ...ght_shoulder_yaw_link.STL: 100%|##########| 250kB / 250kB 
 
 
 
 
54
  ...ght_hand_index_1_link.STL: 100%|##########| 1.52MB / 1.52MB 
 
 
 
 
 
55
  ...mic_base_vs_distilled.png: 100%|##########| 4.80MB / 4.80MB 
 
 
 
 
 
 
56
  ...\g1\left_hip_yaw_link.STL: 100%|##########| 296kB / 296kB 
 
 
 
 
 
 
 
57
  ...ht_hand_middle_1_link.STL: 100%|##########| 1.52MB / 1.52MB 
 
 
 
 
 
 
 
 
58
  ...choreo_stances_verify.png: 100%|##########| 150kB / 150kB 
 
 
 
 
 
 
 
 
 
59
  ...eft_shoulder_yaw_link.STL: 100%|##########| 249kB / 249kB 
 
 
 
 
 
 
 
 
 
 
60
  ...right_ankle_roll_link.STL: 100%|##########| 654kB / 654kB 
 
 
 
 
 
 
 
 
 
 
 
61
  [+ 75 files] : 100%|##########| 76.4MB / 76.4MB 
 
 
62
  ...ace\wiener_proto_card.png: 100%|##########| 466kB / 466kB 
 
 
 
63
  ...-space\box_klein_test.png: 100%|##########| 660kB / 660kB 
 
 
 
 
64
  ...keletons\smplx22\beta.npy: 100%|##########| 1.33kB / 1.33kB 
 
 
 
 
 
65
  ...space\comic_lora_test.png: 100%|##########| 3.16MB / 3.16MB 
 
 
 
 
 
 
66
  ...assets\default_scene.webp: 100%|##########| 231kB / 231kB 
 
 
 
 
 
 
 
67
  ...eft_hand_index_1_link.STL: 100%|##########| 1.52MB / 1.52MB 
 
 
 
 
 
 
 
 
68
  ...ata_reference_stances.png: 100%|##########| 228kB / 228kB 
 
 
 
 
 
 
 
 
 
69
  ...\left_wrist_roll_link.STL: 100%|##########| 356kB / 356kB 
 
 
 
 
 
 
 
 
 
 
70
  ...1\left_wrist_yaw_link.STL: 100%|##########| 319kB / 319kB 
 
 
 
 
 
 
 
 
 
 
 
71
  [+ 75 files] : 100%|##########| 79.3MB / 79.3MB 
 
 
72
  ...rist_roll_rubber_hand.STL: 100%|##########| 3.48MB / 3.48MB 
 
 
 
73
  ...t_shoulder_pitch_link.STL: 100%|##########| 177kB / 177kB 
 
 
 
 
74
  ...ft_hand_middle_0_link.STL: 100%|##########| 476kB / 476kB 
 
 
 
 
 
75
  ...assets\unirig_citizen.glb: 100%|##########| 115kB / 115kB 
 
 
 
 
 
 
76
  ...t_shoulder_pitch_link.STL: 100%|##########| 177kB / 177kB 
 
 
 
 
 
 
 
77
  ...g1\waist_constraint_L.STL: 100%|##########| 115kB / 115kB 
 
 
 
 
 
 
 
 
78
  ...ght_hand_thumb_2_link.STL: 100%|##########| 1.52MB / 1.52MB 
 
 
 
 
 
 
 
 
 
79
  ...eft_hand_thumb_1_link.STL: 100%|##########| 476kB / 476kB 
 
 
 
 
 
 
 
 
 
 
80
  ...ft_shoulder_roll_link.STL: 100%|##########| 400kB / 400kB 
 
 
 
 
 
 
 
 
 
 
 
81
  [+ 75 files] : 100%|##########| 79.3MB / 79.3MB 
 
 
82
  ...mic_base_vs_distilled.png: 100%|##########| 4.80MB / 4.80MB 
 
 
 
83
  ...eft_hand_thumb_2_link.STL: 100%|##########| 1.52MB / 1.52MB 
 
 
 
 
84
  ...ata_reference_stances.png: 100%|##########| 228kB / 228kB 
 
 
 
 
 
85
  ...s\g1\left_rubber_hand.STL: 100%|##########| 2.29MB / 2.29MB 
 
 
 
 
 
 
86
  ...ce\built_moves_verify.png: 100%|##########| 146kB / 146kB 
 
 
 
 
 
 
 
87
  ...1\left_wrist_yaw_link.STL: 100%|##########| 319kB / 319kB 
 
 
 
 
 
 
 
 
88
  ...el34\meshes\g1\pelvis.STL: 100%|##########| 1.06MB / 1.06MB 
 
 
 
 
 
 
 
 
 
89
  ...ht_hand_middle_0_link.STL: 100%|##########| 476kB / 476kB 
 
 
 
 
 
 
 
 
 
 
90
  ...ce\weiner_raw_contact.png: 100%|##########| 2.13MB / 2.13MB 
 
 
 
 
 
 
 
 
 
 
 
91
  [+ 75 files] : 100%|##########| 73.3MB / 73.3MB 
 
 
92
  ...mic_base_vs_distilled.png: 100%|##########| 4.80MB / 4.80MB
 
93
  ...eft_hand_thumb_2_link.STL: 100%|##########| 1.52MB / 1.52MB
 
94
  ...ata_reference_stances.png: 100%|##########| 228kB / 228kB
 
95
  ...s\g1\left_rubber_hand.STL: 100%|##########| 2.29MB / 2.29MB
 
96
  ...ce\built_moves_verify.png: 100%|##########| 146kB / 146kB
 
97
  ...1\left_wrist_yaw_link.STL: 100%|##########| 319kB / 319kB
 
98
  ...el34\meshes\g1\pelvis.STL: 100%|##########| 1.06MB / 1.06MB
 
99
  ...ht_hand_middle_0_link.STL: 100%|##########| 476kB / 476kB
 
100
  ...ce\weiner_raw_contact.png: 100%|##########| 2.13MB / 2.13MB
 
101
  [+ 75 files] : 100%|##########| 73.3MB / 73.3MB
 
1
+ dataset ready: build-small-hackathon/karate-wiener-animations
2
+
3
+
4
+
5
+
6
  ...\beanie_green_sausage.glb: 100%|##########| 1.21MB / 1.21MB 
7
+
8
+
9
  ...\beanie_green_sausage.glb: 100%|##########| 1.21MB / 1.21MB 
10
+
11
+
12
  ...\beanie_green_sausage.glb: 100%|##########| 1.21MB / 1.21MB 
13
+
14
+
15
  ...\beanie_green_sausage.glb: 100%|##########| 1.21MB / 1.21MB 
16
+
17
+
18
  ...\beanie_green_sausage.glb: 100%|##########| 1.21MB / 1.21MB 
19
+
20
+
21
  ...\beanie_green_sausage.glb: 100%|##########| 1.21MB / 1.21MB
22
+ No files have been modified since last commit. Skipping to prevent empty commit.
23
+ copied viewer/clothing/beanie_green_sausage.glb
24
+
25
+
26
+
27
+
28
  ...othing\kimono_sausage.glb: 100%|##########| 2.38MB / 2.38MB 
29
+
30
+
31
  ...othing\kimono_sausage.glb: 100%|##########| 2.38MB / 2.38MB 
32
+
33
+
34
  ...othing\kimono_sausage.glb: 100%|##########| 2.38MB / 2.38MB 
35
+
36
+
37
  ...othing\kimono_sausage.glb: 100%|##########| 2.38MB / 2.38MB 
38
+
39
+
40
  ...othing\kimono_sausage.glb: 100%|##########| 2.38MB / 2.38MB
41
+ No files have been modified since last commit. Skipping to prevent empty commit.
42
+ copied viewer/clothing/kimono_sausage.glb
43
+
44
+
45
+
46
+
47
  ...mono_trousers_sausage.glb: 100%|##########| 2.20MB / 2.20MB 
48
+
49
+
50
  ...mono_trousers_sausage.glb: 100%|##########| 2.20MB / 2.20MB 
51
+
52
+
53
  ...mono_trousers_sausage.glb: 100%|##########| 2.20MB / 2.20MB 
54
+
55
+
56
  ...mono_trousers_sausage.glb: 100%|##########| 2.20MB / 2.20MB 
57
+
58
+
59
  ...mono_trousers_sausage.glb: 100%|##########| 2.20MB / 2.20MB
60
+ No files have been modified since last commit. Skipping to prevent empty commit.
61
+ copied viewer/clothing/kimono_trousers_sausage.glb
62
+
63
+
64
+
65
+
66
  ...nerdy_glasses_sausage.glb: 100%|##########| 246kB / 246kB 
67
+
68
+
69
  ...nerdy_glasses_sausage.glb: 100%|##########| 246kB / 246kB 
70
+
71
+
72
  ...nerdy_glasses_sausage.glb: 100%|##########| 246kB / 246kB 
73
+
74
+
75
  ...nerdy_glasses_sausage.glb: 100%|##########| 246kB / 246kB 
76
+
77
+
78
  ...nerdy_glasses_sausage.glb: 100%|##########| 246kB / 246kB
79
+ No files have been modified since last commit. Skipping to prevent empty commit.
80
+ copied viewer/clothing/nerdy_glasses_sausage.glb
81
+
82
+
83
+
84
+
85
  ...ts\citizen_skin_color.png: 100%|##########| 1.26MB / 1.26MB 
86
+
87
+
88
  ...ts\citizen_skin_color.png: 100%|##########| 1.26MB / 1.26MB 
89
+
90
+
91
  ...ts\citizen_skin_color.png: 100%|##########| 1.26MB / 1.26MB 
92
+
93
+
94
  ...ts\citizen_skin_color.png: 100%|##########| 1.26MB / 1.26MB 
95
+
96
+
97
  ...ts\citizen_skin_color.png: 100%|##########| 1.26MB / 1.26MB
98
+ No files have been modified since last commit. Skipping to prevent empty commit.
99
+ uploaded viewer/textures/citizen_skin_color.png
100
+
101
+
102
+
103
+
104
  ...assets\unirig_citizen.glb: 100%|##########| 115kB / 115kB 
105
+
106
+
107
  ...assets\unirig_citizen.glb: 100%|##########| 115kB / 115kB 
108
+
109
+
110
  ...assets\unirig_citizen.glb: 100%|##########| 115kB / 115kB 
111
+
112
+
113
  ...assets\unirig_citizen.glb: 100%|##########| 115kB / 115kB 
114
+
115
+
116
  ...assets\unirig_citizen.glb: 100%|##########| 115kB / 115kB 
117
+
118
+
119
  ...assets\unirig_citizen.glb: 100%|##########| 115kB / 115kB
120
+ No files have been modified since last commit. Skipping to prevent empty commit.
121
+ It seems you are trying to upload a large folder at once. This might take some time and then fail if the folder is too large. For such cases, it is recommended to upload in smaller batches or to use `HfApi().upload_large_folder(...)`/`hf upload-large-folder` instead. For more details, check out https://huggingface.co/docs/huggingface_hub/main/en/guides/upload#upload-a-large-folder.
122
+ uploaded viewer/characters/unirig_citizen.glb
123
+ space created: build-small-hackathon/karate-wiener
124
+ variables + HF_TOKEN secret set
125
+
126
+
127
+
128
+
129
  ...\right_hand_palm_link.STL: 100%|##########| 2.14MB / 2.14MB 
130
+
131
+
132
+
133
  ..._kmd_db1d3fe8af7846f5.png: 100%|##########| 146kB / 146kB 
134
+
135
+
136
+
137
+
138
  ...assets\unirig_citizen.glb: 100%|##########| 115kB / 115kB 
139
+
140
+
141
+
142
+
143
+
144
  ...ce\built_moves_verify.png: 100%|##########| 146kB / 146kB 
145
+
146
+
147
+
148
+
149
+
150
+
151
  ...e\wiener_session_crab.png: 100%|##########| 376kB / 376kB 
152
+
153
+
154
+
155
+
156
+
157
+
158
+
159
  ...pace\comic_klein_test.png: 100%|##########| 2.34MB / 2.34MB 
160
+
161
+
162
+
163
+
164
+
165
+
166
+
167
+
168
  ...ce\weiner_raw_contact.png: 100%|##########| 2.13MB / 2.13MB 
169
+
170
+
171
+
172
+
173
+
174
+
175
+
176
+
177
+
178
  ...g1\torso_link_rev_1_0.STL: 100%|##########| 2.57MB / 2.57MB 
179
+
180
+
181
+
182
+
183
+
184
+
185
+
186
+
187
+
188
+
189
  ...laxed_hands_rest_pose.npy: 100%|##########| 2.90kB / 2.90kB 
190
+
191
+
192
+
193
+
194
+
195
+
196
+
197
+
198
+
199
+
200
+
201
  ...rso_constraint_R_link.STL: 100%|##########| 204kB / 204kB 
202
+
203
+
204
  ...\right_hand_palm_link.STL: 100%|##########| 2.14MB / 2.14MB 
205
+
206
+
207
+
208
  ..._kmd_db1d3fe8af7846f5.png: 100%|##########| 146kB / 146kB 
209
+
210
+
211
+
212
+
213
  ...assets\unirig_citizen.glb: 100%|##########| 115kB / 115kB 
214
+
215
+
216
+
217
+
218
+
219
  ...ce\built_moves_verify.png: 100%|##########| 146kB / 146kB 
220
+
221
+
222
+
223
+
224
+
225
+
226
  ...e\wiener_session_crab.png: 100%|##########| 376kB / 376kB 
227
+
228
+
229
+
230
+
231
+
232
+
233
+
234
  ...pace\comic_klein_test.png: 100%|##########| 2.34MB / 2.34MB 
235
+
236
+
237
+
238
+
239
+
240
+
241
+
242
+
243
  ...ce\weiner_raw_contact.png: 100%|##########| 2.13MB / 2.13MB 
244
+
245
+
246
+
247
+
248
+
249
+
250
+
251
+
252
+
253
  ...g1\torso_link_rev_1_0.STL: 100%|##########| 2.57MB / 2.57MB 
254
+
255
+
256
+
257
+
258
+
259
+
260
+
261
+
262
+
263
+
264
  ...laxed_hands_rest_pose.npy: 100%|##########| 2.90kB / 2.90kB 
265
+
266
+
267
+
268
+
269
+
270
+
271
+
272
+
273
+
274
+
275
+
276
  [+ 75 files] : 100%|##########| 76.3MB / 76.3MB 
277
+
278
+
279
  ...ft_shoulder_roll_link.STL: 100%|##########| 400kB / 400kB 
280
+
281
+
282
+
283
  ...ght_shoulder_yaw_link.STL: 100%|##########| 250kB / 250kB 
284
+
285
+
286
+
287
+
288
  ...ght_hand_index_1_link.STL: 100%|##########| 1.52MB / 1.52MB 
289
+
290
+
291
+
292
+
293
+
294
  ...mic_base_vs_distilled.png: 100%|##########| 4.80MB / 4.80MB 
295
+
296
+
297
+
298
+
299
+
300
+
301
  ...\g1\left_hip_yaw_link.STL: 100%|##########| 296kB / 296kB 
302
+
303
+
304
+
305
+
306
+
307
+
308
+
309
  ...ht_hand_middle_1_link.STL: 100%|##########| 1.52MB / 1.52MB 
310
+
311
+
312
+
313
+
314
+
315
+
316
+
317
+
318
  ...choreo_stances_verify.png: 100%|##########| 150kB / 150kB 
319
+
320
+
321
+
322
+
323
+
324
+
325
+
326
+
327
+
328
  ...eft_shoulder_yaw_link.STL: 100%|##########| 249kB / 249kB 
329
+
330
+
331
+
332
+
333
+
334
+
335
+
336
+
337
+
338
+
339
  ...right_ankle_roll_link.STL: 100%|##########| 654kB / 654kB 
340
+
341
+
342
+
343
+
344
+
345
+
346
+
347
+
348
+
349
+
350
+
351
  [+ 75 files] : 100%|##########| 76.4MB / 76.4MB 
352
+
353
+
354
  ...ace\wiener_proto_card.png: 100%|##########| 466kB / 466kB 
355
+
356
+
357
+
358
  ...-space\box_klein_test.png: 100%|##########| 660kB / 660kB 
359
+
360
+
361
+
362
+
363
  ...keletons\smplx22\beta.npy: 100%|##########| 1.33kB / 1.33kB 
364
+
365
+
366
+
367
+
368
+
369
  ...space\comic_lora_test.png: 100%|##########| 3.16MB / 3.16MB 
370
+
371
+
372
+
373
+
374
+
375
+
376
  ...assets\default_scene.webp: 100%|##########| 231kB / 231kB 
377
+
378
+
379
+
380
+
381
+
382
+
383
+
384
  ...eft_hand_index_1_link.STL: 100%|##########| 1.52MB / 1.52MB 
385
+
386
+
387
+
388
+
389
+
390
+
391
+
392
+
393
  ...ata_reference_stances.png: 100%|##########| 228kB / 228kB 
394
+
395
+
396
+
397
+
398
+
399
+
400
+
401
+
402
+
403
  ...\left_wrist_roll_link.STL: 100%|##########| 356kB / 356kB 
404
+
405
+
406
+
407
+
408
+
409
+
410
+
411
+
412
+
413
+
414
  ...1\left_wrist_yaw_link.STL: 100%|##########| 319kB / 319kB 
415
+
416
+
417
+
418
+
419
+
420
+
421
+
422
+
423
+
424
+
425
+
426
  [+ 75 files] : 100%|##########| 79.3MB / 79.3MB 
427
+
428
+
429
  ...rist_roll_rubber_hand.STL: 100%|##########| 3.48MB / 3.48MB 
430
+
431
+
432
+
433
  ...t_shoulder_pitch_link.STL: 100%|##########| 177kB / 177kB 
434
+
435
+
436
+
437
+
438
  ...ft_hand_middle_0_link.STL: 100%|##########| 476kB / 476kB 
439
+
440
+
441
+
442
+
443
+
444
  ...assets\unirig_citizen.glb: 100%|##########| 115kB / 115kB 
445
+
446
+
447
+
448
+
449
+
450
+
451
  ...t_shoulder_pitch_link.STL: 100%|##########| 177kB / 177kB 
452
+
453
+
454
+
455
+
456
+
457
+
458
+
459
  ...g1\waist_constraint_L.STL: 100%|##########| 115kB / 115kB 
460
+
461
+
462
+
463
+
464
+
465
+
466
+
467
+
468
  ...ght_hand_thumb_2_link.STL: 100%|##########| 1.52MB / 1.52MB 
469
+
470
+
471
+
472
+
473
+
474
+
475
+
476
+
477
+
478
  ...eft_hand_thumb_1_link.STL: 100%|##########| 476kB / 476kB 
479
+
480
+
481
+
482
+
483
+
484
+
485
+
486
+
487
+
488
+
489
  ...ft_shoulder_roll_link.STL: 100%|##########| 400kB / 400kB 
490
+
491
+
492
+
493
+
494
+
495
+
496
+
497
+
498
+
499
+
500
+
501
  [+ 75 files] : 100%|##########| 79.3MB / 79.3MB 
502
+
503
+
504
  ...mic_base_vs_distilled.png: 100%|##########| 4.80MB / 4.80MB 
505
+
506
+
507
+
508
  ...eft_hand_thumb_2_link.STL: 100%|##########| 1.52MB / 1.52MB 
509
+
510
+
511
+
512
+
513
  ...ata_reference_stances.png: 100%|##########| 228kB / 228kB 
514
+
515
+
516
+
517
+
518
+
519
  ...s\g1\left_rubber_hand.STL: 100%|##########| 2.29MB / 2.29MB 
520
+
521
+
522
+
523
+
524
+
525
+
526
  ...ce\built_moves_verify.png: 100%|##########| 146kB / 146kB 
527
+
528
+
529
+
530
+
531
+
532
+
533
+
534
  ...1\left_wrist_yaw_link.STL: 100%|##########| 319kB / 319kB 
535
+
536
+
537
+
538
+
539
+
540
+
541
+
542
+
543
  ...el34\meshes\g1\pelvis.STL: 100%|##########| 1.06MB / 1.06MB 
544
+
545
+
546
+
547
+
548
+
549
+
550
+
551
+
552
+
553
  ...ht_hand_middle_0_link.STL: 100%|##########| 476kB / 476kB 
554
+
555
+
556
+
557
+
558
+
559
+
560
+
561
+
562
+
563
+
564
  ...ce\weiner_raw_contact.png: 100%|##########| 2.13MB / 2.13MB 
565
+
566
+
567
+
568
+
569
+
570
+
571
+
572
+
573
+
574
+
575
+
576
  [+ 75 files] : 100%|##########| 73.3MB / 73.3MB 
577
+
578
+
579
  ...mic_base_vs_distilled.png: 100%|##########| 4.80MB / 4.80MB
580
+
581
  ...eft_hand_thumb_2_link.STL: 100%|##########| 1.52MB / 1.52MB
582
+
583
  ...ata_reference_stances.png: 100%|##########| 228kB / 228kB
584
+
585
  ...s\g1\left_rubber_hand.STL: 100%|##########| 2.29MB / 2.29MB
586
+
587
  ...ce\built_moves_verify.png: 100%|##########| 146kB / 146kB
588
+
589
  ...1\left_wrist_yaw_link.STL: 100%|##########| 319kB / 319kB
590
+
591
  ...el34\meshes\g1\pelvis.STL: 100%|##########| 1.06MB / 1.06MB
592
+
593
  ...ht_hand_middle_0_link.STL: 100%|##########| 476kB / 476kB
594
+
595
  ...ce\weiner_raw_contact.png: 100%|##########| 2.13MB / 2.13MB
596
+
597
  [+ 75 files] : 100%|##########| 73.3MB / 73.3MB