Hi, I found this link pretty helpful: http://enja.org/2010/05/24/blender-creating-a-custom-modifier/
Best wishes, phil (SaphireS) Am 08.10.2010 12:44, schrieb Tobias Oelgarte: > 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 > _______________________________________________ Bf-committers mailing list Bf-committers@blender.org http://lists.blender.org/mailman/listinfo/bf-committers