1import numpy as np
2import dartpy as dart
3
4
5def main():
6    world = dart.simulation.World()
7
8    tf = dart.math.Isometry3()
9
10    tf.set_translation([4, -4, 0])
11    frame = dart.gui.osg.InteractiveFrame(
12        dart.dynamics.Frame.World(), 'interactive frame', tf, 2)
13    world.addSimpleFrame(frame)
14
15    tf.set_translation([-4, 4, 0])
16    draggable = dart.dynamics.SimpleFrame(frame, 'draggable', tf)
17    draggable.setShape(dart.dynamics.BoxShape([1, 1, 1]))
18    draggable.getVisualAspect(True).setColor([0.9, 0, 0])
19    world.addSimpleFrame(draggable)
20
21    tf.set_translation([8, 0, 0])
22    x_marker = dart.dynamics.SimpleFrame(dart.dynamics.Frame.World(), 'X', tf)
23    x_shape = dart.dynamics.BoxShape([0.2, 0.2, 0.2])
24    x_marker.setShape(x_shape)
25    x_marker.getVisualAspect(True).setColor([0.9, 0, 0])
26    world.addSimpleFrame(x_marker)
27
28    tf.set_translation([0, 8, 0])
29    y_marker = dart.dynamics.SimpleFrame(dart.dynamics.Frame.World(), 'Y', tf)
30    y_shape = dart.dynamics.BoxShape([0.2, 0.2, 0.2])
31    y_marker.setShape(y_shape)
32    y_marker.getVisualAspect(True).setColor([0, 0.9, 0])
33    world.addSimpleFrame(y_marker)
34
35    tf.set_translation([0, 0, 8])
36    z_marker = dart.dynamics.SimpleFrame(dart.dynamics.Frame.World(), 'Z', tf)
37    z_shape = dart.dynamics.BoxShape([0.2, 0.2, 0.2])
38    z_marker.setShape(z_shape)
39    z_marker.getVisualAspect(True).setColor([0, 0, 0.9])
40    world.addSimpleFrame(z_marker)
41
42    node = dart.gui.osg.WorldNode(world)
43
44    viewer = dart.gui.osg.Viewer()
45    viewer.addWorldNode(node)
46    viewer.enableDragAndDrop(frame)
47    viewer.enableDragAndDrop(draggable)
48
49    viewer.addInstructionText("\nCtrl + Left-click: Rotate the box\n")
50    print(viewer.getInstructions())
51
52    viewer.setUpViewInWindow(0, 0, 640, 480)
53    viewer.setCameraHomePosition([20, 17, 17], [0, 0, 0], [0, 0, 1])
54    viewer.run()
55
56
57if __name__ == "__main__":
58    main()
59