Blender  V3.3
Classes
sculpt_detail.c File Reference
#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
#include "BLI_math.h"
#include "BLT_translation.h"
#include "DNA_mesh_types.h"
#include "BKE_context.h"
#include "BKE_paint.h"
#include "BKE_pbvh.h"
#include "BKE_screen.h"
#include "DEG_depsgraph.h"
#include "GPU_immediate.h"
#include "GPU_immediate_util.h"
#include "GPU_matrix.h"
#include "GPU_state.h"
#include "WM_api.h"
#include "WM_types.h"
#include "ED_screen.h"
#include "ED_sculpt.h"
#include "ED_space_api.h"
#include "ED_view3d.h"
#include "sculpt_intern.h"
#include "RNA_access.h"
#include "RNA_define.h"
#include <math.h>
#include <stdlib.h>

Go to the source code of this file.

Classes

struct  SculptDetailRaycastData
 
struct  DyntopoDetailSizeEditCustomData
 

Functions

Internal Utilities
static bool sculpt_and_constant_or_manual_detail_poll (bContext *C)
 
static bool sculpt_and_dynamic_topology_poll (bContext *C)
 
Detail Flood Fill
static int sculpt_detail_flood_fill_exec (bContext *C, wmOperator *UNUSED(op))
 
void SCULPT_OT_detail_flood_fill (wmOperatorType *ot)
 
Dynamic-topology detail size

Currently, there are two operators editing the detail size:

static void set_brush_rc_props (PointerRNA *ptr, const char *prop)
 
static void sculpt_detail_size_set_radial_control (bContext *C)
 
static int sculpt_set_detail_size_exec (bContext *C, wmOperator *UNUSED(op))
 
void SCULPT_OT_set_detail_size (wmOperatorType *ot)
 

Dyntopo Detail Size Edit Operator

#define DETAIL_SIZE_DELTA_SPEED   0.08f
 
#define DETAIL_SIZE_DELTA_ACCURATE_SPEED   0.004f
 
typedef struct DyntopoDetailSizeEditCustomData DyntopoDetailSizeEditCustomData
 
static void dyntopo_detail_size_parallel_lines_draw (uint pos3d, DyntopoDetailSizeEditCustomData *cd, const float start_co[3], const float end_co[3], bool flip, const float angle)
 
static void dyntopo_detail_size_edit_draw (const bContext *UNUSED(C), ARegion *UNUSED(ar), void *arg)
 
static void dyntopo_detail_size_edit_cancel (bContext *C, wmOperator *op)
 
static void dyntopo_detail_size_sample_from_surface (Object *ob, DyntopoDetailSizeEditCustomData *cd)
 
static void dyntopo_detail_size_update_from_mouse_delta (DyntopoDetailSizeEditCustomData *cd, const wmEvent *event)
 
static int dyntopo_detail_size_edit_modal (bContext *C, wmOperator *op, const wmEvent *event)
 
static int dyntopo_detail_size_edit_invoke (bContext *C, wmOperator *op, const wmEvent *event)
 
void SCULPT_OT_dyntopo_detail_size_edit (wmOperatorType *ot)
 

Sample Detail Size

enum  eSculptSampleDetailModeTypes { SAMPLE_DETAIL_DYNTOPO = 0 , SAMPLE_DETAIL_VOXEL = 1 }
 
typedef enum eSculptSampleDetailModeTypes eSculptSampleDetailModeTypes
 
static EnumPropertyItem prop_sculpt_sample_detail_mode_types []
 
static void sample_detail_voxel (bContext *C, ViewContext *vc, const int mval[2])
 
static void sculpt_raycast_detail_cb (PBVHNode *node, void *data_v, float *tmin)
 
static void sample_detail_dyntopo (bContext *C, ViewContext *vc, const int mval[2])
 
static int sample_detail (bContext *C, const int event_xy[2], int mode)
 
static int sculpt_sample_detail_size_exec (bContext *C, wmOperator *op)
 
static int sculpt_sample_detail_size_invoke (bContext *C, wmOperator *op, const wmEvent *UNUSED(e))
 
static int sculpt_sample_detail_size_modal (bContext *C, wmOperator *op, const wmEvent *event)
 
void SCULPT_OT_sample_detail_size (wmOperatorType *ot)
 

Macro Definition Documentation

◆ DETAIL_SIZE_DELTA_ACCURATE_SPEED

#define DETAIL_SIZE_DELTA_ACCURATE_SPEED   0.004f

Definition at line 447 of file sculpt_detail.c.

◆ DETAIL_SIZE_DELTA_SPEED

#define DETAIL_SIZE_DELTA_SPEED   0.08f

Definition at line 446 of file sculpt_detail.c.

Typedef Documentation

◆ DyntopoDetailSizeEditCustomData

◆ eSculptSampleDetailModeTypes

Enumeration Type Documentation

◆ eSculptSampleDetailModeTypes

Enumerator
SAMPLE_DETAIL_DYNTOPO 
SAMPLE_DETAIL_VOXEL 

