finished pass over all tutorials

Former-commit-id: 0bef47c705
This commit is contained in:
Daniele Panozzo
2018-02-14 16:27:58 -04:00
parent 53ee86a4ab
commit 78ea6f9efe
10 changed files with 115 additions and 115 deletions
+8 -8
View File
@@ -25,13 +25,13 @@ V_uv = igl.eigen.MatrixXd()
def key_down(viewer, key, modifier):
if key == ord('1'):
# Plot the 3D mesh
viewer.data.set_mesh(V, F)
viewer.data().set_mesh(V, F)
viewer.core.align_camera_center(V, F)
elif key == ord('2'):
# Plot the mesh in 2D using the UV coordinates as vertex coordinates
viewer.data.set_mesh(V_uv, F)
viewer.data().set_mesh(V_uv, F)
viewer.core.align_camera_center(V_uv, F)
viewer.data.compute_normals()
viewer.data().compute_normals()
return False
@@ -54,16 +54,16 @@ igl.lscm(V, F, b, bc, V_uv)
V_uv *= 5
# Plot the mesh
viewer = igl.viewer.Viewer()
viewer.data.set_mesh(V, F)
viewer.data.set_uv(V_uv)
viewer = igl.glfw.Viewer()
viewer.data().set_mesh(V, F)
viewer.data().set_uv(V_uv)
viewer.callback_key_down = key_down
# Disable wireframe
viewer.core.show_lines = False
viewer.data().show_lines = False
# Draw checkerboard texture
viewer.core.show_texture = True
viewer.data().show_texture = True
# Launch the viewer
viewer.launch()
+8 -8
View File
@@ -35,13 +35,13 @@ def key_down(viewer, key, modifier):
V_uv = initial_guess
if show_uv:
viewer.data.set_mesh(V_uv, F)
viewer.data().set_mesh(V_uv, F)
viewer.core.align_camera_center(V_uv, F)
else:
viewer.data.set_mesh(V, F)
viewer.data().set_mesh(V, F)
viewer.core.align_camera_center(V, F)
viewer.data.compute_normals()
viewer.data().compute_normals()
return False
@@ -77,16 +77,16 @@ igl.arap_solve(bc, arap_data, V_uv)
V_uv *= 20
# Plot the mesh
viewer = igl.viewer.Viewer()
viewer.data.set_mesh(V, F)
viewer.data.set_uv(V_uv)
viewer = igl.glfw.Viewer()
viewer.data().set_mesh(V, F)
viewer.data().set_uv(V_uv)
viewer.callback_key_down = key_down
# Disable wireframe
viewer.core.show_lines = False
viewer.data().show_lines = False
# Draw checkerboard texture
viewer.core.show_texture = True
viewer.data().show_texture = True
# Launch the viewer
viewer.launch()
+11 -11
View File
@@ -14,7 +14,7 @@ import pyigl as igl
from shared import TUTORIAL_SHARED_PATH, check_dependencies
dependencies = ["comiso", "viewer"]
dependencies = ["comiso", "glfw"]
check_dependencies(dependencies)
@@ -59,8 +59,8 @@ def representative_to_nrosy(V, F, R, N, Y):
# The constrained faces (b) are colored in red.
def plot_mesh_nrosy(viewer, V, F, N, PD1, S, b):
# Clear the mesh
viewer.data.clear()
viewer.data.set_mesh(V, F)
viewer.data().clear()
viewer.data().set_mesh(V, F)
# Expand the representative vectors in the full vector set and plot them as lines
avg = igl.avg_edge_length(V, F)
@@ -75,20 +75,20 @@ def plot_mesh_nrosy(viewer, V, F, N, PD1, S, b):
for j in range(0, N):
Be.setRow(i * N + j, B.row(i))
viewer.data.add_edges(Be, Be + Y * (avg / 2), igl.eigen.MatrixXd([[0, 0, 1]]))
viewer.data().add_edges(Be, Be + Y * (avg / 2), igl.eigen.MatrixXd([[0, 0, 1]]))
# Plot the singularities as colored dots (red for negative, blue for positive)
for i in range(0, S.size()):
if S[i] < -0.001:
viewer.data.add_points(V.row(i), igl.eigen.MatrixXd([[1, 0, 0]]))
viewer.data().add_points(V.row(i), igl.eigen.MatrixXd([[1, 0, 0]]))
elif S[i] > 0.001:
viewer.data.add_points(V.row(i), igl.eigen.MatrixXd([[0, 1, 0]]));
viewer.data().add_points(V.row(i), igl.eigen.MatrixXd([[0, 1, 0]]));
# Highlight in red the constrained faces
C = igl.eigen.MatrixXd.Constant(F.rows(), 3, 1)
for i in range(0, b.size()):
C.setRow(b[i], igl.eigen.MatrixXd([[1, 0, 0]]))
viewer.data.set_colors(C)
viewer.data().set_colors(C)
# It allows to change the degree of the field when a number is pressed
@@ -110,20 +110,20 @@ def key_down(viewer, key, modifier):
igl.readOFF(TUTORIAL_SHARED_PATH + "bumpy.off", V, F)
# Threshold faces with high anisotropy
b = igl.eigen.MatrixXi([[0]])
b = igl.eigen.MatrixXd([[0]]).castint()
bc = igl.eigen.MatrixXd([[1, 1, 1]])
viewer = igl.viewer.Viewer()
viewer = igl.glfw.Viewer()
# Interpolate the field and plot
key_down(viewer, ord('4'), 0)
# Plot the mesh
viewer.data.set_mesh(V, F)
viewer.data().set_mesh(V, F)
viewer.callback_key_down = key_down
# Disable wireframe
viewer.core.show_lines = False
viewer.data().show_lines = False
# Launch the viewer
viewer.launch()
+37 -37
View File
@@ -14,7 +14,7 @@ import pyigl as igl
from shared import TUTORIAL_SHARED_PATH, check_dependencies
dependencies = ["comiso", "viewer"]
dependencies = ["comiso", "glfw"]
check_dependencies(dependencies)
@@ -97,37 +97,37 @@ def key_down(viewer, key, modifier):
if key < ord('1') or key > ord('8'):
return False
viewer.data.clear()
viewer.core.show_lines = False
viewer.core.show_texture = False
viewer.data().clear()
viewer.data().show_lines = False
viewer.data().show_texture = False
if key == ord('1'):
# Cross field
viewer.data.set_mesh(V, F)
viewer.data.add_edges(B - global_scale * X1 if extend_arrows else B, B + global_scale * X1,
viewer.data().set_mesh(V, F)
viewer.data().add_edges(B - global_scale * X1 if extend_arrows else B, B + global_scale * X1,
igl.eigen.MatrixXd([[1, 0, 0]]))
viewer.data.add_edges(B - global_scale * X2 if extend_arrows else B, B + global_scale * X2,
viewer.data().add_edges(B - global_scale * X2 if extend_arrows else B, B + global_scale * X2,
igl.eigen.MatrixXd([[0, 0, 1]]))
if key == ord('2'):
# Bisector field
viewer.data.set_mesh(V, F)
viewer.data.add_edges(B - global_scale * BIS1 if extend_arrows else B, B + global_scale * BIS1,
viewer.data().set_mesh(V, F)
viewer.data().add_edges(B - global_scale * BIS1 if extend_arrows else B, B + global_scale * BIS1,
igl.eigen.MatrixXd([[1, 0, 0]]))
viewer.data.add_edges(B - global_scale * BIS2 if extend_arrows else B, B + global_scale * BIS2,
viewer.data().add_edges(B - global_scale * BIS2 if extend_arrows else B, B + global_scale * BIS2,
igl.eigen.MatrixXd([[0, 0, 1]]))
if key == ord('3'):
# Bisector field combed
viewer.data.set_mesh(V, F)
viewer.data.add_edges(B - global_scale * BIS1_combed if extend_arrows else B, B + global_scale * BIS1_combed,
viewer.data().set_mesh(V, F)
viewer.data().add_edges(B - global_scale * BIS1_combed if extend_arrows else B, B + global_scale * BIS1_combed,
igl.eigen.MatrixXd([[1, 0, 0]]))
viewer.data.add_edges(B - global_scale * BIS2_combed if extend_arrows else B, B + global_scale * BIS2_combed,
viewer.data().add_edges(B - global_scale * BIS2_combed if extend_arrows else B, B + global_scale * BIS2_combed,
igl.eigen.MatrixXd([[0, 0, 1]]))
if key == ord('4'):
# Singularities and cuts
viewer.data.set_mesh(V, F)
viewer.data().set_mesh(V, F)
# Plot cuts
l_count = Seams.sum()
@@ -141,22 +141,22 @@ def key_down(viewer, key, modifier):
P2.setRow(l_count - 1, V.row(F[i, (j + 1) % 3]))
l_count -= 1
viewer.data.add_edges(P1, P2, igl.eigen.MatrixXd([[1, 0, 0]]))
viewer.data().add_edges(P1, P2, igl.eigen.MatrixXd([[1, 0, 0]]))
# Plot the singularities as colored dots (red for negative, blue for positive)
for i in range(0, singularityIndex.size()):
if 2 > singularityIndex[i] > 0:
viewer.data.add_points(V.row(i), igl.eigen.MatrixXd([[1, 0, 0]]))
viewer.data().add_points(V.row(i), igl.eigen.MatrixXd([[1, 0, 0]]))
elif singularityIndex[i] > 2:
viewer.data.add_points(V.row(i), igl.eigen.MatrixXd([[1, 0, 0]]))
viewer.data().add_points(V.row(i), igl.eigen.MatrixXd([[1, 0, 0]]))
if key == ord('5'):
# Singularities and cuts, original field
# Singularities and cuts
viewer.data.set_mesh(V, F)
viewer.data.add_edges(B - global_scale * X1_combed if extend_arrows else B, B + global_scale * X1_combed,
viewer.data().set_mesh(V, F)
viewer.data().add_edges(B - global_scale * X1_combed if extend_arrows else B, B + global_scale * X1_combed,
igl.eigen.MatrixXd([[1, 0, 0]]))
viewer.data.add_edges(B - global_scale * X2_combed if extend_arrows else B, B + global_scale * X2_combed,
viewer.data().add_edges(B - global_scale * X2_combed if extend_arrows else B, B + global_scale * X2_combed,
igl.eigen.MatrixXd([[0, 0, 1]]))
# Plot cuts
@@ -172,38 +172,38 @@ def key_down(viewer, key, modifier):
P2.setRow(l_count - 1, V.row(F[i, (j + 1) % 3]))
l_count -= 1
viewer.data.add_edges(P1, P2, igl.eigen.MatrixXd([[1, 0, 0]]))
viewer.data().add_edges(P1, P2, igl.eigen.MatrixXd([[1, 0, 0]]))
# Plot the singularities as colored dots (red for negative, blue for positive)
for i in range(0, singularityIndex.size()):
if 2 > singularityIndex[i] > 0:
viewer.data.add_points(V.row(i), igl.eigen.MatrixXd([[1, 0, 0]]))
viewer.data().add_points(V.row(i), igl.eigen.MatrixXd([[1, 0, 0]]))
elif singularityIndex[i] > 2:
viewer.data.add_points(V.row(i), igl.eigen.MatrixXd([[0, 1, 0]]))
viewer.data().add_points(V.row(i), igl.eigen.MatrixXd([[0, 1, 0]]))
if key == ord('6'):
# Global parametrization UV
viewer.data.set_mesh(UV, FUV)
viewer.data.set_uv(UV)
viewer.core.show_lines = True
viewer.data().set_mesh(UV, FUV)
viewer.data().set_uv(UV)
viewer.data().show_lines = True
if key == ord('7'):
# Global parametrization in 3D
viewer.data.set_mesh(V, F)
viewer.data.set_uv(UV, FUV)
viewer.core.show_texture = True
viewer.data().set_mesh(V, F)
viewer.data().set_uv(UV, FUV)
viewer.data().show_texture = True
if key == ord('8'):
# Global parametrization in 3D with seams
viewer.data.set_mesh(V, F)
viewer.data.set_uv(UV_seams, FUV_seams)
viewer.core.show_texture = True
viewer.data().set_mesh(V, F)
viewer.data().set_uv(UV_seams, FUV_seams)
viewer.data().show_texture = True
viewer.data.set_colors(igl.eigen.MatrixXd([[1, 1, 1]]))
viewer.data().set_colors(igl.eigen.MatrixXd([[1, 1, 1]]))
viewer.data.set_texture(texture_R, texture_B, texture_G)
viewer.data().set_texture(texture_R, texture_B, texture_G)
viewer.core.align_camera_center(viewer.data.V, viewer.data.F)
viewer.core.align_camera_center(viewer.data().V, viewer.data().F)
return False
@@ -218,7 +218,7 @@ igl.barycenter(V, F, B)
global_scale = .5 * igl.avg_edge_length(V, F)
# Contrain one face
b = igl.eigen.MatrixXi([[0]])
b = igl.eigen.MatrixXd([[0]]).castint()
bc = igl.eigen.MatrixXd([[1, 0, 0]])
# Create a smooth 4-RoSy field
@@ -267,7 +267,7 @@ igl.comiso.miq(V, F, X1_combed, X2_combed, MMatch, isSingularity, Seams, UV_seam
stiffness, direct_round, iterations, 5, False)
# Plot the mesh
viewer = igl.viewer.Viewer()
viewer = igl.glfw.Viewer()
# Replace the standard texture with an integer shift invariant texture
(texture_R, texture_G, texture_B) = line_texture()
+15 -15
View File
@@ -17,7 +17,7 @@ dependencies = ["glfw"]
check_dependencies(dependencies)
viewer = igl.viewer.Viewer()
viewer = igl.glfw.Viewer()
# Quad mesh generated from conjugate field
VQC = igl.eigen.MatrixXd()
@@ -40,7 +40,7 @@ PQC3plan = igl.eigen.MatrixXd()
def key_down(viewer, key, modifier):
if key == ord('1'):
# Draw the triangulated quad mesh
viewer.data.set_mesh(VQC, FQCtri)
viewer.data().set_mesh(VQC, FQCtri)
# Assign a color to each quad that corresponds to its planarity
planarity = igl.eigen.MatrixXd()
@@ -50,17 +50,17 @@ def key_down(viewer, key, modifier):
C = igl.eigen.MatrixXd(FQCtri.rows(), 3)
C.setTopRows(Ct.rows(), Ct)
C.setBottomRows(Ct.rows(), Ct)
viewer.data.set_colors(C)
viewer.data().set_colors(C)
# Plot a line for each edge of the quad mesh
viewer.data.add_edges(PQC0, PQC1, igl.eigen.MatrixXd([[0, 0, 0]]))
viewer.data.add_edges(PQC1, PQC2, igl.eigen.MatrixXd([[0, 0, 0]]))
viewer.data.add_edges(PQC2, PQC3, igl.eigen.MatrixXd([[0, 0, 0]]))
viewer.data.add_edges(PQC3, PQC0, igl.eigen.MatrixXd([[0, 0, 0]]))
viewer.data().add_edges(PQC0, PQC1, igl.eigen.MatrixXd([[0, 0, 0]]))
viewer.data().add_edges(PQC1, PQC2, igl.eigen.MatrixXd([[0, 0, 0]]))
viewer.data().add_edges(PQC2, PQC3, igl.eigen.MatrixXd([[0, 0, 0]]))
viewer.data().add_edges(PQC3, PQC0, igl.eigen.MatrixXd([[0, 0, 0]]))
elif key == ord('2'):
# Draw the planar quad mesh
viewer.data.set_mesh(VQCplan, FQCtri)
viewer.data().set_mesh(VQCplan, FQCtri)
# Assign a color to each quad that corresponds to its planarity
planarity = igl.eigen.MatrixXd()
@@ -70,13 +70,13 @@ def key_down(viewer, key, modifier):
C = igl.eigen.MatrixXd(FQCtri.rows(), 3)
C.setTopRows(Ct.rows(), Ct)
C.setBottomRows(Ct.rows(), Ct)
viewer.data.set_colors(C)
viewer.data().set_colors(C)
# Plot a line for each edge of the quad mesh
viewer.data.add_edges(PQC0plan, PQC1plan, igl.eigen.MatrixXd([[0, 0, 0]]))
viewer.data.add_edges(PQC1plan, PQC2plan, igl.eigen.MatrixXd([[0, 0, 0]]))
viewer.data.add_edges(PQC2plan, PQC3plan, igl.eigen.MatrixXd([[0, 0, 0]]))
viewer.data.add_edges(PQC3plan, PQC0plan, igl.eigen.MatrixXd([[0, 0, 0]]))
viewer.data().add_edges(PQC0plan, PQC1plan, igl.eigen.MatrixXd([[0, 0, 0]]))
viewer.data().add_edges(PQC1plan, PQC2plan, igl.eigen.MatrixXd([[0, 0, 0]]))
viewer.data().add_edges(PQC2plan, PQC3plan, igl.eigen.MatrixXd([[0, 0, 0]]))
viewer.data().add_edges(PQC3plan, PQC0plan, igl.eigen.MatrixXd([[0, 0, 0]]))
else:
return False
@@ -119,7 +119,7 @@ igl.slice(VQCplan, FQC.col(3), 1, PQC3plan)
# Launch the viewer
key_down(viewer, ord('2'), 0)
viewer.core.invert_normals = True
viewer.core.show_lines = False
viewer.data().invert_normals = True
viewer.data().show_lines = False
viewer.callback_key_down = key_down
viewer.launch()
+4 -4
View File
@@ -13,13 +13,13 @@ import pyigl as igl
from shared import check_dependencies
dependencies = ["triangle", "viewer"]
dependencies = ["triangle", "glfw"]
check_dependencies(dependencies)
# Input polygon
V = igl.eigen.MatrixXd([[-1, -1], [1, -1], [1, 1], [-1, 1], [-2, -2], [2, -2], [2, 2], [-2, 2]])
E = igl.eigen.MatrixXi([[0, 1], [1, 2], [2, 3], [3, 0], [4, 5], [5, 6], [6,7], [7,4]])
E = igl.eigen.MatrixXd([[0, 1], [1, 2], [2, 3], [3, 0], [4, 5], [5, 6], [6,7], [7,4]]).castint()
H = igl.eigen.MatrixXd([[0, 0]])
# Triangulated Interior
@@ -29,6 +29,6 @@ F2 = igl.eigen.MatrixXi()
igl.triangle.triangulate(V, E, H, "a0.005q", V2, F2)
# Plot the mesh
viewer = igl.viewer.Viewer()
viewer.data.set_mesh(V2, F2)
viewer = igl.glfw.Viewer()
viewer.data().set_mesh(V2, F2)
viewer.launch()
+10 -10
View File
@@ -13,7 +13,7 @@ import pyigl as igl
from shared import TUTORIAL_SHARED_PATH, check_dependencies
dependencies = ["tetgen", "viewer"]
dependencies = ["tetgen", "glfw"]
check_dependencies(dependencies)
@@ -27,7 +27,7 @@ TV = igl.eigen.MatrixXd()
TT = igl.eigen.MatrixXi()
TF = igl.eigen.MatrixXi()
viewer = igl.viewer.Viewer()
viewer = igl.glfw.Viewer()
def key_down(viewer, key, modifier):
@@ -43,7 +43,7 @@ def key_down(viewer, key, modifier):
s.append(i)
V_temp = igl.eigen.MatrixXd(len(s) * 4, 3)
F_temp = igl.eigen.MatrixXi(len(s) * 4, 3)
F_temp = igl.eigen.MatrixXd(len(s) * 4, 3).castint()
for i in range(len(s)):
V_temp.setRow(i * 4 + 0, TV.row(TT[s[i], 0]))
@@ -51,14 +51,14 @@ def key_down(viewer, key, modifier):
V_temp.setRow(i * 4 + 2, TV.row(TT[s[i], 2]))
V_temp.setRow(i * 4 + 3, TV.row(TT[s[i], 3]))
F_temp.setRow(i * 4 + 0, igl.eigen.MatrixXi([[(i*4)+0, (i*4)+1, (i*4)+3]]))
F_temp.setRow(i * 4 + 1, igl.eigen.MatrixXi([[(i*4)+0, (i*4)+2, (i*4)+1]]))
F_temp.setRow(i * 4 + 2, igl.eigen.MatrixXi([[(i*4)+3, (i*4)+2, (i*4)+0]]))
F_temp.setRow(i * 4 + 3, igl.eigen.MatrixXi([[(i*4)+1, (i*4)+2, (i*4)+3]]))
F_temp.setRow(i * 4 + 0, igl.eigen.MatrixXd([[(i*4)+0, (i*4)+1, (i*4)+3]]).castint())
F_temp.setRow(i * 4 + 1, igl.eigen.MatrixXd([[(i*4)+0, (i*4)+2, (i*4)+1]]).castint())
F_temp.setRow(i * 4 + 2, igl.eigen.MatrixXd([[(i*4)+3, (i*4)+2, (i*4)+0]]).castint())
F_temp.setRow(i * 4 + 3, igl.eigen.MatrixXd([[(i*4)+1, (i*4)+2, (i*4)+3]]).castint())
viewer.data.clear()
viewer.data.set_mesh(V_temp, F_temp)
viewer.data.set_face_based(True)
viewer.data().clear()
viewer.data().set_mesh(V_temp, F_temp)
viewer.data().set_face_based(True)
else:
return False
+6 -6
View File
@@ -13,7 +13,7 @@ import pyigl as igl
from shared import TUTORIAL_SHARED_PATH, check_dependencies
dependencies = ["embree", "viewer"]
dependencies = ["embree", "glfw"]
check_dependencies(dependencies)
@@ -24,7 +24,7 @@ AO = igl.eigen.MatrixXd()
N = igl.eigen.MatrixXd()
viewer = igl.viewer.Viewer()
viewer = igl.glfw.Viewer()
def key_down(viewer, key, modifier):
@@ -33,13 +33,13 @@ def key_down(viewer, key, modifier):
if key == ord('1'):
# Show the mesh without the ambient occlusion factor
viewer.data.set_colors(color)
viewer.data().set_colors(color)
elif key == ord('2'):
# Show the mesh with the ambient occlusion factor
C = color.replicate(V.rows(), 1)
for i in range(C.rows()):
C.setRow(i, C.row(i) * AO[i, 0])
viewer.data.set_colors(C)
viewer.data().set_colors(C)
elif key == ord('.'):
viewer.core.lighting_factor += 0.1
elif key == ord(','):
@@ -64,9 +64,9 @@ igl.embree.ambient_occlusion(V, F, V, N, 500, AO)
AO = 1.0 - AO
# Plot the generated mesh
viewer.data.set_mesh(V, F)
viewer.data().set_mesh(V, F)
key_down(viewer, ord('2'), 0)
viewer.callback_key_down = key_down
viewer.core.show_lines = False
viewer.data().show_lines = False
viewer.core.lighting_factor = 0.0
viewer.launch()
+10 -10
View File
@@ -13,7 +13,7 @@ import pyigl as igl
from shared import TUTORIAL_SHARED_PATH, check_dependencies
dependencies = ["png", "viewer"]
dependencies = ["png", "glfw"]
check_dependencies(dependencies)
temp_png = os.path.join(os.getcwd(),"out.png")
@@ -27,7 +27,7 @@ def key_down(viewer, key, modifier):
A = igl.eigen.MatrixXuc(1280, 800)
# Draw the scene in the buffers
viewer.core.draw_buffer(viewer.data, viewer.opengl, False, R, G, B, A)
viewer.core.draw_buffer(viewer.data(), False, R, G, B, A)
# Save it to a PNG
igl.png.writePNG(R, G, B, A, temp_png)
@@ -47,18 +47,18 @@ def key_down(viewer, key, modifier):
[0.5, 0.5, 0],
[-0.5, 0.5, 0]])
F = igl.eigen.MatrixXi([[0, 1, 2], [2, 3, 0]])
F = igl.eigen.MatrixXd([[0, 1, 2], [2, 3, 0]]).castint()
UV = igl.eigen.MatrixXd([[0, 0], [1, 0], [1, 1], [0, 1]])
viewer.data.clear()
viewer.data.set_mesh(V, F)
viewer.data.set_uv(UV)
viewer.data().clear()
viewer.data().set_mesh(V, F)
viewer.data().set_uv(UV)
viewer.core.align_camera_center(V)
viewer.core.show_texture = True
viewer.data().show_texture = True
# Use the image as a texture
viewer.data.set_texture(R, G, B)
viewer.data().set_texture(R, G, B)
else:
return False
@@ -73,13 +73,13 @@ if __name__ == "__main__":
# Load meshes in OFF format
igl.readOFF(TUTORIAL_SHARED_PATH + "bunny.off", V, F)
viewer = igl.viewer.Viewer()
viewer = igl.glfw.Viewer()
print(
"Usage: Press 1 to render the scene and save it in a png. \nPress 2 to load the saved png and use it as a texture.")
viewer.callback_key_down = key_down
viewer.data.set_mesh(V, F)
viewer.data().set_mesh(V, F)
viewer.launch()
os.remove(temp_png)
+6 -6
View File
@@ -13,7 +13,7 @@ import pyigl as igl
from shared import TUTORIAL_SHARED_PATH, check_dependencies
dependencies = ["cgal", "viewer"]
dependencies = ["cgal", "glfw"]
check_dependencies(dependencies)
boolean_type_names = {igl.MESH_BOOLEAN_TYPE_UNION: "Union", igl.MESH_BOOLEAN_TYPE_INTERSECT: "Intersect", igl.MESH_BOOLEAN_TYPE_MINUS: "Minus", igl.MESH_BOOLEAN_TYPE_XOR: "XOR", igl.MESH_BOOLEAN_TYPE_RESOLVE: "Resolve"}
@@ -34,9 +34,9 @@ def update(viewer):
else:
C.setRow(f, Green)
viewer.data.clear()
viewer.data.set_mesh(VC, FC)
viewer.data.set_colors(C)
viewer.data().clear()
viewer.data().set_mesh(VC, FC)
viewer.data().set_colors(C)
print("Done.")
@@ -78,13 +78,13 @@ if __name__ == "__main__":
boolean_type = igl.MESH_BOOLEAN_TYPE_UNION
viewer = igl.viewer.Viewer()
viewer = igl.glfw.Viewer()
update(viewer)
print(
"Usage: Press '.' to switch to next boolean operation type. \nPress ',' to switch to previous boolean operation type. \nPress ']' to push near cutting plane away from camera. \nPress '[' to pull near cutting plane closer to camera. \nHint: investigate _inside_ the model to see orientation changes. \n")
viewer.core.show_lines = True
viewer.data().show_lines = True
viewer.callback_key_down = key_down
viewer.core.camera_dnear = 3.9
viewer.launch()