利用者:Jwilkins/GSoC2010/SculptFeedback

提供: wiki
< 利用者:Jwilkins
2010年8月6日 (金) 18:21時点における77.254.94.91 (トーク)による版 (Crease - DONE)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
移動先: 案内検索

目次

General

Bugs

Brush size doesn't change when pressure changes when using the old style brush

it is what ever the slider size lists it as.

bug - grabbing a mesh can leave a 'trailer' artifact

a screen area needs to be tagged and if the mouse was in it the previous update it needs to be refreshed also to get rid of the image from the mesh that has moved to a new display location.

  • area to partially update area is now the union of the current and previous frames dirty rectangles

bug - when loading a different image for a texture, the texture for the brush panel is not updated

the texture instead turns black, which is very confusing.

  • I am unable to duplicate this at all

bug - when sculpting and texture shading - mesh won't be shown as updated till switching to solid

If I enable texture shading and then try and sculpt no mesh changes appear to happen till i switch back to solid shading. (Might be in trunk?) The reason this is important, is that I'm setting the object transparent, putting it in opengl mode so i Can see my background texture. Might be useful as an option to allow backdrop textures to be in front of your object instead of behind.

Hmm it just worked here with GLSL mode, a matcap, and transparency. I'm investigating more.

  • I'm unable to duplicate this.


bug - a rotated texture is shown unrotated in texture previews

The image for the texture preview. As as well as the image of the texture used for scaling strength and size is shown unrotated even when the brush has a rotation applied to it.

  • The preview neglects to show many things that effect the texture, such as clamping, checkerboard, size, and rotation. Is rotation special? The reason I ask is that this is not a simple fix
  • after looking at this some more I see that the preview is selective in what attributes it shows. the problem is that brush specific attributes like angle and the map mode are not considered.

bug - brush action is not perfectly symmetrical

A mesh that starts out symmetrical slowly loses symmetry when sculpting, probably due to innaccuracies in floating point calculations.

Eclectiel #1

bug - alt button state is retained sometimes

this also relates to the event que, will file a report in the tracker

bug - stroke goes straight on fast strokes

this relates to events being dropped from the event que. Being fixed by the tablet SoC project

Eclectiel #7

FIXED BUGS

bug - when using pen, pressure is often 100 percent on initial pen down - FIXED

The pressure should often be at close to zero or one percent, instead of starting out at 100 percent

Hmm there is some code in head to address this but not for sculpt. Also doesn't seem to work for paint all the time either.

bug - can't use sizing hotkeys when unified size on enabled - FIXED

the hotkeys [ and ] for changing the size of the brush don't work if Unified Size is enabled.

bug - overlay texture is only shown when brush is over object-FIXED

overlay should be shown at all times 'show overlay' is enabled

bug - brush on surface resizing uses old circle style for sizing - FIXED

when you have brush on surface enabled resizing is still done via the resize circle from the old style cursor

This isn't a bug. Size is in pixels and the radial control allows you to resize in pixels. Changing the radial control to show the size on the surface is a significant feature request. - jwilkins

  • regardless, it's quite jarring when you're used to visualising the size of the brush on surface, but then have to try and switch mental gears to the 2d version, then back again, just to change size. Anyway, nice one for the bottom of todo imo. -- matt

bug - rake averaging shouldn't start till after first daub - FIXED

otherwise you need a long stroke distance to line the angle up correctly

  • The cursor/brush always keeps track of the rake angle, even when the mouse button isn't down. Using the overlay you can see the rake angle even before you start a stroke.

bug - rake can end up rotating the 'long way around' - FIXED

ie going from 350 to 5 is 15 degrees, but instead it might do it going 345 degrees

  • changed rake method to be exactly like smooth stroke so this shouldn't be a problem anymore

bug - artifacts in texture paint mode related to sculpt commit - FIXED

emailed you the sample file. Doing a binary search for the commit that broke it. Found the commit - 29703 - the commit before that is good.

bug - smoothing is resulting in 'faceting' - FIXED

it looks like smoothing is based only on the current original base face from the pbvh, thus the face becomes completely flat, and then has a sharp edge between faces.

bug - area normal for direction isn't set by default - FIXED

This results the mesh disappearing after a stroke for older brushes. Needs a doversion?

  • I'm not sure what is causing this. The default value for the sculpt plane is the area normal so it shouldn't need a doversion. Need more information.
    • hmmm only certain blends have this problem odd. Also current SVN doesn't have the issue anymore.

bug - radius is 'too thick' with large radiuses - FIXED

I think we should avoid scaling the thickness with the radius except perhaps for really small brushes

  • To each his own. Personally I think a really big brush with high strength should be big and thick and powerful looking because its about to rip through your mesh with both barrels blazing.
  • We can tone down the thickness, but making it size dependent is problematic because it is a lot of complicated code to tell if its a small brush you've zoomed in on or a big brush thats zoomed out.
  • If you use a tablet, I think this feedback is fantastic, you press hard and the brush really pops out and acknowledges how hard you're are pressing. However I do acknowledge it could be reduced by about half and still give good feedback.

