Blender V2.61 - r43446
Classes | Typedefs | Enumerations | Functions

sculpt.c File Reference

#include "MEM_guardedalloc.h"
#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "BLI_utildefines.h"
#include "BLI_dynstr.h"
#include "BLI_ghash.h"
#include "BLI_pbvh.h"
#include "BLI_threads.h"
#include "BLI_editVert.h"
#include "BLI_rand.h"
#include "DNA_meshdata_types.h"
#include "DNA_node_types.h"
#include "DNA_object_types.h"
#include "DNA_scene_types.h"
#include "DNA_brush_types.h"
#include "BKE_brush.h"
#include "BKE_cdderivedmesh.h"
#include "BKE_context.h"
#include "BKE_depsgraph.h"
#include "BKE_key.h"
#include "BKE_library.h"
#include "BKE_mesh.h"
#include "BKE_modifier.h"
#include "BKE_multires.h"
#include "BKE_paint.h"
#include "BKE_report.h"
#include "BKE_lattice.h"
#include "BKE_node.h"
#include "BIF_glutil.h"
#include "WM_api.h"
#include "WM_types.h"
#include "ED_sculpt.h"
#include "ED_screen.h"
#include "ED_view3d.h"
#include "ED_util.h"
#include "paint_intern.h"
#include "sculpt_intern.h"
#include "RNA_access.h"
#include "RNA_define.h"
#include "RE_render_ext.h"
#include "GPU_buffers.h"
#include <math.h>
#include <stdlib.h>
#include <string.h>

Go to the source code of this file.

Classes

struct  StrokeCache
struct  SculptBrushTest
struct  SculptSearchSphereData
struct  SculptRaycastData

Typedefs

typedef enum StrokeFlags StrokeFlags
typedef struct StrokeCache StrokeCache
typedef struct SculptBrushTest SculptBrushTest

Enumerations

enum  StrokeFlags { CLIP_X = 1, CLIP_Y = 2, CLIP_Z = 4 }

Functions

