Spaces:
Running
on
Zero
Running
on
Zero
Update app.py
Browse files
app.py
CHANGED
@@ -169,8 +169,6 @@ def run_triposg(image_path: str,
|
|
169 |
if mesh is None:
|
170 |
outputs[i] = trimesh.Trimesh(vertices=[[0,0,0]], faces=[[0,0,0]])
|
171 |
|
172 |
-
# Merge and color
|
173 |
-
merged = get_colored_mesh_composition(outputs)
|
174 |
|
175 |
export_dir = os.path.join(os.environ["PARTCRAFTER_PROCESSED"], session_id)
|
176 |
os.makedirs(export_dir, exist_ok=True)
|
@@ -181,13 +179,23 @@ def run_triposg(image_path: str,
|
|
181 |
part = os.path.join(export_dir, f"part_{idx:02}.glb")
|
182 |
mesh.export(part)
|
183 |
parts.append(part)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
184 |
|
185 |
glb_path = os.path.join(export_dir, "object.glb")
|
186 |
merged.export(glb_path)
|
187 |
|
188 |
mesh_file = first_file_from_dir(export_dir, "glb")
|
189 |
|
190 |
-
return mesh_file, export_dir
|
191 |
|
192 |
def cleanup(request: gr.Request):
|
193 |
|
@@ -254,6 +262,7 @@ def build_demo():
|
|
254 |
)
|
255 |
output_model = gr.Model3D(label="Merged 3D Object")
|
256 |
output_dir = gr.Textbox(label="Export Directory", visible=False)
|
|
|
257 |
examples = gr.Examples(
|
258 |
|
259 |
examples=[
|
@@ -262,8 +271,8 @@ def build_demo():
|
|
262 |
5,
|
263 |
],
|
264 |
[
|
265 |
-
"assets/images/
|
266 |
-
|
267 |
],
|
268 |
[
|
269 |
"assets/images/np4_7bd5d25aa77b4fb18e780d7a4c97d342.png",
|
@@ -271,7 +280,7 @@ def build_demo():
|
|
271 |
],
|
272 |
],
|
273 |
inputs=[input_image, num_parts],
|
274 |
-
outputs=[output_model, output_dir],
|
275 |
fn=run_triposg,
|
276 |
cache_examples=True,
|
277 |
)
|
@@ -279,7 +288,7 @@ def build_demo():
|
|
279 |
run_button.click(fn=run_triposg,
|
280 |
inputs=[input_image, num_parts, seed, num_tokens, num_steps,
|
281 |
guidance, flash_decoder, remove_bg, session_state],
|
282 |
-
outputs=[output_model, output_dir])
|
283 |
return demo
|
284 |
|
285 |
if __name__ == "__main__":
|
|
|
169 |
if mesh is None:
|
170 |
outputs[i] = trimesh.Trimesh(vertices=[[0,0,0]], faces=[[0,0,0]])
|
171 |
|
|
|
|
|
172 |
|
173 |
export_dir = os.path.join(os.environ["PARTCRAFTER_PROCESSED"], session_id)
|
174 |
os.makedirs(export_dir, exist_ok=True)
|
|
|
179 |
part = os.path.join(export_dir, f"part_{idx:02}.glb")
|
180 |
mesh.export(part)
|
181 |
parts.append(part)
|
182 |
+
|
183 |
+
zip_path = os.path.join(os.environ["PARTCRAFTER_PROCESSED"], f"{session_id}.zip")
|
184 |
+
|
185 |
+
# shutil.make_archive wants the base name without extension:
|
186 |
+
base_name = zip_path[:-4] # strip off '.zip'
|
187 |
+
shutil.make_archive(base_name, 'zip', export_dir)
|
188 |
+
|
189 |
+
# Merge and color
|
190 |
+
merged = get_colored_mesh_composition(outputs)
|
191 |
+
|
192 |
|
193 |
glb_path = os.path.join(export_dir, "object.glb")
|
194 |
merged.export(glb_path)
|
195 |
|
196 |
mesh_file = first_file_from_dir(export_dir, "glb")
|
197 |
|
198 |
+
return mesh_file, export_dir, zip_path
|
199 |
|
200 |
def cleanup(request: gr.Request):
|
201 |
|
|
|
262 |
)
|
263 |
output_model = gr.Model3D(label="Merged 3D Object")
|
264 |
output_dir = gr.Textbox(label="Export Directory", visible=False)
|
265 |
+
download_zip = gr.File(label="Download All Parts (zip)")
|
266 |
examples = gr.Examples(
|
267 |
|
268 |
examples=[
|
|
|
271 |
5,
|
272 |
],
|
273 |
[
|
274 |
+
"assets/images/np7_1c004909dedb4ebe8db69b4d7b077434.png",
|
275 |
+
7,
|
276 |
],
|
277 |
[
|
278 |
"assets/images/np4_7bd5d25aa77b4fb18e780d7a4c97d342.png",
|
|
|
280 |
],
|
281 |
],
|
282 |
inputs=[input_image, num_parts],
|
283 |
+
outputs=[output_model, output_dir, download_zip],
|
284 |
fn=run_triposg,
|
285 |
cache_examples=True,
|
286 |
)
|
|
|
288 |
run_button.click(fn=run_triposg,
|
289 |
inputs=[input_image, num_parts, seed, num_tokens, num_steps,
|
290 |
guidance, flash_decoder, remove_bg, session_state],
|
291 |
+
outputs=[output_model, output_dir, download_zip])
|
292 |
return demo
|
293 |
|
294 |
if __name__ == "__main__":
|