Blender  V3.3
Classes | Typedefs | Functions | Variables
MOD_multires.c File Reference
#include <stddef.h>
#include "MEM_guardedalloc.h"
#include "BLI_utildefines.h"
#include "BLT_translation.h"
#include "DNA_defaults.h"
#include "DNA_mesh_types.h"
#include "DNA_object_types.h"
#include "DNA_scene_types.h"
#include "DNA_screen_types.h"
#include "BKE_cdderivedmesh.h"
#include "BKE_context.h"
#include "BKE_mesh.h"
#include "BKE_modifier.h"
#include "BKE_multires.h"
#include "BKE_paint.h"
#include "BKE_screen.h"
#include "BKE_subdiv.h"
#include "BKE_subdiv_ccg.h"
#include "BKE_subdiv_deform.h"
#include "BKE_subdiv_mesh.h"
#include "BKE_subsurf.h"
#include "UI_interface.h"
#include "UI_resources.h"
#include "RNA_access.h"
#include "RNA_prototypes.h"
#include "WM_types.h"
#include "DEG_depsgraph_query.h"
#include "MOD_modifiertypes.h"
#include "MOD_ui_common.h"

Go to the source code of this file.

Classes

struct  MultiresRuntimeData
 

Typedefs

typedef struct MultiresRuntimeData MultiresRuntimeData
 

Functions

static void initData (ModifierData *md)
 
static void requiredDataMask (Object *UNUSED(ob), ModifierData *md, CustomData_MeshMasks *r_cddata_masks)
 
static bool dependsOnNormals (ModifierData *md)
 
static void copyData (const ModifierData *md_src, ModifierData *md_dst, const int flag)
 
static void freeRuntimeData (void *runtime_data_v)
 
static void freeData (ModifierData *md)
 
static MultiresRuntimeDatamultires_ensure_runtime (MultiresModifierData *mmd)
 
static Subdivsubdiv_descriptor_ensure (MultiresModifierData *mmd, const SubdivSettings *subdiv_settings, const Mesh *mesh)
 
static Meshmultires_as_mesh (MultiresModifierData *mmd, const ModifierEvalContext *ctx, Mesh *mesh, Subdiv *subdiv)
 
static void multires_ccg_settings_init (SubdivToCCGSettings *settings, const MultiresModifierData *mmd, const ModifierEvalContext *ctx, Mesh *mesh)
 
static Meshmultires_as_ccg (MultiresModifierData *mmd, const ModifierEvalContext *ctx, Mesh *mesh, Subdiv *subdiv)
 
static MeshmodifyMesh (ModifierData *md, const ModifierEvalContext *ctx, Mesh *mesh)
 
static void deformMatrices (ModifierData *md, const ModifierEvalContext *ctx, Mesh *mesh, float(*vertex_cos)[3], float(*deform_matrices)[3][3], int verts_num)
 
static void panel_draw (const bContext *C, Panel *panel)
 
static void subdivisions_panel_draw (const bContext *UNUSED(C), Panel *panel)
 
static void shape_panel_draw (const bContext *UNUSED(C), Panel *panel)
 
static void generate_panel_draw (const bContext *UNUSED(C), Panel *panel)
 
static void advanced_panel_draw (const bContext *UNUSED(C), Panel *panel)
 
static void panelRegister (ARegionType *region_type)
 

Variables

ModifierTypeInfo modifierType_Multires
 

Typedef Documentation

◆ MultiresRuntimeData

Function Documentation

◆ advanced_panel_draw()

static void advanced_panel_draw ( const bContext UNUSEDC,
Panel panel 
)
static

◆ copyData()

static void copyData ( const ModifierData md_src,
ModifierData md_dst,
const int  flag 
)
static

Definition at line 85 of file MOD_multires.c.

References BKE_modifier_copydata_generic().

◆ deformMatrices()