void ED_sculpt_force_update (bContext *C)
struct MultiresModifierData * sculpt_multires_active (Scene *scene, Object *ob)
static int sculpt_has_active_modifiers (Scene *scene, Object *ob)
static int sculpt_modifiers_active (Scene *scene, Sculpt *sd, Object *ob)
static int sculpt_get_redraw_rect (ARegion *ar, RegionView3D *rv3d, Object *ob, rcti *rect)
void sculpt_get_redraw_planes (float planes[4][4], ARegion *ar, RegionView3D *rv3d, Object *ob)
static void sculpt_brush_test_init (SculptSession *ss, SculptBrushTest *test)
static int sculpt_brush_test (SculptBrushTest *test, float co[3])
static int sculpt_brush_test_sq (SculptBrushTest *test, float co[3])
static int sculpt_brush_test_fast (SculptBrushTest *test, float co[3])
static int sculpt_brush_test_cube (SculptBrushTest *test, float co[3], float local[4][4])
static float frontface (Brush *brush, const float sculpt_normal[3], const short no[3], const float fno[3])
static float overlapped_curve (Brush *br, float x)
static float integrate_overlap (Brush *br)
static void flip_coord (float out[3], float in[3], const char symm)
static float calc_overlap (StrokeCache *cache, const char symm, const char axis, const float angle)
static float calc_radial_symmetry_feather (Sculpt *sd, StrokeCache *cache, const char symm, const char axis)
static float calc_symmetry_feather (Sculpt *sd, StrokeCache *cache)
static float brush_strength (Sculpt *sd, StrokeCache *cache, float feather)
static float tex_strength (SculptSession *ss, Brush *br, float point[3], const float len, const float sculpt_normal[3], const short vno[3], const float fno[3])
static int sculpt_search_sphere_cb (PBVHNode *node, void *data_v)
static void sculpt_clip (Sculpt *sd, SculptSession *ss, float *co, const float val[3])
static void add_norm_if (float view_vec[3], float out[3], float out_flip[3], float fno[3])
static void calc_area_normal (Sculpt *sd, Object *ob, float an[3], PBVHNode **nodes, int totnode)
static void calc_sculpt_normal (Sculpt *sd, Object *ob, float an[3], PBVHNode **nodes, int totnode)
static void neighbor_average (SculptSession *ss, float avg[3], const unsigned vert)
static void do_mesh_smooth_brush (Sculpt *sd, SculptSession *ss, PBVHNode *node, float bstrength)
static void do_multires_smooth_brush (Sculpt *sd, SculptSession *ss, PBVHNode *node, float bstrength)
static void smooth (Sculpt *sd, Object *ob, PBVHNode **nodes, int totnode, float bstrength)
static void do_smooth_brush (Sculpt *sd, Object *ob, PBVHNode **nodes, int totnode)
static void do_draw_brush (Sculpt *sd, Object *ob, PBVHNode **nodes, int totnode)
static void do_crease_brush (Sculpt *sd, Object *ob, PBVHNode **nodes, int totnode)
static void do_pinch_brush (Sculpt *sd, Object *ob, PBVHNode **nodes, int totnode)
static void do_grab_brush (Sculpt *sd, Object *ob, PBVHNode **nodes, int totnode)
static void do_nudge_brush (Sculpt *sd, Object *ob, PBVHNode **nodes, int totnode)
static void do_snake_hook_brush (Sculpt *sd, Object *ob, PBVHNode **nodes, int totnode)
static void do_thumb_brush (Sculpt *sd, Object *ob, PBVHNode **nodes, int totnode)
static void do_rotate_brush (Sculpt *sd, Object *ob, PBVHNode **nodes, int totnode)
static void do_layer_brush (Sculpt *sd, Object *ob, PBVHNode **nodes, int totnode)
static void do_inflate_brush (Sculpt *sd, Object *ob, PBVHNode **nodes, int totnode)
static void calc_flatten_center (Sculpt *sd, Object *ob, PBVHNode **nodes, int totnode, float fc[3])
static void calc_area_normal_and_flatten_center (Sculpt *sd, Object *ob, PBVHNode **nodes, int totnode, float an[3], float fc[3])
static void calc_sculpt_plane (Sculpt *sd, Object *ob, PBVHNode **nodes, int totnode, float an[3], float fc[3])
static void point_plane_project (float intr[3], float co[3], float plane_normal[3], float plane_center[3])
static int plane_trim (StrokeCache *cache, Brush *brush, float val[3])
static int plane_point_side_flip (float co[3], float plane_normal[3], float plane_center[3], int flip)
static int plane_point_side (float co[3], float plane_normal[3], float plane_center[3])
static float get_offset (Sculpt *sd, SculptSession *ss)
static void do_flatten_brush (Sculpt *sd, Object *ob, PBVHNode **nodes, int totnode)
static void do_clay_brush (Sculpt *sd, Object *ob, PBVHNode **nodes, int totnode)
static void do_clay_tubes_brush (Sculpt *sd, Object *ob, PBVHNode **nodes, int totnode)
static void do_fill_brush (Sculpt *sd, Object *ob, PBVHNode **nodes, int totnode)
static void do_scrape_brush (Sculpt *sd, Object *ob, PBVHNode **nodes, int totnode)
void sculpt_vertcos_to_key (Object *ob, KeyBlock *kb, float(*vertCos)[3])
static void do_brush_action (Sculpt *sd, Object *ob, Brush *brush)
static void sculpt_flush_pbvhvert_deform (Object *ob, PBVHVertexIter *vd)
static void sculpt_combine_proxies (Sculpt *sd, Object *ob)
static void sculpt_update_keyblock (Object *ob)
static void sculpt_flush_stroke_deform (Sculpt *sd, Object *ob)
static void calc_brushdata_symm (Sculpt *sd, StrokeCache *cache, const char symm, const char axis, const float angle, const float UNUSED(feather))
static void do_radial_symmetry (Sculpt *sd, Object *ob, Brush *brush, const char symm, const int axis, const float feather)
static void sculpt_fix_noise_tear (Sculpt *sd, Object *ob)
static void do_symmetrical_brush_actions (Sculpt *sd, Object *ob)
static void sculpt_update_tex (const Scene *scene, Sculpt *sd, SculptSession *ss)
void sculpt_update_mesh_elements (Scene *scene, Sculpt *sd, Object *ob, int need_fmap)
static int sculpt_mode_poll (bContext *C)
int sculpt_poll (bContext *C)
static const char * sculpt_tool_name (Sculpt *sd)
static void sculpt_cache_free (StrokeCache *cache)
static void sculpt_init_mirror_clipping (Object *ob, SculptSession *ss)
static void sculpt_update_cache_invariants (bContext *C, Sculpt *sd, SculptSession *ss, wmOperator *op, wmEvent *event)
static void sculpt_update_brush_delta (Sculpt *sd, Object *ob, Brush *brush)
static void sculpt_update_cache_variants (bContext *C, Sculpt *sd, Object *ob, struct PaintStroke *stroke, PointerRNA *ptr)
static void sculpt_stroke_modifiers_check (bContext *C, Object *ob)
static void sculpt_raycast_cb (PBVHNode *node, void *data_v, float *tmin)
int sculpt_stroke_get_location (bContext *C, struct PaintStroke *stroke, float out[3], float mouse[2])
static void sculpt_brush_init_tex (const Scene *scene, Sculpt *sd, SculptSession *ss)
static int sculpt_brush_stroke_init (bContext *C, wmOperator *op)
static void sculpt_restore_mesh (Sculpt *sd, SculptSession *ss)
static void sculpt_flush_update (bContext *C)
static int over_mesh (bContext *C, struct wmOperator *op, float x, float y)
static int sculpt_stroke_test_start (bContext *C, struct wmOperator *op, wmEvent *event)
static void sculpt_stroke_update_step (bContext *C, struct PaintStroke *stroke, PointerRNA *itemptr)
static void sculpt_brush_exit_tex (Sculpt *sd)
static void sculpt_stroke_done (bContext *C, struct PaintStroke *UNUSED(stroke))
static int sculpt_brush_stroke_invoke (bContext *C, wmOperator *op, wmEvent *event)
static int sculpt_brush_stroke_exec (bContext *C, wmOperator *op)
static int sculpt_brush_stroke_cancel (bContext *C, wmOperator *op)
static void SCULPT_OT_brush_stroke (wmOperatorType *ot)
static int sculpt_set_persistent_base (bContext *C, wmOperator *UNUSED(op))
static void SCULPT_OT_set_persistent_base (wmOperatorType *ot)
static void sculpt_init_session (Scene *scene, Object *ob)
static int sculpt_toggle_mode (bContext *C, wmOperator *UNUSED(op))
static void SCULPT_OT_sculptmode_toggle (wmOperatorType *ot)
void ED_operatortypes_sculpt (void)