bug - airbrush setting is incompatible with space - FIXED

reported by brecht - what is actually happening is that 'space' and 'airbrush' are mutually exclusive settings. Disable space and it works fine. Airbrush strenght probably needs to be scaled down since it builds up far too fast using max strength for each daub - maybe scale it to the rate setting?

  • This is really an interface problem. Fixed atm by making the airbrush toggle inactive when spacing is selected. There is a better fix in the works.

bug - brush on surface doesn't take into account object scale - FIXED

If you scale an object down then try and sculpt on it the drawn brush size will be too large.

bug - anchored brush drawn across center line have wierd result - FIXED

this is the same behaviour that used to happen with the grab brush, one side the brush affects both sides, and the other ignores the other side.

bug - dragging mesh beyond a certain distance now loses the ability to grab that mesh - FIXED

probably related to the pbvh bounding box fix in the recent commit.

bug - shading is changing significantly after each snakehooks grabs - FIXED

normal recalcuations are happening (presumably from the autosmooth?)

bug - the brush is sometimes appearing and sometimes not - FIXED

There appears to be no consistency to whether it is visible or not.

bug - delay on first daub after sculpt click - FIXED

when you first click to start a stroke, the daub is delayed, it should start immediately - FIXED

bug - texture rotation is wrong direction - FIXED

Rotating a texture using ctrl-fkey the rotation of the texture is actually the inverse of what is shown in the brush preview. Thus a daub of the brush is the mirror image of what is shown.

bug - rake should not daub on initial mouse down - FIXED

since the angle isn't established at the start of a rake, it should likely delay a pixel or two before starting so that it isn't rotated contrary to the rest of the stroke

  • The solution is to track the mouse at all times and keep track of its direction as if the user was already raking. Then when the user does start to apply the stroke that direction can be used as the initial value.

bug - anchor brush resolution is determined by brush size - FIXED

dragging the anchor brush with an image texture gives very blocky results as the image is sampled at the brush size rather than using the image resolution like in 2.49

http://www.cowtoolsmedia.co.uk/brushsize.jpg in the image: the left stroke has a bush size of 20, the right the maximum 200. the mesh is the same resolution in both.

  • Note from LetterRip I think this is caused by the caching of the brush texture to increase performance. We should not use a cached version of the brush for Anchor operations since the scale changes while dragging.

bug - original normal and unlimited clay option linked - FIXED

  • turning on original normal turns on unlimited clay.

bug - tiled mode assumes repeat is enabled - FIXED

tiled mode shows the texture as being tiled and hence 'repeat' mode for the texture settings, thus when clip is enabled the overlay shows as tiled but it is actually clipped and thus there is only one 'real' image.

bug - some alpha transitions in a texture result in huge spikes - FIXED

I've emailed you an example file on the border where transitioning from orange to alpha a huge spike around the texture results.

bug - crash on switching to weight paint or vertex paint mode - FIXED

If you try and switch to vertex paint or weight paint mode, it crashes. Doesn't crash on a switch to texture paint mode though.

backtrace - http://www.pasteall.org/13868

bug - disappearing ui elements - FIXED

When turning on the "Show brush on surface" option, the arrows used for expanding and minimizing panels disappear.

bug - brush on surface has opengl draw errors - FIXED

On one computer when Show Brush on Surface is turned on all the black borders and drop down arrows disappear while the mouse is in the sculpting area. When it leaves the sculpting area they return.

On the other computer they disappear for good. Switching modes, starting a few file - nothing brings them back... I have to restart blender to get them back

Suggestions affecting all or many brushes

Editable stroke history

Ability to adjust propertys of a stroke after the fact such as the path, brush size, brush type, and strength

Straight stroke

create a straight stroke between two points

Calculate spacing in object space instead of screen space -DONE

The current calculations of spacing in view space results in large spacing gaps between daubs when the object is at a large angle to the view plane. Changing to object space distances would reduce or eliminate that problem.

Consistent size for brush object space radius

The radius of the brush varies right now if you start at a object location that is close to the view plane, as opposed to far from the view plane. Thus a stroke going from near to far, and stroke going from far to near have different brush stroke sizes.

  • This should not happen if you select "Use Blender Units" - jwilkins


Brush Strength Consistency

It would be good to have the brush strengths consistent across brushes. Right now 100% on a brush has a huge impact on some brushes, whereas others things barely change.

Clip Brush Effect Based on Symmetry Plane - DONE

If you are using mirror brushes, a brush currently effects geometry on both sides of the symmetry plane. This can lead to unintuitive results, Especially since the brushes are calculated sequentially instead of in parallel. So it would be good to be able to clip the effect of the brush to only geometry on its side of the symmetry plane, or to calculate the areas of overlap together.

This is the feather option.

Scale spacing to stroke velocity

Increase the brush spacing for faster strokes

Stamp spacing scaled to brush diameter - DONE

The brush stamp spacing should be a percentage of the brush diameter, so that when scaling the brush will keep the relative spacing between stamps consistent. - DONE

Brush Strength scaled to brush stamp spacing - DONE

The brush strength per stamp should be scaled to stamp spacing so that increasing/decreasing the spacing gives the same height result for a sculpt. - DONE