static void deformMatrices ( ModifierData md,
const ModifierEvalContext ctx,
Mesh mesh,
float(*)  vertex_cos[3],
float(*)  deform_matrices[3][3],
int  verts_num 
)
static

◆ dependsOnNormals()

static bool dependsOnNormals ( ModifierData md)
static

◆ freeData()

static void freeData ( ModifierData md)
static

◆ freeRuntimeData()

static void freeRuntimeData ( void runtime_data_v)
static

Definition at line 90 of file MOD_multires.c.

References BKE_subdiv_free(), MEM_freeN, NULL, and MultiresRuntimeData::subdiv.

Referenced by freeData().

◆ generate_panel_draw()

static void generate_panel_draw ( const bContext UNUSEDC,
Panel panel 
)
static

◆ initData()

static void initData ( ModifierData md)
static

◆ modifyMesh()

static Mesh* modifyMesh ( ModifierData md,
const ModifierEvalContext ctx,
Mesh mesh 
)
static

◆ multires_as_ccg()

static Mesh* multires_as_ccg ( MultiresModifierData mmd,
const ModifierEvalContext ctx,
Mesh mesh,
Subdiv subdiv 
)
static

◆ multires_as_mesh()

static Mesh* multires_as_mesh ( MultiresModifierData mmd,
const ModifierEvalContext ctx,
Mesh mesh,
Subdiv subdiv 
)
static

◆ multires_ccg_settings_init()

static void multires_ccg_settings_init ( SubdivToCCGSettings settings,
const MultiresModifierData mmd,
const ModifierEvalContext ctx,
Mesh mesh 
)
static

◆ multires_ensure_runtime()

static MultiresRuntimeData* multires_ensure_runtime ( MultiresModifierData mmd)
static

Definition at line 108 of file MOD_multires.c.

References if(), MEM_callocN, MultiresModifierData::modifier, NULL, and ModifierData::runtime.

Referenced by deformMatrices(), and modifyMesh().

◆ panel_draw()

static void panel_draw ( const bContext C,
Panel panel 
)
static

◆ panelRegister()

static void panelRegister ( ARegionType region_type)
static

◆ requiredDataMask()

static void requiredDataMask ( Object UNUSEDob,
ModifierData md,
CustomData_MeshMasks r_cddata_masks 
)
static

◆ shape_panel_draw()

static void shape_panel_draw ( const bContext UNUSEDC,
Panel panel 
)
static

◆ subdiv_descriptor_ensure()

static Subdiv* subdiv_descriptor_ensure ( MultiresModifierData mmd,
const SubdivSettings subdiv_settings,
const Mesh mesh 
)
static

◆ subdivisions_panel_draw()

static void subdivisions_panel_draw ( const bContext UNUSEDC,
Panel panel 
)
static

Changing some of the properties can not be done once there is an actual displacement stored for this multi-resolution modifier. This check will disallow changes for those properties. This check is a bit stupid but it should be sufficient for the usual multi-resolution usage. It might become less strict and only disallow modifications if there is CD_MDISPS layer, or if there is actual non-zero displacement, but such checks will be too slow to be done on every redraw.

Definition at line 347 of file MOD_multires.c.

References PointerRNA::data, IFACE_, Panel::layout, modifier_panel_get_property_pointers(), MULTIRES_SUBDIVIDE_CATMULL_CLARK, MULTIRES_SUBDIVIDE_LINEAR, MULTIRES_SUBDIVIDE_SIMPLE, NULL, OB_MODE_EDIT, ptr, RNA_enum_get(), RNA_enum_set(), RNA_string_set(), uiItemFullO(), uiItemO(), uiItemS(), uiLayoutRow(), uiLayoutSetEnabled(), and WM_OP_EXEC_DEFAULT.

Referenced by panelRegister().

Variable Documentation

◆ modifierType_Multires

ModifierTypeInfo modifierType_Multires

Definition at line 489 of file MOD_multires.c.