At least this is some starting point. A simple documentation on this could be really handy. I will try to setup a basic modifier and see if i run in any trouble. If so, i will ask back, since this could also be helpfull, if you decide to write a documentation on this. For now i will spend my time to read more into the code.
Thank you. Without this i might have searched for hours/days and probably given up frustrated. Jeroen Bakker schrieb: > Hi, > > I have a small step by step mind dump, but have not yet had time to > write the complete documentation about it. see below. there is also a > developer website who mentions it, but cannot find it right now. > > Add custom modifier > 1. DNA_modifier_types.h --> add ModifierType enumeration (must start > with eModifierType_[NAME]) > 2. DNA_modifier_types.h --> Add [NAME]ModifierData struct. first field > must be ModifierData modifier > 3. rna_modifier.c --> {eModifierType_[NAME], "[NAME]", > ICON_MOD_PHYSICS, "Surface", ""}, > > static void rna_def_modifier_test(BlenderRNA *brna) > { > StructRNA *srna; > > srna= RNA_def_struct(brna, "TestModifier", "Modifier"); > RNA_def_struct_ui_text(srna, "Test Modifier", "just a test"); > RNA_def_struct_sdna(srna, "TestModifierData"); > RNA_def_struct_ui_icon(srna, ICON_MOD_PARTICLES); > } > add sdna fields > static StructRNA* rna_Modifier_refine(struct PointerRNA *ptr) > add case > > call method from register > > 4 modifier.c > mti = INIT_TYPE(Test); > mti->type = eModifierTypeType_Constructive; > mti->flags = eModifierTypeFlag_AcceptsMesh; > mti->initData = testModifier_initData; // method to be called > when created > mti->copyData = testModifier_copyData; // method to be called > when copied > mti->applyModifier = testModifier_applyModifier; // method to > be called when applied > mti->applyModifierEM = testModifier_applyModifierEM; // method > to be called when applied > /** test modifier **/ > static void testModifier_initData(ModifierData *md) > { > } > > static void testModifier_copyData(ModifierData *md, ModifierData *target) > { > } > static DerivedMesh *testModifier_applyModifier(ModifierData *md, > Object *ob, > DerivedMesh *dm, > int useRenderParams, > int isFinalCalc) > { > return dm; > } > static DerivedMesh *testModifier_applyModifierEM(ModifierData *md, > Object *ob, > EditMesh *editData, > DerivedMesh *derivedData) > { > return testModifier_applyModifier(md, ob, derivedData, 0, 1); > } > > 5. add user interface panel. > properties_data_modifier.py > class DATA_PT_modifiers add method [NAME] > > 6. implement modifier. > > > > > On 10/08/2010 12:30 PM, Tobias Oelgarte wrote: > >> Hello, >> >> Im currently looking into the sources of blender and try to understand >> how the modifiers are working. Writing a modifier seams to be simple, >> but on the other side there are many other files that are keeping lists >> of them (to know which are available). This is somehow like finding all >> needles in a haystack. >> >> Is there a documentation on modifiers, that lists all the files that >> need to be changed if you write/add your own modifier? Need this files >> to be changed, or will they be updated automatically? (guess not) >> >> Somehow i miss some document that points out how i can write my own >> modifier from scratch (including gui etc.). At least a very simple >> example would be nice. >> >> Currently i developed code to write a so called RestoreVolume-Modifer, >> that ensures that a closed mesh keeps/restores it's original volume >> after deformations (due to other modifiers). Simplest example would be a >> muscle that contracts and will grow on the sides (controllable by vertex >> group), because of the loss of volume in length. >> >> Any suggestions or hints? >> >> Best wishes Tobias Oelgarte >> _______________________________________________ >> Bf-committers mailing list >> Bf-committers@blender.org >> http://lists.blender.org/mailman/listinfo/bf-committers >> >> >> > > > _______________________________________________ Bf-committers mailing list Bf-committers@blender.org http://lists.blender.org/mailman/listinfo/bf-committers