1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- # Add the igl library to the modules search path
- import sys, os
- sys.path.insert(0, os.getcwd() + "/../")
- import pyigl as igl
- import nanogui
- V1 = igl.eigen.MatrixXd()
- F1 = igl.eigen.MatrixXi()
- V2 = igl.eigen.MatrixXd()
- F2 = igl.eigen.MatrixXi()
- float_variable = 0.1
- bool_variable = True
- dir = 0
- def make_accessors(name):
- def setter(value):
- globals()[name] = value
- def getter():
- return globals()[name]
- return setter, getter
- def viewer_init(viewer):
- # add new group
- viewer.ngui.addGroup("New Group")
- # Expose the using general callback
- viewer.ngui.addDoubleVariable("double", *make_accessors("float_variable"))
- def setter(val):
- global bool_variable
- bool_variable = val
- def getter():
- global bool_variable
- return bool_variable
- # ... or using a custom callback
- viewer.ngui.addBoolVariable("bool", setter, getter)
- viewer.ngui.addEnumVariable("Direction", *make_accessors("dir")) \
- .setItems(["Up", "Down", "Left", "Right"])
- # Add a button
- def cb():
- print("Hello")
- viewer.ngui.addButton("Print Hello", cb)
- #Add an additional menu window
- viewer.ngui.addWindow(nanogui.Vector2i(220, 10), "New Window")
- # add accessor
- viewer.ngui.addDoubleVariable("double", *make_accessors("float_variable"))
- #Generate menu
- viewer.screen.performLayout()
- return False
- def main():
- # Load a mesh in OFF format
- igl.readOFF("../../tutorial/shared/bunny.off", V1, F1)
- # Init the viewer
- viewer = igl.viewer.Viewer()
- # Extend viewer menu
- viewer.callback_init = viewer_init
- # Plot the mesh
- viewer.data.set_mesh(V1, F1)
- viewer.launch()
- if __name__ == "__main__":
- main()
|