Detailed Description

Definition in file sculpt.c.


Typedef Documentation

typedef struct StrokeCache StrokeCache
typedef enum StrokeFlags StrokeFlags

Enumeration Type Documentation

Enumerator:
CLIP_X 
CLIP_Y 
CLIP_Z 

Definition at line 174 of file sculpt.c.


Function Documentation

static void add_norm_if ( float  view_vec[3],
float  out[3],
float  out_flip[3],
float  fno[3] 
) [static]

Definition at line 780 of file sculpt.c.

References add_v3_v3(), and dot_v3v3().

Referenced by calc_area_normal(), and calc_area_normal_and_flatten_center().

static float brush_strength ( Sculpt *  sd,
StrokeCache *  cache,
float  feather 
) [static]
static void calc_area_normal ( Sculpt *  sd,
Object *  ob,
float  an[3],
PBVHNode **  nodes,
int  totnode 
) [static]
static void calc_area_normal_and_flatten_center ( Sculpt *  sd,
Object *  ob,
PBVHNode **  nodes,
int  totnode,
float  an[3],
float  fc[3] 
) [static]
static void calc_brushdata_symm ( Sculpt *  sd,
StrokeCache *  cache,
const char  symm,
const char  axis,
const float  angle,
const float   UNUSEDfeather 
) [static]
static void calc_flatten_center ( Sculpt *  sd,
Object *  ob,
PBVHNode **  nodes,
int  totnode,
float  fc[3] 
) [static]
static float calc_overlap ( StrokeCache *  cache,
const char  symm,
const char  axis,
const float  angle 
) [static]
static float calc_radial_symmetry_feather ( Sculpt *  sd,
StrokeCache *  cache,
const char  symm,
const char  axis 
) [static]

