Skip to content

Commit

Permalink
Fix visualize_sdf
Browse files Browse the repository at this point in the history
  • Loading branch information
wang-ps committed Apr 5, 2022
1 parent 1f64fcf commit 4412974
Show file tree
Hide file tree
Showing 4 changed files with 16 additions and 28 deletions.
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
.vscode
build
dist
data
__pycache__
*.obj
*.egg-info
*.pyd
*.pyd
*.npy
File renamed without changes.
5 changes: 4 additions & 1 deletion example/test.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
import os
import trimesh
import mesh2sdf
import numpy as np
import skimage.measure

filename = os.path.join(os.path.dirname(__file__), 'plane.obj')

filename = os.path.join(os.path.dirname(__file__), 'data', 'plane.obj')
mesh = trimesh.load(filename, force='mesh')

vertices = mesh.vertices
Expand All @@ -21,3 +23,4 @@
v = v / scale + center
mesh = trimesh.Trimesh(vertices=v, faces=f)
mesh.export(filename[:-4] + '.fixed.obj')
np.save(filename[:-4] + '.npy', sdf)
35 changes: 9 additions & 26 deletions example/visualize_sdf.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,44 +6,27 @@

parser = argparse.ArgumentParser()
parser.add_argument('--filename', type=str, required=True)
parser.add_argument('--rescale', type=str, required=False, default='false')
args = parser.parse_args()

filename = args.filename
rescale = args.rescale.lower() == 'true'
levels = [-0.02, 0.0, 0.02]

# levels = [-0.2, -0.1, -0.05, -0.02, -0.01, 0.0, 0.01, 0.02, 0.05, 0.1, 0.2]
levels = [-0.01, 0.0, 0.01]


# marching cube
sdf = np.load(filename)
# sdf = sdf[::2, ::2, ::2]
size = sdf.shape[0]
if rescale:
# sdf = (1- sdf) * 2 - 1 # !!! rescale SDF
sdf = sdf * 2 - 1 # !!! rescale SDF

print(sdf.max(), sdf.min())

# extract level sets
for i, level in enumerate(levels):
vtx, faces, _, _ = skimage.measure.marching_cubes_lewiner(sdf, level)
vtx, faces, _, _ = skimage.measure.marching_cubes(sdf, level)

## save to ply
vtx = vtx * (2.0 / size) - 1.0
mesh = trimesh.Trimesh(vtx, faces)
mesh.export(filename[:-3] + 'l%.2f.obj' % level)

# mesh = o3d.geometry.TriangleMesh()
# mesh.vertices = o3d.utility.Vector3dVector(vtx)
# mesh.triangles = o3d.utility.Vector3iVector(faces)
# plyname = filename[:-4] + '_%02d_l%0.2f.ply' % (i, level)
# o3d.io.write_triangle_mesh(plyname, mesh)


## draw image
# draw image
for i in range(size):
array_2d = sdf[i,:,:]
array_2d = sdf[:, :, i]

num_levels = 6
fig, ax = plt.subplots(figsize=(2.75, 2.75), dpi=300)
Expand All @@ -52,12 +35,12 @@
levels = np.concatenate((levels_neg, np.zeros((0)), levels_pos), axis=0)
colors = plt.get_cmap("Spectral")(np.linspace(0., 1., num=num_levels*2+1))

sample = np.flipud(array_2d)
sample = array_2d
# sample = np.flipud(array_2d)
CS = ax.contourf(sample, levels=levels, colors=colors)
# cbar = fig.colorbar(CS)

ax.contour(sample, levels=levels, colors='k', linewidths=0.1)
ax.contour(sample, levels=[0], colors='k', linewidths=0.3)
ax.axis('off')
plt.savefig(filename + '.z.%03d.png' % i)
# plt.show()
plt.savefig(filename[:-4] + '.%03d.png' % i)
# plt.show()

0 comments on commit 4412974

Please sign in to comment.