Spaces:
Sleeping
Sleeping
Upload 40 files
Browse files- requirements.txt +1 -1
- tsr/models/isosurface.py +3 -5
requirements.txt
CHANGED
|
@@ -1,7 +1,7 @@
|
|
| 1 |
omegaconf==2.3.0
|
| 2 |
Pillow==10.1.0
|
| 3 |
einops==0.7.0
|
| 4 |
-
|
| 5 |
transformers==4.35.0
|
| 6 |
trimesh==4.0.5
|
| 7 |
onnxruntime
|
|
|
|
| 1 |
omegaconf==2.3.0
|
| 2 |
Pillow==10.1.0
|
| 3 |
einops==0.7.0
|
| 4 |
+
git+https://github.com/cocktailpeanut/torchmcubes.git
|
| 5 |
transformers==4.35.0
|
| 6 |
trimesh==4.0.5
|
| 7 |
onnxruntime
|
tsr/models/isosurface.py
CHANGED
|
@@ -3,7 +3,7 @@ from typing import Callable, Optional, Tuple
|
|
| 3 |
import numpy as np
|
| 4 |
import torch
|
| 5 |
import torch.nn as nn
|
| 6 |
-
from
|
| 7 |
|
| 8 |
|
| 9 |
class IsosurfaceHelper(nn.Module):
|
|
@@ -18,6 +18,7 @@ class MarchingCubeHelper(IsosurfaceHelper):
|
|
| 18 |
def __init__(self, resolution: int) -> None:
|
| 19 |
super().__init__()
|
| 20 |
self.resolution = resolution
|
|
|
|
| 21 |
self._grid_vertices: Optional[torch.FloatTensor] = None
|
| 22 |
|
| 23 |
@property
|
|
@@ -40,10 +41,7 @@ class MarchingCubeHelper(IsosurfaceHelper):
|
|
| 40 |
level: torch.FloatTensor,
|
| 41 |
) -> Tuple[torch.FloatTensor, torch.LongTensor]:
|
| 42 |
level = -level.view(self.resolution, self.resolution, self.resolution)
|
| 43 |
-
|
| 44 |
-
v_pos_np, t_pos_idx_np, _, _ = measure.marching_cubes(level_np, level=0.0)
|
| 45 |
-
v_pos = torch.from_numpy(v_pos_np.astype(np.float32)).to(level.device)
|
| 46 |
-
t_pos_idx = torch.from_numpy(t_pos_idx_np.astype(np.int64)).to(level.device)
|
| 47 |
v_pos = v_pos[..., [2, 1, 0]]
|
| 48 |
v_pos = v_pos / (self.resolution - 1.0)
|
| 49 |
return v_pos, t_pos_idx
|
|
|
|
| 3 |
import numpy as np
|
| 4 |
import torch
|
| 5 |
import torch.nn as nn
|
| 6 |
+
from torchmcubes import marching_cubes
|
| 7 |
|
| 8 |
|
| 9 |
class IsosurfaceHelper(nn.Module):
|
|
|
|
| 18 |
def __init__(self, resolution: int) -> None:
|
| 19 |
super().__init__()
|
| 20 |
self.resolution = resolution
|
| 21 |
+
self.mc_func: Callable = marching_cubes
|
| 22 |
self._grid_vertices: Optional[torch.FloatTensor] = None
|
| 23 |
|
| 24 |
@property
|
|
|
|
| 41 |
level: torch.FloatTensor,
|
| 42 |
) -> Tuple[torch.FloatTensor, torch.LongTensor]:
|
| 43 |
level = -level.view(self.resolution, self.resolution, self.resolution)
|
| 44 |
+
v_pos, t_pos_idx = self.mc_func(level.detach(), 0.0)
|
|
|
|
|
|
|
|
|
|
| 45 |
v_pos = v_pos[..., [2, 1, 0]]
|
| 46 |
v_pos = v_pos / (self.resolution - 1.0)
|
| 47 |
return v_pos, t_pos_idx
|