Hi, Check this link: http://www.blender.org/development/architecture/notes-on-sdna/
Regards, Jorge 2010/10/8 Tobias Oelgarte <tobias.oelga...@googlemail.com> > So far i edited 10 different places. But if i try to compile it, i get > this confusing error message from makesdna: > > ... > scons: > `/media/Trekstor_01/temp/blender-trunk/build/linux2/lib/libbf_imbuf.a' > is up to date. > "/media/Trekstor_01/temp/blender-trunk/build/linux2/makesdna" > > /media/Trekstor_01/temp/blender-trunk/build/linux2/source/blender/makesdna/intern/dna.c > Running makesdna at debug level 0 > Program version: $Id: makesdna.c 31990 2010-09-18 03:46:13Z > campbellbarton $ > Sizeerror 8 in struct: RestoreVolumeModifierData (add 4 bytes) > scons: *** > > [/media/Trekstor_01/temp/blender-trunk/build/linux2/source/blender/makesdna/intern/dna.c] > Error 1 > scons: building terminated because of errors. > > So far as i read the code, it checks if the struct has the correct size. > But is something wrong with my struct? I can't see it: > > from DNA_modifier_types.h: > typedef struct RestoreVolumeModifierData { > ModifierData modifier; > // own data > float volume; /* volume that mesh should have after > applying modifier */ > char name[32]; /* name of vertexgroup that defines wich > areas can grow/shrink */ > } RestoreVolumeModifierData; > > > > Phil Gosch schrieb: > > 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 > > > > > > _______________________________________________ > 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