Brush Strength a constant relative pixel height - DONE

Right now brush strength gives unpredectible results depending on how zoomed in or out. Having the brush a constant pixel height similar to how the radius is a constant pixel diameter would lead to greater predictability. - DONE

Option to have brush size/strength be blender unit size dependent instead of viewport size dependent - DONE

Option to have brush be blender unit size dependent instead of viewport size dependent, so that if you zoom out the brush it stays sized relative to the model actual size. - DONE

Performance

use SSE or other vector operations for sculpt math

probably most of the math done in the sculpt calculations can be done via SSE and other math accellerators

run mirror instances in seperate threads

right now the mirrors are done in order, the code could be reordered to have the mirrors executed in parallel.

reduced sampling radius - DONE

using a radius 2/3 the size of the brush radius reduces the number of faces tested by 200% (ie only one third of the data is processed (2/3_^2*pi versus 1^2*pi).

Note that the sampling radius for sculptris appears to be .8*radius of brush. It looks like zbrush allows the sample radius to be from 0 to 2 with .75 the default (0 samples the face under the radius).

speculative sampling

Since the brush stroke generally heads in the same direction (85-95% of samples are linearly directly in front of the last sample) and each daub has significant overlap we can frequently do calculations up to 4 daubs in advance. Ie for a typical daub with an update of 15% radius that is something like 80% overlap between the first and second circle, 50% between the first and third. Thus we could have a massive amount of calculation savings in the typical case.

topological mirroring

If mesh are topologically identical and we mirror only on a single axis we can just add the displacement to the mirrored geometry doing an almost 50% reduction in calculations. Or just mirror the rendered image data update.

additional subdivision of the space for small brush sizes

If a brush is small then it will likely only travel a small distance across a grid for a daub. Currently all data in the PBVH grid that it is in has to be calculated again and again with the vast majority of the data outside the brushes radius. A brush that is 1/10th the diameter of a grid edge could in the pathological case, end up doing calculations on 1596 times more data than is needed for each daub. Thus additional subdivision, even on demand, for small brushes can be a massive win.

I think this is pointless and adding code complexity for no good reason, it can be a massive win yes, but for a case that is already supposed to be very fast. If a few nodes can't be sculpted interactively with a small brush, something is already broken. --Brecht 14:06, 22 June 2010 (UTC)

Sampling for large brush areas

When calculating the brush area normal, only do additional calculations on every nth face within the brush radius.

Interface

UI naming

Please suggest items that should be renamed in the form


old name - new name

Shortcuts

Please suggest shortcuts and key combinations here

Fast keyboard brush switching

Add an operator that brings up a palette of all the brushes, showing name and perhaps a small icon. Typing while this palette is open will do a live search, narrowing down the selection of brushes based on the input (e.g. typing "pi" would show "Pinch" and "Pillow" brushes, but not the "Pumpkin" brush.) Add a default binding to this palette such as BKEY. Purpose of this suggestion is to quickly find the brush you want even if you have a large set of brushes. --nicholasbishop 18:16, 13 June 2010 (UTC)

Navigation

LMB drag in viewport for orbit view - DONE

Bring back the dragging on the viewport outside the model rotates the canvas.

Gustav Göransson #3

This is already in 2.5 trunk, it's somewhat non-obvious though. You need to edit the interface settings to turn on "ignore background click" for sculpt operator, and change leftmouse to not move the 3d cursor, but rather to rotate the view. So three changes total, I think. --nicholasbishop 18:19, 13 June 2010 (UTC)

Using more then one brush

LMB/RMB - Add/Sub Brush 1

HOLD shift + LMB/RMB - Add/Sub Brush 2

Tablet front/Eraser -Add/Sub Brush 1

HOLD shift + front/Eraser - Add/Sub Brush 2

FreeMind

Last sculpt point as pivot

Bring back the rotation around a pivot (last sculpt point).

Snap view to nearest orthographic view

A key that will snap to the nearest orthographic view

Display

Disable unneeded UI items - DONE (USE ONLY RENDER)

Disable object center, 3D cursor, xyz axes, and grid floor when in sculpt mode. Also disable right mouse moving of objects when in sculpt mode.

Note that by enabling the display setting 'only render' this can already be accomplished.

-But it would be nice if Only Render was enabled automatically upon entering sculpt mode, as this is what most users would want nearly all of the time.

Monacle for viewing zoomed in part of mesh without having to zoom

A monacle (a small zoom circle) beside the brush that shows greater detail, and follows the brush location so that the user can be zoomed out somewhat but still see the location and response of detail to a stroke with precision.

Better and more precise feedback when resizing the brush with F key

When changing the brush values with F key, display a small field with values next to the brush / mouse for clearer and more precise feedback on how big/strong a brush is, without having to look at the side panels. The field is only used to inform the user, there's no clicking on it or anything, as you're already changing the values with the mouse / tablet movement. http://www.pasteall.org/pic/show.php?id=3758

Panel

Drag and drop textures to brush texture

The ability to drag images, singularly, a group, or folder of images to the brush texture selector to have them loaded

MichaelW #5

Have size and strength sliders update as you scale the brush

Have interactive update of the brush size and strength as they are resized via FKey or via pen pressure (ie see how scale is updated in NKey panel as you interactively scale the object).

Brush and Texture Preset Selection Sets

A grouping of textures and or brushes, so you can load a bunch of related brush or texture presets at one time. Ie load all of your cloth texturing/brush presets, load all of your skin texturing presets, etc.

MichaelW #5

Picture to select brush - DONE

It would be good to have the Brush selector changed to be like the texture selection method.

Picture to select falloff

It would also be good to have the falloff curve selection to be like the texture selection method.

Unified Brush Settings - DONE

By unified brush settings I mean they are numerically linked so if Drawn brush is at 0.75 strength all the other brushes will be too, etc. This should work for strength, size, and color.

Brush UI simplification

declutter most brush settings to secondary location...(edit brush)

MichaelW #7

Brush

Display the brush rotated along the surface normal

Meaning the flat brush circle as a 3d circle rotated along the surface normal under the brush. For visual feedback for when e.g. 'original normal' is used. To previsualize the plane one is going to get.

Display brush texture conforming to model contour

Same idea as above but for the brush texture instead of just the radius.

Gustav Göransson #5

Visual Feedback of texture size and pressure

Probably good to have an icon either the brush itself or in the panel that indicates what the pressure, brush size, and brush rotation, and possibly barrel roll are as feedback for pen tablet users.

Real-time preview of the brush displacement on-mouse-over

An option to see how the brush will affect the surface (like the actual drag-and-drop option) when the mouse is over the mesh, allowing to preview the brush displacement while we tweak the brush settings without making any real change to the mesh.

Display a circle with brush conforming to model contour - DONE

For visual feedback on where the brush is possibly project the brush radius onto the model similar to sculptris http://www.pasteall.org/pic/show.php?id=3532

Gustav Göransson #4

Eclectiel #6

Shiftkey for smoothing while in other brush modes - DONE

It would be useful to be able to quickly toggle smooth on and off while sculpting and keep the same brush after toggling it.

Other

Sculpt On multiple objects at once

If multiple objects are selected then they should all enter sculpt mode, and the artist should be able to do a continuous stroke across them.

Eclectiel #9

Tools

Slide

A slide brush would slide the geometry along the surface of the mesh but keep the original brush topology.

Smooth Directional

Smooths using only infomation along the stroke direction. So a face in front or behind the face is used to determine the faces smoothness, but not to the left of right.

Smooth perpendicular

Only smooths faces that are at a high angle relative to a neighboring face.

Smooth Cavity

A combination of fill and smooth. Ignore peaks and only smooths valleys.

Smooth Peaks

A combination of scrape and smooth. Ignore valleys and only smooth peaks.


Magnify - Is magnify same as Blob

Draw+Pinch Inverse

Blob might actually be Clay+Pinch Inverse

Smooth

  • its kinda slow now

Draw - DONE

Pinch/Expand - DONE

Pinch moves vertices within the brush radius towards the brush center

Expand moves vertices within the brush radius away from the brush center


Crease - DONE

Draw Inverse+Pinch

Inflate - DONE

Grab - DONE

  • With x (or y,z) symmetry ON, grab tool have double strength, when you move vertexes near middle of symmetry plane. Would be nice to have option to compensate for that
  • comment from LetterRip - that should be fairly easily doable just do a test if brushes overlap, and if they do, then for each face in the overlap region cut strength in half.
  • It's hard do describe, but in blender Grab tool behaves like this 'translate vertexes in range of grab tool from point A to B'. But what I would prefer is how it's done in Zbrush or Sculptris - it feels more like you deform rubber or clay. I would suggest you to try it yourself. For me its easier, especially in early stages, to define basic shapes.
  • comment from LetterRip - I suspect that for ZBrush and Sculptris, that each vertex is assigned a max travel distance based on its distance from the brush center. That should be doable.

ideas for grab brush - grab for 2 pixels drop for two pixels

or possibly shrink the pixel radius of the brush for every pixel moved or two pixels moved

Also perform a smooth or relax operation on the faces remaining within the radius after each step so that the spacing after a grab is kept even.


Okay here is a formula to try

  • if(distance_from_brush_start_center < 2*radius_length)
  • dist_move_vert = ((3*radius_length-vert_distance_from_brush_start_center)/3)*vector_brush_start_to_current_brush_location

bug - when mirrored and brushes overlap the axis only one brush side effects the verts - FIXED

this bug probably affects multiple brushes but is most noticable with grab. Only the side of the mesh for which the pen is on affects mesh that should be effected by both sides of the mirror.

bug - tearing of the mesh during grabs - FIXED

large grabs tend to leave the mesh is a torn state

Snake Hooks - DONE

bug - perspective mode results in explosion when brush is perpendicular to view - FIXED

if you drag the brush till it is perpendicular to view and then begin to drag the brush back towards the front of the view the vertices explode out of the viewport.

bug - behaviour inconsistency - FIXED

This brush seems to have extremely inconsistent behaviour based on the mesh density, brush radius, zoom of the view, and whether the brush is in perspective or orthographic mode.

bug - when the mouse moves beyond the mesh the mesh is dropped - FIXED

if you have initiated a grab moving beyond the outside of the mesh results in the brush dropping the mesh and a new stroke needing to be initiated.

Thumb - DONE

Nudge - DONE

Layer - DONE

  • Bug - layer brush doesn't work on multires
  • It seems that enabling pen strength sensitivity doesn't work. Brush curve don't work too (but i don't use this brush anyway :).

Flatten/Contrast - DONE

Flatten moves faces within the brush radius towards the area normal plane - the place calculated by averaging the normals of all faces within the brush radius.

Contrast moves faces within the brush radius away from the area normal plane

Clay - DONE

Fill/Deepen - DONE

Fill takes faces below the plane defined by the average face normals within the brush radius, and moves faces towards that plane

Deepend takes faces below the plane and moves those faces away from the plane.

WAX - DONE

Scrape/Enhance Peaks - DONE

Scrape takes vertices above the plane defined by the average of the face normals and moves those vertices towards the plane.

Enhance peaks takes vertices above the plane defined by the average of the face normals and moves those vertices away from the plane.

Crease - DONE

The brush pushes down in center has a very sharp falloff, and very slight pinch.

  • I feel like pinching is to strong now, especially for hight strength value. At value close to 1 vertexes start to snap to brush center. IMO brush strength should not affect pinch factor or should affect is in more subtle way (eg strength 1 should translate to power of 1/2 of pinch factor) - Fixed - joseConseco
  • also is it possible to assign sharp brush curve to crease by default? Right now I have to change it every time from smooth to sharp and then back to smootch for other brushes. Maybe assigning brush curve for each brush individually would solve this? - Fixed - joseConseco

Pull - Same as nudge -DONE

Like grab, but updates which vertices are being pulled as the brush moves. If a pull stroke went from left to right on something that looked like ||||| it would look like ))))) as opposed to the current grab brush, which would make ||||| look like )||||

