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

Tobias Oelgarte tobias.oelgarte at googlemail.com
Fri Oct 8 16:50:51 CEST 2010

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:

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:

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:

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.

rna_uiItemR: property not found: RestoreVolumeModifier.volume

pete larabell schrieb:
> Tobias,
> If/when you do get your modifier successfully compiled and running... is
> there any chance you could write up a quick documentation describing the
> process? I've inherited a modifier from someone else and am now trying to do
> the same thing you are, but so far I feel like I'm less far into the process
> than you are.
> Any notes that you could write up about your experience would be great to
> help ease the burden for everyone in the future. :)
> Thanks!
> Peter
> On Fri, Oct 8, 2010 at 8:22 AM, Tobias Oelgarte <
> tobias.oelgarte at googlemail.com> wrote:
>> Ok, now i found out that i needed to add a padding of 4 bytes to the
>> float. After reading your link it made sense.
>> Now i will go over to get the UI right, even it is even a little bit
>> more confusing. At least the other modifiers are good examples on how to
>> create and use it. Even if i quite don't understand how it interacts
>> with the modifier and vice versa. But maybe reading the code will open
>> my eyes.
>> Jorge Bernal schrieb:
>>> Hi,
>>> Check this link:
>>> http://www.blender.org/development/architecture/notes-on-sdna/
>>> Regards,
>>> Jorge
>> _______________________________________________
>> Bf-committers mailing list
>> Bf-committers at blender.org
>> http://lists.blender.org/mailman/listinfo/bf-committers
> _______________________________________________
> Bf-committers mailing list
> Bf-committers at blender.org
> http://lists.blender.org/mailman/listinfo/bf-committers

More information about the Bf-committers mailing list