Definition at line 150 of file sculpt_detail.c.

Function Documentation

◆ dyntopo_detail_size_edit_cancel()

static void dyntopo_detail_size_edit_cancel ( bContext C,
wmOperator op 
)
static

◆ dyntopo_detail_size_edit_draw()

static void dyntopo_detail_size_edit_draw ( const bContext UNUSEDC,
ARegion UNUSEDar,
void arg 
)
static

◆ dyntopo_detail_size_edit_invoke()

static int dyntopo_detail_size_edit_invoke ( bContext C,
wmOperator op,
const wmEvent event 
)
static

◆ dyntopo_detail_size_edit_modal()

static int dyntopo_detail_size_edit_modal ( bContext C,
wmOperator op,
const wmEvent event 
)
static

◆ dyntopo_detail_size_parallel_lines_draw()

static void dyntopo_detail_size_parallel_lines_draw ( uint  pos3d,
DyntopoDetailSizeEditCustomData cd,
const float  start_co[3],
const float  end_co[3],
bool  flip,
const float  angle 
)
static

◆ dyntopo_detail_size_sample_from_surface()

static void dyntopo_detail_size_sample_from_surface ( Object ob,
DyntopoDetailSizeEditCustomData cd 
)
static

◆ dyntopo_detail_size_update_from_mouse_delta()

static void dyntopo_detail_size_update_from_mouse_delta ( DyntopoDetailSizeEditCustomData cd,
const wmEvent event 
)
static

◆ sample_detail()

static int sample_detail ( bContext C,
const int  event_xy[2],
int  mode 
)
static

◆ sample_detail_dyntopo()

static void sample_detail_dyntopo ( bContext C,
ViewContext vc,
const int  mval[2] 
)
static

◆ sample_detail_voxel()

static void sample_detail_voxel ( bContext C,
ViewContext vc,
const int  mval[2] 
)
static

◆ sculpt_and_constant_or_manual_detail_poll()

static bool sculpt_and_constant_or_manual_detail_poll ( bContext C)
static

◆ sculpt_and_dynamic_topology_poll()

static bool sculpt_and_dynamic_topology_poll ( bContext C)
static

◆ sculpt_detail_flood_fill_exec()

static int sculpt_detail_flood_fill_exec ( bContext C,
wmOperator UNUSEDop 
)
static

◆ sculpt_detail_size_set_radial_control()

static void sculpt_detail_size_set_radial_control ( bContext C)
static

◆ SCULPT_OT_detail_flood_fill()

void SCULPT_OT_detail_flood_fill ( wmOperatorType ot)

◆ SCULPT_OT_dyntopo_detail_size_edit()

void SCULPT_OT_dyntopo_detail_size_edit ( wmOperatorType ot)

◆ SCULPT_OT_sample_detail_size()

void SCULPT_OT_sample_detail_size ( wmOperatorType ot)

◆ SCULPT_OT_set_detail_size()

void SCULPT_OT_set_detail_size ( wmOperatorType ot)

◆ sculpt_raycast_detail_cb()

static void sculpt_raycast_detail_cb ( PBVHNode node,
void data_v,
float tmin 
)
static

◆ sculpt_sample_detail_size_exec()

static int sculpt_sample_detail_size_exec ( bContext C,
wmOperator op 
)
static

◆ sculpt_sample_detail_size_invoke()

static int sculpt_sample_detail_size_invoke ( bContext C,
wmOperator op,
const wmEvent UNUSED
)
static

◆ sculpt_sample_detail_size_modal()

static int sculpt_sample_detail_size_modal ( bContext C,
wmOperator op,
const wmEvent event 
)
static

◆ sculpt_set_detail_size_exec()

static int sculpt_set_detail_size_exec ( bContext C,
wmOperator UNUSEDop 
)
static

Definition at line 417 of file sculpt_detail.c.

References C, OPERATOR_FINISHED, and sculpt_detail_size_set_radial_control().

Referenced by SCULPT_OT_set_detail_size().

◆ set_brush_rc_props()

static void set_brush_rc_props ( PointerRNA ptr,
const char *  prop 
)
static

Definition at line 382 of file sculpt_detail.c.

References BLI_sprintfN(), MEM_freeN, ptr, and RNA_string_set().

Referenced by sculpt_detail_size_set_radial_control().

Variable Documentation

◆ prop_sculpt_sample_detail_mode_types

EnumPropertyItem prop_sculpt_sample_detail_mode_types[]
static
Initial value:
= {
{SAMPLE_DETAIL_DYNTOPO, "DYNTOPO", 0, "Dyntopo", "Sample dyntopo detail"},
{SAMPLE_DETAIL_VOXEL, "VOXEL", 0, "Voxel", "Sample mesh voxel size"},
{0, NULL, 0, NULL, NULL},
}
@ SAMPLE_DETAIL_DYNTOPO
@ SAMPLE_DETAIL_VOXEL

Definition at line 155 of file sculpt_detail.c.

Referenced by SCULPT_OT_sample_detail_size().