Last stroke path's tweaking brushes.

Brushes that allow to tweak the shape of the last stroke. Mockup: http://img38.imageshack.us/img38/7095/laststroketweakbrushes.png

Smooth Scale

it would be very helpful to have some kind of uniform-nonuniform scale transform tool. This would work based on the brush size. Basically the mesh area under the brush area can be scaled up - down or squeezed after the first click down. The scaling operation would be active until the mouse click is released.(kursad)

Brush Options

Stencil overlay on the viewport

The ability to overlay a image or texture on the viewport, and to scale, translate, and rotate the image to use it for sculpting and texturing. stencils in Zbrush stencils in Mudbox

Gustav Göransson #1 Jeepster #2

Tiling of stencil overlay image - DONE

Related to the above the ability to tile any image use for stenciling

Wrap of stencil overlay image around a 3d object -DONE

Related to the above, the ability to wrap a stencil around a 3d object (shown in the Zbrush stencil demonstration video above)

lattice deformation of stencil/grid

The Ability to do a lattice deformation of a texture used for stenciling. Also might be useful for brushes also.

Sample Radius -DONE

Set plane angle

this would override the sampled angle, could be set using the same way that ambient viewport lights are set (dragging a point on a sphere), possibly with a display for the euler angles.

Max travel distance - DONE

