Simplex Tools

The Shapes Panel allows you to add objects to the scene via drag-and-drop, which can then be edited. However this is quite a limited way to create 3D shapes. The Tools Panel gives you more shape-creation and editing operations, which are more complicated but also more powerful.

The main thing to understand about Tools in Simplex is that they are Modal, meaning that when a tool is active on an input device, you can't do most other things with it. This is mainly like other creation software - when you are using the Paintbrush in Photoshop, the left mouse button paints, until you switch Tools. However Simplex is designed to support two-handed input devices like the Oculus Touch, and we don't see why if you are using a paintbrush with one hand, you can't be doing something else with the other. This gives you more power, but it is also a bit more complicated.

In the Tools Panel, you have a set of icons, each of which "starts" a specific Tool. There is also a visual Cancel button which you can click to Exit the tool. With the mouse, only one Tool can be active at a time, indicated by a Red star on that Tool's icon. With the Oculus Touch controllers, a star is shown for each hand - Green for Left, and Red for Right.

The images below show two possible states. On the left, both the Left and Right hands are using the Draw Primitives tool. That means you can be creating a primitive with each hand, simultaneously. In the right image, the Left hand is using Draw Tubes, and the Right is using Draw Primitives.

One useful shortcut with the Touch controllers: to clear the Active Tool for a given hand, press down and "click" the Stick for that hand. 

Touch Hand Icons

The stars in the Tools Panel indicate the active tool, but in some cases you may want to switch to other Panels (for example to select an active primitive). As a secondary indicator, we attach the Active Tool Icon to each Hand, as shown in the image to the right.




Draw Primitives Tool

The Draw Primitives tool is used to quickly sketch out 3D primitives. The Active Primitive from the Primitives Panel is used to determine which primitive will be drawn. To draw you left-click (mouse/gamepad) or left/right trigger (Touch) to begin a new primitive. Hold down the relevant button/trigger and drag to set the first two dimensions. For a Sphere, this is sufficient, and when you release the button/trigger the Primitive will be added to the scene. For Boxes and Cylinders, after the first release, you will then proceed to set the third dimension. A second click-release will add the Primitive to the Scene.

A ray-intersection is used to specify the starting point for the Primitive. If the ray intersects an existing object, you will draw in a coordinate frame determined by the surface normal of the object. In this way you can quickly assemble complex shapes.

To draw more precisely, Snapping is also supported in this Tool. Currently the Snapping is semi-automated. When your cursor hits an existing object with the Tool active, you will see a set of green spheres appear. These are Snap Targets. If you start drawing with the cursor hitting one of these targets, the start position will snap to the center of the Sphere.

It's a bit tricky to hit snap targets at the rear edges of objects, because they will disappear if you mouse off the object. We know, this sucks! Improvements are coming!!


Draw Tubes Tool

The Draw Tubes tool is used to create thickened curves in the scene. The basic interaction is that you either left-click-drag (mouse/gamepad) or left/right trigger (Touch) and then move the input device to draw the center-line of the tube.

With the Mouse/Gamepad, the tube curve lies on a 3D plane that is set when you start drawing. So, you can only draw "starting" on another object or the ground plane - ie with the cursor hitting it - otherwise we don't know where to set the plane.

With the Touch controllers, if you start drawing on an object or the ground plane, the tube will also start at that location, but then it will be like the tube is on the end of a fixed-length stick attached to your hand. So, tilting the controller will move it, but so will 3D positional movements of your hand. 

If the cursor-ray *isn't* hitting anything (ground or object), then the tube will draw in free-space, at the tip of the large hand cursor. In this case the direct position of your hand will determine the curve shape. Note, however, that in the standard view, the initial tube radius will be enormous!  

Sometimes you might want to draw in free-space even though the cursor is hitting an object. In this case, you can force drawing in free-space by resting your thumb on the relevant joystick. The top of the stick is actually a touch-sensitive surface, so we can detect this resting contact and modify the default behavior. (a bit of a hack! We'll clean this up soon!)

With the Touch controller, you can also use the up/down axis to make the tube thicker/thinner as you are drawing. This size will be saved for future tubes.