Grab, rotate, and thumb brushes for dynamic topology

I’ve just pushed updates to the dyntopo branch┬áthat fix the grab, rotate, and thumb brushes for dynamic-topology sculpting.

Since these brushes rely on grabbing a static set of vertices, the topology is not updated by these brushes.

17 thoughts on “Grab, rotate, and thumb brushes for dynamic topology”

  1. It could be interesting to have this brushes creating triangles while moving a static set of vertices.
    The grab brush would act like a kind of snake hook with an unchanged geometry instead of the fine point.
    The rotate brush would act like a kind of nudge brush around unchanged rotated geometry.

    1. The differences between the snake hook and grab brushes are most easily observed with dynamic topology off. Basically, here’s what happens:

      The grab brush moves the vertices within the brush radius at the time the user initiates his stroke, and the tool affects these vertices for the remainder of the stroke. The vertices traverse across the view plane, along a line between the point of activation on the surface of the mesh and the mouse cursor.

      The snake hook brush is different in that the determination of what vertices are affected is continually updated throughout the duration of the stroke. Using a flat falloff, the user will not notice any differences between the two brushes because, with the snake hook brush, the vertices will keep up with the moving radius of effect. However, with any other falloff, only the vertices that receive the maximum amplitude of the brush curve can keep up with the cursor. Therefore, the vertices that lag behind eventually fall outside of the brush radius, at which point they cease being affected by the tool.

      This explains why the user observes that the snake hook brush, with the default falloff, creates a more “pointed” displacement than the grab brush. Additionally, whereas the grab brush creates straight line displacements only, the snake hook brush has the additional capability to create curved and angular displacements.

      The grab brush is now modifying the mesh in the same way it would with dynamic topology turned off. This is a problem because polygon stretching occurs. If you can figure out a way, it would be ideal to implement dynamic subdivision, as seen with the snake hook brush, but restrict vertices to straight line displacements. This way, the tool would be usable for dynamic topology sculpting and remain distinct from the snake hook brush in its function. Otherwise, there is no motivating reason to use the grab brush and a very compelling reason not to use it.

      As a source of inspiration, check out the rotate tool in sculptris. It manages basic subdivision, which can still produce some stretching–though, less noticeable with the relaxation step. Nonetheless, this is far more useful that the twist brush that has no effect on the mesh topology.

  2. Hey Nicholas. I added “simplify” brush from the brush menu, but it does nothing. Am i missing somethnig?

    1. The simplify brush respects the detail size, so you might need to increase detail size to see effects of simplification.

      1. It is not intuitive. User will try to increase brush’s strength.
        Especially,until we have a shortcut like shift+F that brings detail size set up near mouse.
        Alt F could be used for this and drawn circle could be polygonized to represent detail size set up.

        1. As it is right now is very usable and consistent. If anything, I’d simply change the name to something like ‘resurface’ or ‘retesselate’, because ‘simplify’ implies you should always end up with a simpler surface, which is not the case.

  3. Could I ask to a kind sould a 64-bit Linux build of it (on graphicall.org)?
    I’m still unable to try the awesomeness! =[

  4. I second the request for a 64 bit linux build. I tried building it myself for around 3 hours but it just wont build. My dependencies are too new. I have built successfully in the past on windows.

Leave a Reply

Your email address will not be published. Required fields are marked *