Definition at line 501 of file sculpt.c.

References angle(), calc_overlap(), i, M_PI, and Sculpt::radial_symm.

Referenced by calc_symmetry_feather().

static void calc_sculpt_normal ( Sculpt *  sd,
Object *  ob,
float  an[3],
PBVHNode **  nodes,
int  totnode 
) [static]
static void calc_sculpt_plane ( Sculpt *  sd,
Object *  ob,
PBVHNode **  nodes,
int  totnode,
float  an[3],
float  fc[3] 
) [static]
static float calc_symmetry_feather ( Sculpt *  sd,
StrokeCache *  cache 
) [static]
static void do_brush_action ( Sculpt *  sd,
Object *  ob,
Brush *  brush 
) [static]
static void do_clay_brush ( Sculpt *  sd,
Object *  ob,
PBVHNode **  nodes,
int  totnode 
) [static]
static void do_clay_tubes_brush ( Sculpt *  sd,
Object *  ob,
PBVHNode **  nodes,
int  totnode 
) [static]
static void do_crease_brush ( Sculpt *  sd,
Object *  ob,
PBVHNode **  nodes,
int  totnode 
) [static]
static void do_draw_brush ( Sculpt *  sd,
Object *  ob,
PBVHNode **  nodes,
int  totnode 
) [static]
static void do_fill_brush ( Sculpt *  sd,
Object *  ob,
PBVHNode **  nodes,
int  totnode 
) [static]
static void do_flatten_brush ( Sculpt *  sd,
Object *  ob,
PBVHNode **  nodes,
int  totnode 
) [static]
static void do_grab_brush ( Sculpt *  sd,
Object *  ob,
PBVHNode **  nodes,
int  totnode 
) [static]
static void do_inflate_brush ( Sculpt *  sd,
Object *  ob,
PBVHNode **  nodes,
int  totnode 
) [static]
static void do_layer_brush ( Sculpt *  sd,
Object *  ob,
PBVHNode **  nodes,
int  totnode 
) [static]
static void do_mesh_smooth_brush ( Sculpt *  sd,
SculptSession *  ss,
PBVHNode *  node,
float  bstrength 
) [static]
static void do_multires_smooth_brush ( Sculpt *  sd,
SculptSession *  ss,
PBVHNode *  node,
float  bstrength 
) [static]
static void do_nudge_brush ( Sculpt *  sd,
Object *  ob,
PBVHNode **  nodes,
int  totnode 
) [static]
static void do_pinch_brush ( Sculpt *  sd,
Object *  ob,
PBVHNode **  nodes,
int  totnode 
) [static]
static void do_radial_symmetry ( Sculpt *  sd,
Object *  ob,
Brush *  brush,
const char  symm,
const int  axis,
const float  feather 
) [static]
static void do_rotate_brush ( Sculpt *  sd,
Object *  ob,
PBVHNode **  nodes,
int  totnode 
) [static]
static void do_scrape_brush ( Sculpt *  sd,
Object *  ob,
PBVHNode **  nodes,
int  totnode 
) [static]
static void do_smooth_brush ( Sculpt *  sd,
Object *  ob,
PBVHNode **  nodes,
int  totnode 
) [static]

