MeYourHint commited on
Commit
afec801
·
1 Parent(s): fcc3e8d

Download bvh

Browse files
Files changed (1) hide show
  1. app.py +16 -9
app.py CHANGED
@@ -104,7 +104,7 @@ CSS = """
104
  border-color: #000000;
105
  border-radius: var(--block-radius);
106
  background: var(--block-background-fill);
107
- width: 100%;
108
  line-height: var(--line-sm);
109
  }
110
  }
@@ -172,7 +172,9 @@ def inv_transform(data):
172
  kinematic_chain = t2m_kinematic_chain
173
  converter = Joint2BVHConvertor()
174
  cached_dir = './cached'
175
- os.makedirs(cached_dir, exist_ok=True)
 
 
176
 
177
  @torch.no_grad()
178
  def generate(
@@ -213,20 +215,20 @@ def generate(
213
  pred_motions = pred_motions.detach().cpu().numpy()
214
  data = inv_transform(pred_motions)
215
  for k, (caption, joint_data) in enumerate(zip(captions, data)):
216
- animation_path = pjoin(cached_dir, f'{uid}', str(k))
217
  os.makedirs(animation_path, exist_ok=True)
218
  joint_data = joint_data[:m_length[k]]
219
  joint = recover_from_ric(torch.from_numpy(joint_data).float(), 22).numpy()
220
- bvh_path = pjoin(animation_path, "sample%d_repeat%d_len%d.bvh" % (k, r, m_length[k]))
221
- save_path = pjoin(animation_path, "sample%d_repeat%d_len%d.mp4"%(k, r, m_length[k]))
222
  if use_ik:
223
  _, joint = converter.convert(joint, filename=bvh_path, iterations=100)
224
  else:
225
  _, joint = converter.convert(joint, filename=bvh_path, iterations=100, foot_ik=False)
226
  plot_3d_motion(save_path, kinematic_chain, joint, title=caption, fps=20)
227
- np.save(pjoin(animation_path, "sample%d_repeat%d_len%d.npy"%(k, r, m_length[k])), joint)
228
  data_unit = {
229
- "url": pjoin(animation_path, "sample%d_repeat%d_len%d.mp4"%(0, r, m_length[0]))
230
  }
231
  datas.append(data_unit)
232
 
@@ -248,11 +250,10 @@ autoplay loop disablepictureinpicture id="{video_id}">
248
  """
249
  return video_html
250
 
251
-
252
  def generate_component(generate_function, text, motion_len='0', postprocess='IK'):
253
  if text == DEFAULT_TEXT or text == "" or text is None:
254
  return [None for _ in range(1)]
255
- uid = random.randrange(99999)
256
  try:
257
  motion_len = max(0, min(int(float(motion_len) * 20), 196))
258
  except:
@@ -294,6 +295,12 @@ with gr.Blocks(css=CSS, theme=theme) as demo:
294
  value="IK",
295
  info="Use basic inverse kinematic (IK) for foot contact locking",
296
  )
 
 
 
 
 
 
297
  gen_btn = gr.Button("Generate", variant="primary")
298
  clear = gr.Button("Clear", variant="secondary")
299
 
 
104
  border-color: #000000;
105
  border-radius: var(--block-radius);
106
  background: var(--block-background-fill);
107
+ width: 25%;
108
  line-height: var(--line-sm);
109
  }
110
  }
 
172
  kinematic_chain = t2m_kinematic_chain
173
  converter = Joint2BVHConvertor()
174
  cached_dir = './cached'
175
+ uid = 12138
176
+ animation_path = pjoin(cached_dir, f'{uid}')
177
+ os.makedirs(animation_path, exist_ok=True)
178
 
179
  @torch.no_grad()
180
  def generate(
 
215
  pred_motions = pred_motions.detach().cpu().numpy()
216
  data = inv_transform(pred_motions)
217
  for k, (caption, joint_data) in enumerate(zip(captions, data)):
218
+ animation_path = pjoin(cached_dir, f'{uid}')
219
  os.makedirs(animation_path, exist_ok=True)
220
  joint_data = joint_data[:m_length[k]]
221
  joint = recover_from_ric(torch.from_numpy(joint_data).float(), 22).numpy()
222
+ bvh_path = pjoin(animation_path, "sample_repeat%d.bvh" % (r))
223
+ save_path = pjoin(animation_path, "sample_repeat%d.mp4"%(r))
224
  if use_ik:
225
  _, joint = converter.convert(joint, filename=bvh_path, iterations=100)
226
  else:
227
  _, joint = converter.convert(joint, filename=bvh_path, iterations=100, foot_ik=False)
228
  plot_3d_motion(save_path, kinematic_chain, joint, title=caption, fps=20)
229
+ np.save(pjoin(animation_path, "sample_repeat%d.npy"%(r)), joint)
230
  data_unit = {
231
+ "url": pjoin(animation_path, "sample_repeat%d.mp4"%(r))
232
  }
233
  datas.append(data_unit)
234
 
 
250
  """
251
  return video_html
252
 
 
253
  def generate_component(generate_function, text, motion_len='0', postprocess='IK'):
254
  if text == DEFAULT_TEXT or text == "" or text is None:
255
  return [None for _ in range(1)]
256
+ # uid = random.randrange(99999)
257
  try:
258
  motion_len = max(0, min(int(float(motion_len) * 20), 196))
259
  except:
 
295
  value="IK",
296
  info="Use basic inverse kinematic (IK) for foot contact locking",
297
  )
298
+ with gr.Column(scale=1):
299
+ gr.Markdown(
300
+ f"""
301
+ <a href="{pjoin(animation_path, "sample_repeat0.bvh")}" download="sample.bvh"><b>click to download</b></a>
302
+ """
303
+ )
304
  gen_btn = gr.Button("Generate", variant="primary")
305
  clear = gr.Button("Clear", variant="secondary")
306