Mariam-Elz commited on
Commit
7b5c5ef
·
verified ·
1 Parent(s): d25dd1e

Upload util/renderer.py with huggingface_hub

Browse files
Files changed (1) hide show
  1. util/renderer.py +48 -48
util/renderer.py CHANGED
@@ -1,49 +1,49 @@
1
-
2
- import torch
3
- import torch.nn as nn
4
- import nvdiffrast.torch as dr
5
- from util.flexicubes_geometry import FlexiCubesGeometry
6
-
7
- class Renderer(nn.Module):
8
- def __init__(self, tet_grid_size, camera_angle_num, scale, geo_type):
9
- super().__init__()
10
-
11
- self.tet_grid_size = tet_grid_size
12
- self.camera_angle_num = camera_angle_num
13
- self.scale = scale
14
- self.geo_type = geo_type
15
- # self.glctx = dr.RasterizeCudaContext()
16
-
17
- if self.geo_type == "flex":
18
- self.flexicubes = FlexiCubesGeometry(grid_res = self.tet_grid_size)
19
-
20
- def forward(self, data, sdf, deform, verts, tets, training=False, weight = None):
21
-
22
- results = {}
23
-
24
- deform = torch.tanh(deform) / self.tet_grid_size * self.scale / 0.95
25
- if self.geo_type == "flex":
26
- deform = deform *0.5
27
-
28
- v_deformed = verts + deform
29
-
30
- verts_list = []
31
- faces_list = []
32
- reg_list = []
33
- n_shape = verts.shape[0]
34
- for i in range(n_shape):
35
- verts_i, faces_i, reg_i = self.flexicubes.get_mesh(v_deformed[i], sdf[i].squeeze(dim=-1),
36
- with_uv=False, indices=tets, weight_n=weight[i], is_training=training)
37
-
38
- verts_list.append(verts_i)
39
- faces_list.append(faces_i)
40
- reg_list.append(reg_i)
41
- verts = verts_list
42
- faces = faces_list
43
-
44
- flexicubes_surface_reg = torch.cat(reg_list).mean()
45
- flexicubes_weight_reg = (weight ** 2).mean()
46
- results["flex_surf_loss"] = flexicubes_surface_reg
47
- results["flex_weight_loss"] = flexicubes_weight_reg
48
-
49
  return results, verts, faces
 
1
+
2
+ import torch
3
+ import torch.nn as nn
4
+ import nvdiffrast.torch as dr
5
+ from util.flexicubes_geometry import FlexiCubesGeometry
6
+
7
+ class Renderer(nn.Module):
8
+ def __init__(self, tet_grid_size, camera_angle_num, scale, geo_type):
9
+ super().__init__()
10
+
11
+ self.tet_grid_size = tet_grid_size
12
+ self.camera_angle_num = camera_angle_num
13
+ self.scale = scale
14
+ self.geo_type = geo_type
15
+ self.glctx = dr.RasterizeCudaContext()
16
+
17
+ if self.geo_type == "flex":
18
+ self.flexicubes = FlexiCubesGeometry(grid_res = self.tet_grid_size)
19
+
20
+ def forward(self, data, sdf, deform, verts, tets, training=False, weight = None):
21
+
22
+ results = {}
23
+
24
+ deform = torch.tanh(deform) / self.tet_grid_size * self.scale / 0.95
25
+ if self.geo_type == "flex":
26
+ deform = deform *0.5
27
+
28
+ v_deformed = verts + deform
29
+
30
+ verts_list = []
31
+ faces_list = []
32
+ reg_list = []
33
+ n_shape = verts.shape[0]
34
+ for i in range(n_shape):
35
+ verts_i, faces_i, reg_i = self.flexicubes.get_mesh(v_deformed[i], sdf[i].squeeze(dim=-1),
36
+ with_uv=False, indices=tets, weight_n=weight[i], is_training=training)
37
+
38
+ verts_list.append(verts_i)
39
+ faces_list.append(faces_i)
40
+ reg_list.append(reg_i)
41
+ verts = verts_list
42
+ faces = faces_list
43
+
44
+ flexicubes_surface_reg = torch.cat(reg_list).mean()
45
+ flexicubes_weight_reg = (weight ** 2).mean()
46
+ results["flex_surf_loss"] = flexicubes_surface_reg
47
+ results["flex_weight_loss"] = flexicubes_weight_reg
48
+
49
  return results, verts, faces