Definition at line 1120 of file sculpt.c.

References StrokeCache::bstrength, SculptSession::cache, Object::sculpt, and smooth().

Referenced by do_brush_action().

static void do_snake_hook_brush ( Sculpt *  sd,
Object *  ob,
PBVHNode **  nodes,
int  totnode 
) [static]
static void do_symmetrical_brush_actions ( Sculpt *  sd,
Object *  ob 
) [static]
static void do_thumb_brush ( Sculpt *  sd,
Object *  ob,
PBVHNode **  nodes,
int  totnode 
) [static]
void ED_operatortypes_sculpt ( void  )
void ED_sculpt_force_update ( bContext *  C)

Definition at line 95 of file sculpt.c.

References CTX_data_active_object(), Object::mode, multires_force_update(), and OB_MODE_SCULPT.

Referenced by WM_write_file().

static void flip_coord ( float  out[3],
float  in[3],
const char  symm 
) [static]
static float frontface ( Brush *  brush,
const float  sculpt_normal[3],
const short  no[3],
const float  fno[3] 
) [static]

Definition at line 370 of file sculpt.c.

References BRUSH_FRONTFACE, dot(), dot_v3v3(), Brush::flag, and normal_short_to_float_v3().

Referenced by tex_strength().

static float get_offset ( Sculpt *  sd,
SculptSession *  ss 
) [static]
static float integrate_overlap ( Brush *  br) [static]

Definition at line 443 of file sculpt.c.

References g, i, max, and overlapped_curve().

Referenced by brush_strength().

static void neighbor_average ( SculptSession *  ss,
float  avg[3],
const unsigned  vert 
) [static]
static int over_mesh ( bContext *  C,
struct wmOperator *  op,
float  x,
float  y 
) [static]
static float overlapped_curve ( Brush *  br,
float  x 
) [static]

Definition at line 421 of file sculpt.c.

References brush_curve_strength(), fabs(), i, Brush::spacing, and sum().

Referenced by integrate_overlap().

static int plane_point_side ( float  co[3],
float  plane_normal[3],
float  plane_center[3] 
) [static]

Definition at line 1883 of file sculpt.c.

References dot_v3v3(), and sub_v3_v3v3().

Referenced by do_fill_brush(), and do_scrape_brush().

static int plane_point_side_flip ( float  co[3],
float  plane_normal[3],
float  plane_center[3],
int  flip 
) [static]

Definition at line 1870 of file sculpt.c.

References simple_enum_gen::d, dot_v3v3(), and sub_v3_v3v3().

Referenced by do_clay_brush(), and do_clay_tubes_brush().

static int plane_trim ( StrokeCache *  cache,
Brush *  brush,
float  val[3] 
) [static]
static void point_plane_project ( float  intr[3],
float  co[3],
float  plane_normal[3],
float  plane_center[3] 
) [static]
static void sculpt_brush_exit_tex ( Sculpt *  sd) [static]
static void sculpt_brush_init_tex ( const Scene *  scene,
Sculpt *  sd,
SculptSession *  ss 
) [static]
static int sculpt_brush_stroke_cancel ( bContext *  C,
wmOperator *  op 
) [static]
static int sculpt_brush_stroke_exec ( bContext *  C,
wmOperator *  op 
) [static]
static int sculpt_brush_stroke_init ( bContext *  C,
wmOperator *  op 
) [static]
static int sculpt_brush_stroke_invoke ( bContext *  C,
wmOperator *  op,
wmEvent *  event 
) [static]
static int sculpt_brush_test ( SculptBrushTest *  test,
float  co[3] 
) [static]
static int sculpt_brush_test_cube ( SculptBrushTest *  test,
float  co[3],
float  local[4][4] 
) [static]