Limit the effect of the planar related brushes to faces that are less than a certain height above/below the plane. Note that the height could be changed interactively similar to a anchor brush. Done this is the trim brush.

Gravity

Multiple Stamps

This option would repeat a 'stamp' of the brush while the brush is moving until a threshold distance is reached, then a new stamp would be done at the current brush location

Stamp Sequence

This option would stamp a different image in a sequencer. Ie it could be letters in an alphabet, symbols, a tic tac toe pattern, etc. The sequencers could either be ordered or randomly selected. The spacing could either be predetermined or within a random range. Ie it could be a bunch of different flowers. Also other properties could be randomized and it could be used with a spray option with random rotation, scale, location, flip horizontal/vertical.

Stamp Snapping

Option to allow stamps to 'snap to grid'

Brush switching based on pen pressure - partially DONE

The ability to switch what brush tool or brush options are enabled based on pressure. So you can use say a brush with a curvy aspect at low pressures, and flatten aspect on higher pressure. This option exists for smooth only currently.

Set plane depth offset - DONE

the depth offset should be possibly a percentage of the strength, or max strength setting, how deep or shallow a cut plane can be - DONE

MichaelW #6

Radial Symmetry - DONE

Allow sculpt strokes to be spaced around the object in a radial pattern instead of constraining to xyz plane mirroring.

Keep Original Plane - DONE

This is currently called original normal

Rotation (Rake) - DONE

Spacing - DONE

Have the brush spacing based on a percentage of the brush radius, so that scaling the brush and zooming the view keeps the same relative spacing. DONE

Anchor Edge - DONE

Direction - DONE

Allow the view vector to be sculpted towards - DONE

Jitter

