[Bf-committers] In need for help/documentation for modifiers

Tobias Oelgarte tobias.oelgarte at googlemail.com
Fri Oct 8 18:17:23 CEST 2010

Currently i have created a simple ui for my modifier and the properties 
are also correctly registered. I just followed the code from the 
simpledeform modifier and copied adjusted parts from it. Now i can focus 
on writing the modifier itself. Only problem is, that the callback 
functions are not as well documented as i expected. So i will have to go 
through trial and error, to find out what they are exactly for, and 
which i will have to implement.

If we wan't to write a documentation "how to write your own modifier" 
then we need something like a wiki to do so. I guess that i will sooner 
or later forget about the things and details i started of with. Any 

pete larabell schrieb:
> Thank you very much. If I'm able to get this working, or you are, I think we
> ought to write up a formal document on this process for the benefit of
> others. I'm more than willing to create such a document once I know it's
> accurate :)
> Thanks again!
> Peter
> On Fri, Oct 8, 2010 at 9:50 AM, Tobias Oelgarte <
> tobias.oelgarte at googlemail.com> wrote:
>> Currently I'm able to compile it without any issue, but it misses all
>> functionality and the ui-interface. But at least it shows up in the menu
>> and runs like expected. Im oriented myself closely to the "simple deform
>> modifier", because it is simple and easier to understand than others.
>> Currently i did the following things:
>> Some Notes:
>> <ModifierName> is the name of the modifier. In my case "RestoreVolume".
>> Note that the name is written in different style, at different places.
>> To know where in the files you will have to add the lines, you should
>> just look out for similar patterns.
>> 1. At the end of MOD_util.c i added:
>>    INIT_TYPE(<ModifierName>);
>> 2. In MOD_modifier_types.h i added:
>>    extern ModifierTypeInfo modifierType_<ModifierName>;
>> 3. In RNA_access.h i added:
>>    extern StructRNA RNA_<ModifierName>VolumeModifier;
>> 4. In DNA_modifier_types.h i added:
>>    eModifierType_<ModifierName>,
>> 5. In DNA_modifier_types.h i added also:
>>    typedef struct <ModifierName>ModifierData {
>>        ModifierData modifier;
>>        // own data from here. Notice the padding, which is needed in
>> this case
>>        char name[32];
>>        float volume;
>>        char pad[4];
>>    } <ModifierName>ModifierData;
>> 6. In rna_modifier.c i added:
>>    {eModifierType_<ModifierName>, "<MODIFIER_NAME>", ICON_MOD_PHYSICS,
>> "<Modifier Name>", ""},
>> 7. In rna_modifier.c i added also:
>>    case eModifierType_<ModifierName>:
>>        return &RNA_<ModifierName>Modifier;
>> 8. In rna_modifier.c i added also:
>>    static void rna_def_modifier_<modifiername>(BlenderRNA *brna)
>>    {
>>        StructRNA *srna;
>>        srna= RNA_def_struct(brna, "<ModifierName>Modifier", "Modifier");
>>        RNA_def_struct_ui_text(srna, "<Modifier Name> Modifier",
>> "<description what it does>");
>>        RNA_def_struct_sdna(srna, "<ModifierName>ModifierData");
>>        RNA_def_struct_ui_icon(srna, ICON_MOD_PARTICLES); // maybe use
>> other icon
>>    }
>> 9. In rna_modifier.c i added at the end also:
>>    rna_def_modifier_<modifiername>(brna);
>> 10. In properties_data_modifier.py i added:
>>    def <MODIFIER_NAME>(self, layout, ob, md):
>>        layout.label(text="Volume:") // the following lines are specific
>> for my modifier
>>        layout.prop(md, "volume")
>> Notice that #10 is python code, so care for indentation is needed. (I
>> hate it...)
>> After that i copied MOD_simpledeform.c to MOD_<modifiername>.c and
>> deleted nearly everything from the file. Keep care to update and rename
>> the struct ModifierTypeInfo at the end of the file.
>> Thats basically all i did so far. Currently i'm Missing my input-field
>> for volume inside the UI, since it blames me to not know about the
>> property. Guess i will have to register it somewhere.
>> Message:
>> rna_uiItemR: property not found: RestoreVolumeModifier.volume

More information about the Bf-committers mailing list