Definition at line 348 of file sculpt.c.

References SculptBrushTest::dist, fabs(), MAX3(), and mul_v3_m4v3().

Referenced by do_clay_tubes_brush().

static int sculpt_brush_test_fast ( SculptBrushTest *  test,
float  co[3] 
) [static]
static void sculpt_brush_test_init ( SculptSession *  ss,
SculptBrushTest *  test 
) [static]
static int sculpt_brush_test_sq ( SculptBrushTest *  test,
float  co[3] 
) [static]
static void sculpt_cache_free ( StrokeCache *  cache) [static]

Definition at line 2796 of file sculpt.c.

References StrokeCache::face_norms, and MEM_freeN().

Referenced by sculpt_brush_stroke_cancel(), and sculpt_stroke_done().

static void sculpt_clip ( Sculpt *  sd,
SculptSession *  ss,
float *  co,
const float  val[3] 
) [static]
static void sculpt_combine_proxies ( Sculpt *  sd,
Object *  ob 
) [static]
static void sculpt_fix_noise_tear ( Sculpt *  sd,
Object *  ob 
) [static]
static void sculpt_flush_pbvhvert_deform ( Object *  ob,
PBVHVertexIter *  vd 
) [static]
static void sculpt_flush_stroke_deform ( Sculpt *  sd,
Object *  ob 
) [static]
static void sculpt_flush_update ( bContext *  C) [static]
void sculpt_get_redraw_planes ( float  planes[4][4],
ARegion *  ar,
RegionView3D *  rv3d,
Object *  ob 
)
static int sculpt_get_redraw_rect ( ARegion *  ar,
RegionView3D *  rv3d,
Object *  ob,
rcti *  rect 
) [static]
static int sculpt_has_active_modifiers ( Scene *  scene,
Object *  ob 
) [static]
static void sculpt_init_mirror_clipping ( Object *  ob,
SculptSession *  ss 
) [static]
static void sculpt_init_session ( Scene *  scene,
Object *  ob 
) [static]
static int sculpt_mode_poll ( bContext *  C) [static]

Definition at line 2742 of file sculpt.c.

References CTX_data_active_object(), Object::mode, and OB_MODE_SCULPT.

Referenced by SCULPT_OT_set_persistent_base(), and sculpt_poll().

static int sculpt_modifiers_active ( Scene *  scene,
Sculpt *  sd,
Object *  ob 
) [static]
struct MultiresModifierData* sculpt_multires_active ( Scene *  scene,
Object *  ob 
) [read]
static void SCULPT_OT_brush_stroke ( wmOperatorType *  ot) [static]
static void SCULPT_OT_sculptmode_toggle ( wmOperatorType *  ot) [static]
static void SCULPT_OT_set_persistent_base ( wmOperatorType *  ot) [static]
int sculpt_poll ( bContext *  C)

Definition at line 2748 of file sculpt.c.

References paint_poll(), and sculpt_mode_poll().

Referenced by ED_keymap_paint(), SCULPT_OT_brush_stroke(), and sculpt_toggle_mode().

static void sculpt_raycast_cb ( PBVHNode *  node,
void *  data_v,
float *  tmin 
) [static]
static void sculpt_restore_mesh ( Sculpt *  sd,
SculptSession *  ss 
) [static]
static int sculpt_search_sphere_cb ( PBVHNode *  node,
void *  data_v 
) [static]
static int sculpt_set_persistent_base ( bContext *  C,
wmOperator *  UNUSEDop 
) [static]
static void sculpt_stroke_done ( bContext *  C,
struct PaintStroke *  UNUSEDstroke 
) [static]
int sculpt_stroke_get_location ( bContext *  C,
struct PaintStroke *  stroke,
float  out[3],
float  mouse[2] 
)
static void sculpt_stroke_modifiers_check ( bContext *  C,
Object *  ob 
) [static]
static int sculpt_stroke_test_start ( bContext *  C,
struct wmOperator *  op,
wmEvent *  event 
) [static]
static void sculpt_stroke_update_step ( bContext *  C,
struct PaintStroke *  stroke,
PointerRNA *  itemptr 
) [static]
static int sculpt_toggle_mode ( bContext *  C,
wmOperator *  UNUSEDop 
) [static]
static const char* sculpt_tool_name ( Sculpt *  sd) [static]
static void sculpt_update_brush_delta ( Sculpt *  sd,
Object *  ob,
Brush *  brush 
) [static]
static void sculpt_update_cache_invariants ( bContext *  C,
Sculpt *  sd,
SculptSession *  ss,
wmOperator *  op,
wmEvent *  event 
) [static]