Jitter (or Scattering) allows you to set the distance off the cursor that you want individual instances of the brush tip to occur. Would be adjustable by 'Scatter' option - Distance that each individual application of the brush can deviate from the exact path of your brush stroke.

  • it may have possibly option 'Both Axes'. If Both Axes is selected, applications of the brush will stray both horizontally and vertically from your brush stroke; if unselected, applications will stray only vertically.

Stroke Options

Stroke Direction Smoothing

Stroke Pressure Smoothing

Constrain to path

Straight path

Multires Related

Delete lower for multires

In 2.49b and previous you could 'delete lower' on multires. In effect this splits the multires into two multires modifiers and applys the lower modifier to the base mesh. This is very useful and would be good to have back.

Have multires affect the base mesh - DONE

In 2.49b and previously changes made by sculpting were propogated to the base mesh. Thus large deformations to the mesh at a high level would be reflected in the base mesh. This would keep the base mesh appropriate for baking high res as a normal map as the base mesh. In 2.5 this option was lost.

Fix is in the multires branch.

allow edit mode for layers higher than the base mesh

In 2.49b you could enter edit mode for multires layers above the base mesh, and use the editmesh tools for tweaking the location of vertices with the greater control allowed with edit tools. It would be nice to have this ability back.

sculpting layers

allow sculpting changes to be made in a layer that can be turn on/off and which can have intensity scaled. It could work like the displaement modifier works now, but editable with the sculpt tools. Should work with morph and correction targets etc.

MichaelW #3

Gustav Göransson #9

Eclectiel #4

editable multires with edits not destructive to higher layers

right now if you edit the base mesh of an object in order to allow higher detail on upper layers, the effect can cause massive changes in your already sculpted geometry. It would be desirable to instead have the sculpt shape retained in higher levels and have the edited base mesh conform to the higher level geometry. Possibly only allow adding of loops and other things for which are easier to predict/project changes for.

Eclectiel #5

have mesh changes propogated to fast navigate mesh

Right now the fast navigate mesh remains unchanged when higher level changes are made, it would be good to propogate the changes to it.

Other

Resymmetrize

An option to update the mesh so that both sides of a topologically symmetrical object match - doing either match left, match right, or average

MichaelW #2

Gustav Göransson #7

ndee #4

Eclectiel #2

Transfer sculpts between objects

easy transfer of one mesh sculpt to another

MichaelW #8

Topological Based Mirroring

have mirroring be based on mesh topology instead of object space geometry.

Allow sculpting to work with modifier stack - DONE

if a model is posed or has other modifiers allow sculpting to work on it.

MichaelW #1

Allow matcaps for shading - DONE

easy matcap visualisation - the GLSL code needs to be made to work with VBOs so that it can give decent speed though.

MichaelW #9

Gustav Göransson #10

ndee #10

I'm opposed to this, we're not going to add yet another material system and make things more complicated, better fix things properly. --Brecht 14:15, 22 June 2010 (UTC)

Cavity shader

To be able to use with matcaps. Allows for easier visualization of valleys, bumps, and details.

Jeepster #1

Improved baking efficiency

Gustav Göransson #2

Eclectiel #8

GLSL bump map painting - DONE

Has been done in the Paint SoC branch MichaelW #4

Gustav Göransson #6

ndee #5

Eclectiel #3

Screen space ambient occlusion

MichaelW #10

Gustav Göransson #8

ndee #8

Increase GLSL Viewport Speed

If Matcaps will be added, the GLSL Viewport needs to be improved. Also "fast navigate" should be implemented

ndee # 9

Eclectiel #10


Sticky Keys

It would be nice to have sticky keys-shortcuts. For example when I press and hold "g" while I am in draw mode could activate the grab tool temporarily, and it would deactivate when I release the key("g"), it is similar to brush sizing key("f").

kursad #10


One-click element masking

Being able to mask a full element (each piece of connected geometry) with one click. You could add /remove an element from the mask, or you could designate one element to be the only available for editing. This way, when having characters with cloth and accessories, each accessory can be quickly "isolated" to sculpt it without affecting the other elements.

Resources

patch for paint tilt

http://www.pasteall.org/13677/c

script to make black-white brushes from objects

