Implement A New Drawing Mode

Introduction

A command performs an action, generates a result, and then terminates. This interaction model does not allow for interactive modeling. A draw mode is simply a user controlled interaction state where mouse, keyboard, and rendering controls are given to the mode. Select mode and translate are examples of draw modes. Use a draw mode if you wish to implement an interactive tool.

A draw mode is activated by a command; thus most draw modes contain a command and are invoked by a scripted command installed in the interface. You can write a C++ command to invoke the draw mode but that requires a lot more work for virtually no gain.

Workflow Considerations

Draw modes require the user to switch from the current mode - usually select mode - to the new draw mode. This can be fatiguing for users. One example in Scenome is the requirement to switch between select and navigate modes. The solution of course would be to combine the modes but that is often more practical on paper than in reality, especially if both modes require mouse input. If you implements lots of draw modes the user has to switch between lots of modes. So if you decide to implement a number of draw modes you might want to think of a creative solution to mode switching.

Draw modes should use their own cursor to indicate the current mode. This is very important so that the user does not have to check the current mode by mousing through the interface. Users spend a lot of time following the cursor with their eyes. Thus using a unique cursor for each mode is a very convenient and time-saving method of providing constant visual cues as to the current mode.

Examples

You might implement a draw mode that allows the user to subdivide a mesh edge by left clicking on the edge. This draw mode needs to capture the current edge via rendering feedback and create a SplitEdgeModifier in the mesh construction history of the mesh being modified.

You might implement a draw mode that allows the user to interact with the mesh construction history. This would be a very interesting challenge because it's very difficult to determine which modifier you want to select using worksheet data alone.

You might implement a draw mode that allows the user to interactively manipulate the texture coordinates of the selected face.