Definition at line 2834 of file sculpt.c.

References StrokeCache::alt_smooth, BLI_strncpy(), StrokeCache::brush, BRUSH_ACCUMULATE, BRUSH_ANCHORED, BRUSH_INVERTED, BRUSH_PERSISTENT, BRUSH_RAKE, BRUSH_STROKE_INVERT, BRUSH_STROKE_SMOOTH, SculptSession::cache, MVert::co, copy_v2_v2(), copy_v3_v3(), CTX_data_active_object(), wmOperator::customdata, SculptSession::deform_cos, ED_view3d_global_to_vector(), ED_view3d_ob_project_mat_get(), ELEM8, SculptSession::face_normals, StrokeCache::face_norms, find_id(), StrokeCache::first_time, Brush::flag, StrokeCache::flag, i, Brush::id, StrokeCache::initial_mouse, StrokeCache::invert, Sculpt::last_angle, SculptSession::layer_co, MEM_callocN(), MEM_mallocN(), StrokeCache::mouse, SculptSession::multires, SculptSession::mvert, ID::name, StrokeCache::original, p, Sculpt::paint, paint_brush(), paint_brush_set(), paint_stroke_view_context(), Brush::plane_trim, StrokeCache::plane_trim_squared, StrokeCache::projection_mat, wmOperator::ptr, RNA_enum_get(), ViewContext::rv3d, StrokeCache::saved_active_brush_name, StrokeCache::scale, sculpt_init_mirror_clipping(), Brush::sculpt_tool, SCULPT_TOOL_BLOB, SCULPT_TOOL_CLAY, SCULPT_TOOL_CLAY_TUBES, SCULPT_TOOL_CREASE, SCULPT_TOOL_DRAW, SCULPT_TOOL_INFLATE, SCULPT_TOOL_LAYER, SCULPT_TOOL_ROTATE, Object::size, StrokeCache::special_rotation, StrokeCache::tex_mouse, SculptSession::totface, SculptSession::totvert, StrokeCache::true_view_normal, RegionView3D::twmat, StrokeCache::vc, and StrokeCache::vertex_rotation.

Referenced by sculpt_stroke_test_start().

static void sculpt_update_cache_variants ( bContext *  C,
Sculpt *  sd,
Object *  ob,
struct PaintStroke *  stroke,
PointerRNA *  ptr 
) [static]
static void sculpt_update_keyblock ( Object *  ob) [static]
void sculpt_update_mesh_elements ( Scene *  scene,
Sculpt *  sd,
Object *  ob,
int  need_fmap 
)
static void sculpt_update_tex ( const Scene *  scene,
Sculpt *  sd,
SculptSession *  ss 
) [static]
void sculpt_vertcos_to_key ( Object *  ob,
KeyBlock *  kb,
float(*)  vertCos[3] 
)
static void smooth ( Sculpt *  sd,
Object *  ob,
PBVHNode **  nodes,
int  totnode,
float  bstrength 
) [static]
static float tex_strength ( SculptSession *  ss,
Brush *  br,
float  point[3],
const float  len,
const float  sculpt_normal[3],
const short  vno[3],
const float  fno[3] 
) [static]