here is a little prototype script to convert objects directly to brush depth textures:(it currently changes some scene settings and doesn't put them back so use only with test files! ) http://www.pasteall.org/13537/python

just run the script to register it and then search for the 'convert to brush' operator. Select object/s which you want to convert to alpha, then run the operator. It just renders an black-white image, and you have to save it afterwards, but still saves some time with setup of the rendering. Currently works only in z direction(normalizes the bounding box to certain resolution and depth of the range of image, so you always get image from complete black to total white). When in the future (in my dream) sculpting and texturing get somehow connected and enable you to paint/sculpt simultaneously color/specularity/depth, It would be lovely to have such a tool for all these channels (which I could co-develop).

old patch which added more blending modes to texpaint

It has also 3 experimental normal map painting modes which correctly mix normals, so if you have a normalmap brush, it seems to work. But after a while, you always get an idea of the fact that it's not correct, only way to get correct nmap is to paint bump and convert the painted areas on the fly. patch: http://plant.ffa.vutbr.cz/~novak/dwnflz/relief/blendmodes17.txt sample picture: http://plant.ffa.vutbr.cz/~novak/dwnflz/relief/nmappaint.jpg

test meshes

test blend - this uses the head from http://cgsculpt.org/sculpt/viewtopic.php?f=24&t=262

I've set up the defaults to be conducive to getting good performance. Head is on layer 1, spherized cube on 2, and a plane on 3. http://wiki.blender.org/uploads/1/19/Sculpt_test_objects.blend


ndee comic female base mesh http://dl.dropbox.com/u/1250100/Blender/BaseMesh.blend

jeepster human base mesh http://speedmodeling.org/smcfiles/Jeepster%5B%5D_human.blend

jeepster quadruped cow base mesh http://speedmodeling.org/smcfiles/Jeepster%5B%5D_cow.blend

ape head base mesh http://speedmodeling.org/smcfiles/Jeepster%5B%5D_apeHead.blend

seanJM base mesh http://blenderartists.org/forum/showthread.php?t=170349

piladnovak cow and bull base mesh http://plant.ffa.vutbr.cz/~novak/dwnflz/krava_a_byk_dwn.blend

reconstruct lower subd levels script

reconstruct lower subd levels http://blenderartists.org/forum/showthread.php?t=135617

UI Mockups

http://gustavgoransson.com/temp/blender_ui/sculpt_mockup.jpg


UI:

http://img59.imageshack.us/img59/1930/sculptuifinal.png

http://img193.imageshack.us/img193/9256/quicksettingsresize.png

http://img229.imageshack.us/img229/7354/brushpresetsminimizing.png

original SVG to start mockups from: http://www.4shared.com/file/GdFVavNl/Sculpt_UI_SVG.html

Based off of the above ui mockups, here is a variation that colorizes the background for faster brush identification http://www.pasteall.org/pic/show.php?id=3932


Another alternative for brush thumbs coloring:

http://img718.imageshack.us/img718/5530/brushescoloring.png


Proposal for arranging the most used brushes:

http://img25.imageshack.us/img25/8450/mostusedbrushes.png


Falloff maps for custom brushes:

http://img820.imageshack.us/img820/3824/brushfalloffmaps.png


UI Options Review

First impression: many cool new options, but UI is getting out of hand, way too many controls... needs to be cleaned up if this is going to be merged. These are relatively easy to fix and are mostly about following Blender conventions. --Brecht 14:44, 22 June 2010 (UTC)

  • Brecht, a quick overview - we are aware the UI needs improvement and is 'out of hand', some options are for tweaking while testing only. Other stuff is planned to be reorganized. Other stuff is only for testing. LetterRip 18:23, 22 June 2010 (UTC)

Brush Panel

Use Blender Units: make this icon next to size button? - done

Label of size property should still be Size, not the name of the unit. - done

Unit support could be added like there exists for e.g. degrees, but seems not really necessary.

Strength tooltip: amount of pressure on the brush? is confusing with pressure sensitivity. -done

Strength multiplier: remove this and use soft limits instead, or just get the strength scale right. - done

Autosmooth: try to avoid this kind of hacky feature, better not to have this in my opinion. - disagree

This allows us to do 'polish' and similar brushes, which combine brushes based on pressure.

Accumulate: I added this as a kind of compatibility option, probably can just be removed? - disagree

it is useful for various brushes.

Unlimited clay: option is in the wrong location, is a sculpt option, not a brush option, move to Options panel. - done

Unlimited clay crashes when used with multires.

Texture Panel

Depth Offset: give this positive values, range -1 .. 0 is strange. - done

Perhaps it should be 'midlevel' as with displacement? LetterRip 18:23, 22 June 2010 (UTC)

Scale: don't use percentages here, just show a float like other places in Blender.

Also just call them X and Y scale, and remove the global scale. - done

If you want to easily scale both, modify the UI code so both can be scaled at the same time, this would be useful in other places too.

the chain link in the gimp is a nice way to represent this LetterRip 18:23, 22 June 2010 (UTC)

Center: also just label buttons themselves X: and Y:, and rename to Offset for consistency. - done

Show Overlay only works when over the mesh, it should always show, especially for tweaking the settings.

I read this is intentional, but this kind of neurotic redrawing is not a good idea.

    • We discussed this via email, but he is uncertain how to seperate it from the cursor drawing code. A hint on where and how this could live codewise from cursor would be good. LetterRip 18:23, 22 June 2010 (UTC)

Show overlay also draws stuff when there is no texture selected. - FIXED

It would be nice if brush stroke was mapped from brush point of view (local coordinate system?)

  • and not like now - from user point of view (here is example of problem caused by current mapping - http://i26.tinypic.com/15mmyxg.gif). Maybe it would even help in vertex paint mode to prevent seams (like in this video: http://vimeo.com/13198222 by Nicholas Bishop). I tested this in zbrush and it seems they use brush 'point of view' for texture painting and sculpting - it feels much more 'natural' than current blender brush mapping. I'm not sure if this request should go to general brush options or texture section so I putted it in here - JoseConseco

Angle Jitter - DONE

  • Allows each application of the brush within a brush stroke to be rotated to a slightly different alignment. Helps to hide repetition in texturing.

Stroke Panel

Don't show/hide options based on what is enabled, but draw them greyed out them, following UI conventions.

Rake, perhaps this should be in the Texture panel - done

    • Agreed with all the above. LetterRip 18:23, 22 June 2010 (UTC)

Airbrush, Space, and drag Dot are mutually exclusive should be reflected in UI

Original Normal + Direction. This should work the other way around

i.e. depending on the direction you choose, there could an original normal option. To simplify you could also just have it as directions: X, Y, Z, View, Average Normal, Original Normal, and remove the boolean option.

Agreed - moving Original Normal to the selection menu is probably best LetterRip 18:23, 22 June 2010 (UTC)

Adaptive strength reduces the strength a lot, should be renormalized somehow to get it similar

Do we need this option by the way, seems one of those options to work around deeper problems, that no user will think to enable anyway?

Adaptive strength should be enabled by default - basically the idea is to compensate for the the unwanted strength losses when you increase a brushes spacing. The only brush you generally might not want adaptive strength on is the smooth brush. LetterRip 18:23, 22 June 2010 (UTC)

Options Panel

Brush color: should be in user preferences, these are really theme colors.

    • These are currently a per brush color, and need to be modifiable easily when adding a new brush.LetterRip 15:46, 30 June 2010 (UTC)

Use OpenMP: definitely should be in user preferences - done

Show Brush: as far as I'm concerned, also move to user preferences - done

or remove option and enable by default

Show Brush on Surface: perhaps also user preference, not sure

    • Right now show brush on surface is using stencil buffer which you seemed to imply might not be acceptable - if you could look at this code and maybe suggest an alternative it would be great to keep this in. LetterRip 18:23, 22 June 2010 (UTC)

Fast Navigate: maybe this too? - done but disagree

Can be enabled by default at least, and only show if there is a multires modifier.

    • The problem with fast navigate by default is that it really is only useful once you have a certain mesh density. Also it should probably use the preview level as the fast navigate level. Note that this is an old feature LetterRip 18:23, 22 June 2010 (UTC)

Feedback from artists is that it needs to be readibly avaialable since you only want it when needed. So we should probably move it back.

I agree this makes more sense out of the preferences. Perhaps though it should be in the multires modifier UI, since it's only used with multires? --nicholasbishop 00:25, 10 July 2010 (UTC)
Agreed LetterRip 04:48, 10 July 2010 (UTC)

Other

Brush is hidden when not over surface, don't do this kind of thing, maybe always show and just fade it out a bit when not over surface? - done

Show Brush on Surface is too hard to see when it is small (e.g. 10 pixels).

Don't start tooltips with "The" or "A", so use "Multiplier factor" instead of "A multiplier factor" - done

Make use of layout.separator() to ensure related items are grouped, now there is no spacing between options.

Patch Review

I've only started looking at the patch, so I'll update this list as I move along. --nicholasbishop 03:06, 9 July 2010 (UTC)

  • There are some warnings that should be fixed (I think some have already been addressed in more recent commits, but in any case be sure to compile with a fairly high warning level to avoid problems. (wm_draw.c, paint_stroke.c, sculpt.c)
  • wmBrushStrokeMode enum should probably be changed to go into brush.h or paint_intern.h, I don't see any need offhand to put it in windowmanager.
I just put it with the radial control enums since they were similar. Moved to paint_intern.h.
  • For proxy nodes, I think this can be simplified to one proxy node per modified node? Since the displacements are just added up at the end anyway, no need to keep them in separate layers.
  • In sculpt_update_cache_variants(), the grab/nudge/snakehook/thumb deltas should be refactored to not have so much duplicated code
There are subtle differences between the way each one updates the grab delta. Combining them conceals these differences. It could potentially be tightened up some but changes to one does not necessarily mean that all should change and the code would become harder to understand.
  • Same for sculpt_combine_proxies, the two main blocks of code are almost identical
Yes, but the different code is in the inner loop where I'd rather not put an if statement that doesn't change which branch it takes.
  • calc_area_normal_and_flatten_center(), calc_flatten_center(), calc_area_normal(): again, would be nice to avoid all the duplication
These could be a single function but it would have an additional 6 or 8 'if' statements.
    • I abhor duplication and these duplications make my skin itch, however I am not sure at this time how to make the right trade off between duplication and having clear easy to debug code (even if I have to remember its duplicated somewhere), or between duplication and not putting constant branches into inner loops, or between duplication and not looping over data multiple times.
    • bottom line is I'll figure out some way to fix it but I'm hoping I can keep the qualities the duplicate code has that made me duplicate it in the first place.
I'm skeptical that one extra if/switch statement will cause much performance loss, especially if it's branching based on the current sculpt brush, then every iteration of the loop will take the same branch anyway (easy to predict.) At any rate, code clarity trumps minor performance concerns here; better to make the code readable and then profile to see if these loops are actually a bottleneck. As for your concern about the readability of merging together the delta code, just comment well and that should be OK. --nicholasbishop 15:05, 14 July 2010 (UTC)