@@ -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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user