@@ -165,6 +165,7 @@ def __init__(self, signal_provider, meshcat_provider, animation_period):
165165 self .plot_items = []
166166 self .video_items = []
167167 self .visualized_3d_points = set ()
168+ self .visualized_3d_trajectories = set ()
168169 self .visualized_3d_points_colors_palette = ColorPalette ()
169170
170171 self .toolButton_on_click ()
@@ -722,7 +723,9 @@ def variableTreeWidget_on_right_click(self, item_position):
722723 menu = QtWidgets .QMenu ()
723724
724725 add_3d_point_str = "Show as a 3D point"
726+ add_3d_trajectory_str = "Show as a 3D trajectory"
725727 remove_3d_point_str = "Remove the 3D point"
728+ remove_3d_trajectory_str = "Remove the 3D trajectory"
726729 use_as_base_position_str = "Use as base position"
727730 use_as_base_orientation_str = "Use as base orientation"
728731 dont_use_as_base_position_str = "Don't use as base position"
@@ -734,8 +737,14 @@ def variableTreeWidget_on_right_click(self, item_position):
734737 if item_size == 2 :
735738 if item_key in self .visualized_3d_points :
736739 menu .addAction (remove_3d_point_str )
737- else :
740+ if item_key in self .visualized_3d_trajectories :
741+ menu .addAction (remove_3d_trajectory_str )
742+ if (
743+ item_key not in self .visualized_3d_points
744+ and item_key not in self .visualized_3d_trajectories
745+ ):
738746 menu .addAction (add_3d_point_str )
747+ menu .addAction (add_3d_trajectory_str )
739748
740749 # in this case we can use the item as base position, base orientation or 3d point
741750 if item_size == 3 :
@@ -753,8 +762,14 @@ def variableTreeWidget_on_right_click(self, item_position):
753762
754763 if item_key in self .visualized_3d_points :
755764 menu .addAction (remove_3d_point_str )
756- else :
765+ if item_key in self .visualized_3d_trajectories :
766+ menu .addAction (remove_3d_trajectory_str )
767+ if (
768+ item_key not in self .visualized_3d_points
769+ and item_key not in self .visualized_3d_trajectories
770+ ):
757771 menu .addAction (add_3d_point_str )
772+ menu .addAction (add_3d_trajectory_str )
758773
759774 if item_size == 4 :
760775 if item_path == self .robot_state_path .base_orientation_path :
@@ -769,22 +784,36 @@ def variableTreeWidget_on_right_click(self, item_position):
769784
770785 item_path = self .get_item_path (item )
771786
772- if action .text () == add_3d_point_str :
787+ if action .text () == add_3d_point_str or action . text () == add_3d_trajectory_str :
773788 color = next (self .visualized_3d_points_colors_palette )
774789
775790 item .setForeground (0 , QtGui .QBrush (QtGui .QColor (color .as_hex ())))
776- self .meshcat_provider .register_3d_point (
777- item_key , list (color .as_normalized_rgb ())
778- )
779- self .signal_provider .register_3d_point (item_key , item_path )
780- self .visualized_3d_points .add (item_key )
791+
792+ if action .text () == add_3d_point_str :
793+ self .meshcat_provider .register_3d_point (
794+ item_key , list (color .as_normalized_rgb ())
795+ )
796+ self .signal_provider .register_3d_point (item_key , item_path )
797+ self .visualized_3d_points .add (item_key )
798+ else :
799+ self .meshcat_provider .register_3d_trajectory (
800+ item_key , list (color .as_normalized_rgb ())
801+ )
802+ self .signal_provider .register_3d_trajectory (item_key , item_path )
803+ self .visualized_3d_trajectories .add (item_key )
781804
782805 if action .text () == remove_3d_point_str :
783806 self .meshcat_provider .unregister_3d_point (item_key )
784807 self .signal_provider .unregister_3d_point (item_key )
785808 self .visualized_3d_points .remove (item_key )
786809 item .setForeground (0 , QtGui .QBrush (QtGui .QColor (0 , 0 , 0 )))
787810
811+ if action .text () == remove_3d_trajectory_str :
812+ self .meshcat_provider .unregister_3d_trajectory (item_key )
813+ self .signal_provider .unregister_3d_trajectory (item_key )
814+ self .visualized_3d_trajectories .remove (item_key )
815+ item .setForeground (0 , QtGui .QBrush (QtGui .QColor (0 , 0 , 0 )))
816+
788817 if (
789818 use_as_base_orientation_str in action .text ()
790819 or action .text () == use_as_base_position_str
0 commit comments