[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [36414] trunk/blender: warp modifier, added in the render branch for durian.
Campbell Barton
ideasman42 at gmail.com
Sun May 1 17:17:00 CEST 2011
Revision: 36414
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=36414
Author: campbellbarton
Date: 2011-05-01 15:16:59 +0000 (Sun, 01 May 2011)
Log Message:
-----------
warp modifier, added in the render branch for durian.
simple modifier, almost like a hook, except it can deform with 2 object source -> target, has option to preserve rotation and use different falloff types.
Modified Paths:
--------------
trunk/blender/release/scripts/startup/bl_ui/properties_data_modifier.py
trunk/blender/source/blender/blenloader/intern/readfile.c
trunk/blender/source/blender/blenloader/intern/writefile.c
trunk/blender/source/blender/makesdna/DNA_modifier_types.h
trunk/blender/source/blender/makesrna/RNA_access.h
trunk/blender/source/blender/makesrna/intern/rna_modifier.c
trunk/blender/source/blender/modifiers/CMakeLists.txt
trunk/blender/source/blender/modifiers/MOD_modifiertypes.h
trunk/blender/source/blender/modifiers/intern/MOD_displace.c
trunk/blender/source/blender/modifiers/intern/MOD_util.c
trunk/blender/source/blender/modifiers/intern/MOD_util.h
Added Paths:
-----------
trunk/blender/source/blender/modifiers/intern/MOD_warp.c
Modified: trunk/blender/release/scripts/startup/bl_ui/properties_data_modifier.py
===================================================================
--- trunk/blender/release/scripts/startup/bl_ui/properties_data_modifier.py 2011-05-01 14:02:40 UTC (rev 36413)
+++ trunk/blender/release/scripts/startup/bl_ui/properties_data_modifier.py 2011-05-01 15:16:59 UTC (rev 36414)
@@ -635,6 +635,48 @@
sub.prop(md, "scale_x", text="Scale X")
sub.prop(md, "scale_y", text="Scale Y")
+ def WARP(self, layout, ob, md):
+ use_falloff = (md.falloff_type != 'NONE')
+ split = layout.split()
+
+ col = split.column()
+ col.label(text="From:")
+ col.prop(md, "object_from", text="")
+
+ col.prop(md, "use_volume_preserve")
+
+ col = split.column()
+ col.label(text="To:")
+ col.prop(md, "object_to", text="")
+ col.prop_search(md, "vertex_group", ob, "vertex_groups", text="")
+
+ col = layout.column()
+
+ row = col.row(align=True)
+ row.prop(md, "strength")
+ if use_falloff:
+ row.prop(md, "falloff_radius")
+
+ col.prop(md, "falloff_type")
+ if use_falloff:
+ if md.falloff_type == 'CURVE':
+ col.template_curve_mapping(md, "falloff_curve")
+
+ # 2 new columns
+ split = layout.split()
+ col = split.column()
+ col.label(text="Texture:")
+ col.prop(md, "texture", text="")
+
+ col = split.column()
+ col.label(text="Texture Coordinates:")
+ col.prop(md, "texture_coords", text="")
+
+ if md.texture_coords == 'OBJECT':
+ layout.prop(md, "texture_coordinate_object", text="Object")
+ elif md.texture_coords == 'UV' and ob.type == 'MESH':
+ layout.prop_object(md, "uv_layer", ob.data, "uv_textures")
+
def WAVE(self, layout, ob, md):
split = layout.split()
Modified: trunk/blender/source/blender/blenloader/intern/readfile.c
===================================================================
--- trunk/blender/source/blender/blenloader/intern/readfile.c 2011-05-01 14:02:40 UTC (rev 36413)
+++ trunk/blender/source/blender/blenloader/intern/readfile.c 2011-05-01 15:16:59 UTC (rev 36414)
@@ -4122,6 +4122,13 @@
SWITCH_INT(mmd->bindcos[a])
}
}
+ else if (md->type==eModifierType_Warp) {
+ WarpModifierData *tmd = (WarpModifierData *) md;
+
+ tmd->curfalloff= newdataadr(fd, tmd->curfalloff);
+ if(tmd->curfalloff)
+ direct_link_curvemapping(fd, tmd->curfalloff);
+ }
}
}
Modified: trunk/blender/source/blender/blenloader/intern/writefile.c
===================================================================
--- trunk/blender/source/blender/blenloader/intern/writefile.c 2011-05-01 14:02:40 UTC (rev 36413)
+++ trunk/blender/source/blender/blenloader/intern/writefile.c 2011-05-01 15:16:59 UTC (rev 36414)
@@ -1274,6 +1274,12 @@
writestruct(wd, DATA, "MDefInfluence", mmd->totinfluence, mmd->dyninfluences);
writedata(wd, DATA, sizeof(int)*mmd->totvert, mmd->dynverts);
}
+ else if (md->type==eModifierType_Warp) {
+ WarpModifierData *tmd = (WarpModifierData*) md;
+ if(tmd->curfalloff) {
+ write_curvemapping(wd, tmd->curfalloff);
+ }
+ }
}
}
Modified: trunk/blender/source/blender/makesdna/DNA_modifier_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_modifier_types.h 2011-05-01 14:02:40 UTC (rev 36413)
+++ trunk/blender/source/blender/makesdna/DNA_modifier_types.h 2011-05-01 15:16:59 UTC (rev 36414)
@@ -70,8 +70,6 @@
eModifierType_ShapeKey,
eModifierType_Solidify,
eModifierType_Screw,
- /* placeholder, keep this so durian files load in
- * trunk with the correct modifier once its merged */
eModifierType_Warp,
NUM_MODIFIER_TYPES
} ModifierType;
@@ -107,6 +105,17 @@
eSubsurfModifierFlag_SubsurfUv = (1<<3)
} SubsurfModifierFlag;
+/* not a real modifier */
+typedef struct MappingInfoModifierData {
+ ModifierData modifier;
+
+ struct Tex *texture;
+ struct Object *map_object;
+ char uvlayer_name[32];
+ int uvlayer_tmp;
+ int texmapping;
+} MappingInfoModifierData;
+
typedef struct SubsurfModifierData {
ModifierData modifier;
@@ -292,15 +301,19 @@
typedef struct DisplaceModifierData {
ModifierData modifier;
+ /* keep in sync with MappingInfoModifierData */
struct Tex *texture;
+ struct Object *map_object;
+ char uvlayer_name[32];
+ int uvlayer_tmp;
+ int texmapping;
+ int pad10;
+ /* end MappingInfoModifierData */
+
float strength;
int direction;
char defgrp_name[32];
float midlevel;
- int texmapping;
- struct Object *map_object;
- char uvlayer_name[32];
- int uvlayer_tmp, pad;
} DisplaceModifierData;
/* DisplaceModifierData->direction */
@@ -733,5 +746,42 @@
#define MOD_SCREW_OBJECT_OFFSET (1<<2)
// #define MOD_SCREW_OBJECT_ANGLE (1<<4)
+typedef struct WarpModifierData {
+ ModifierData modifier;
+ /* keep in sync with MappingInfoModifierData */
+ struct Tex *texture;
+ struct Object *map_object;
+ char uvlayer_name[32];
+ int uvlayer_tmp;
+ int texmapping;
+ int pad10;
+ /* end MappingInfoModifierData */
+
+ float strength;
+
+ struct Object *object_from;
+ struct Object *object_to;
+ struct CurveMapping *curfalloff;
+ char defgrp_name[32]; /* optional vertexgroup name */
+ float falloff_radius;
+ char flag; /* not used yet */
+ char falloff_type;
+ char pad[2];
+} WarpModifierData;
+
+#define MOD_WARP_VOLUME_PRESERVE 1
+
+typedef enum {
+ eWarp_Falloff_None = 0,
+ eWarp_Falloff_Curve = 1,
+ eWarp_Falloff_Sharp = 2, /* PROP_SHARP */
+ eWarp_Falloff_Smooth = 3, /* PROP_SMOOTH */
+ eWarp_Falloff_Root = 4, /* PROP_ROOT */
+ eWarp_Falloff_Linear = 5, /* PROP_LIN */
+ eWarp_Falloff_Const = 6, /* PROP_CONST */
+ eWarp_Falloff_Sphere = 7, /* PROP_SPHERE */
+ /* PROP_RANDOM not used */
+} WarpModifierFalloff;
+
#endif
Modified: trunk/blender/source/blender/makesrna/RNA_access.h
===================================================================
--- trunk/blender/source/blender/makesrna/RNA_access.h 2011-05-01 14:02:40 UTC (rev 36413)
+++ trunk/blender/source/blender/makesrna/RNA_access.h 2011-05-01 15:16:59 UTC (rev 36414)
@@ -559,6 +559,7 @@
extern StructRNA RNA_VoronoiTexture;
extern StructRNA RNA_VoxelData;
extern StructRNA RNA_VoxelDataTexture;
+extern StructRNA RNA_WarpModifier;
extern StructRNA RNA_WaveModifier;
extern StructRNA RNA_Window;
extern StructRNA RNA_WindowManager;
Modified: trunk/blender/source/blender/makesrna/intern/rna_modifier.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_modifier.c 2011-05-01 14:02:40 UTC (rev 36413)
+++ trunk/blender/source/blender/makesrna/intern/rna_modifier.c 2011-05-01 15:16:59 UTC (rev 36414)
@@ -79,6 +79,7 @@
{eModifierType_Shrinkwrap, "SHRINKWRAP", ICON_MOD_SHRINKWRAP, "Shrinkwrap", ""},
{eModifierType_SimpleDeform, "SIMPLE_DEFORM", ICON_MOD_SIMPLEDEFORM, "Simple Deform", ""},
{eModifierType_Smooth, "SMOOTH", ICON_MOD_SMOOTH, "Smooth", ""},
+ {eModifierType_Warp, "WARP", ICON_MOD_SUBSURF, "Warp", ""},
{eModifierType_Wave, "WAVE", ICON_MOD_WAVE, "Wave", ""},
{0, "", 0, "Simulate", ""},
{eModifierType_Cloth, "CLOTH", ICON_MOD_CLOTH, "Cloth", ""},
@@ -180,6 +181,8 @@
return &RNA_SolidifyModifier;
case eModifierType_Screw:
return &RNA_ScrewModifier;
+ case eModifierType_Warp:
+ return &RNA_WarpModifier;
default:
return &RNA_Modifier;
}
@@ -372,10 +375,10 @@
rna_object_vgroup_name_set(ptr, value, smd->defgrp_name, sizeof(smd->defgrp_name));
}
-static void rna_DisplaceModifier_uvlayer_set(PointerRNA *ptr, const char *value)
+static void rna_MappingInfo_uvlayer_set(PointerRNA *ptr, const char *value)
{
- DisplaceModifierData *smd= (DisplaceModifierData*)ptr->data;
- rna_object_uvlayer_name_set(ptr, value, smd->uvlayer_name, sizeof(smd->uvlayer_name));
+ MappingInfoModifierData *mmd= (MappingInfoModifierData *)ptr->data;
+ rna_object_uvlayer_name_set(ptr, value, mmd->uvlayer_name, sizeof(mmd->uvlayer_name));
}
static void rna_UVProjectModifier_uvlayer_set(PointerRNA *ptr, const char *value)
@@ -384,6 +387,12 @@
rna_object_uvlayer_name_set(ptr, value, umd->uvlayer_name, sizeof(umd->uvlayer_name));
}
+static void RNA_WarpModifier_vgroup_set(PointerRNA *ptr, const char *value)
+{
+ WarpModifierData *tmd= (WarpModifierData*)ptr->data;
+ rna_object_vgroup_name_set(ptr, value, tmd->defgrp_name, sizeof(tmd->defgrp_name));
+}
+
static void rna_WaveModifier_uvlayer_set(PointerRNA *ptr, const char *value)
{
WaveModifierData *wmd= (WaveModifierData*)ptr->data;
@@ -619,6 +628,106 @@
RNA_def_property_update(prop, 0, "rna_Modifier_update");
}
+static void rna_def_modifier_generic_map_info(StructRNA *srna)
+{
+ static EnumPropertyItem prop_texture_coordinates_items[] = {
+ {MOD_DISP_MAP_LOCAL, "LOCAL", 0, "Map", ""},
+ {MOD_DISP_MAP_GLOBAL, "GLOBAL", 0, "Global", ""},
+ {MOD_DISP_MAP_OBJECT, "OBJECT", 0, "Object", ""},
+ {MOD_DISP_MAP_UV, "UV", 0, "UV", ""},
+ {0, NULL, 0, NULL, NULL}};
+
+ PropertyRNA *prop;
+
+ prop= RNA_def_property(srna, "texture", PROP_POINTER, PROP_NONE);
+ RNA_def_property_ui_text(prop, "Texture", "");
+ RNA_def_property_flag(prop, PROP_EDITABLE);
+ RNA_def_property_update(prop, 0, "rna_Modifier_update");
+
+ prop= RNA_def_property(srna, "texture_coords", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_sdna(prop, NULL, "texmapping");
+ RNA_def_property_enum_items(prop, prop_texture_coordinates_items);
+ RNA_def_property_ui_text(prop, "Texture Coordinates", "");
+ RNA_def_property_update(prop, 0, "rna_Modifier_dependency_update");
+
+ prop= RNA_def_property(srna, "uv_layer", PROP_STRING, PROP_NONE);
+ RNA_def_property_string_sdna(prop, NULL, "uvlayer_name");
+ RNA_def_property_ui_text(prop, "UV Layer", "UV layer name");
+ RNA_def_property_string_funcs(prop, NULL, NULL, "rna_MappingInfo_uvlayer_set");
+ RNA_def_property_update(prop, 0, "rna_Modifier_update");
+
+ prop= RNA_def_property(srna, "texture_coordinate_object", PROP_POINTER, PROP_NONE);
+ RNA_def_property_pointer_sdna(prop, NULL, "map_object");
+ RNA_def_property_ui_text(prop, "Texture Coordinate Object", "");
+ RNA_def_property_flag(prop, PROP_EDITABLE|PROP_ID_SELF_CHECK);
+ RNA_def_property_update(prop, 0, "rna_Modifier_dependency_update");
+}
+
+static void rna_def_modifier_warp(BlenderRNA *brna)
+{
+ StructRNA *srna;
+ PropertyRNA *prop;
+
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list