[Bf-committers] Softbody architecture

joeedh joeeagar at prodigy.net
Wed Feb 2 03:09:27 CET 2005


bjornmose wrote:

> Ton Roosendaal wrote:
>
>> Hi,
>>
>> Checking on the softbody status;
>> http://wiki.blender.org/bin/view.pl/Blenderdev/Softbodies
>
> Note: this is a proposal for vertex/vertex(goal) forces and other 
> outer forces (garivation, friction to environment )interactions. The 
> ODE solver takes other forces happyly. So it is on the softbodies team 
> to decide what kind of interaction should be simulated. ( which will 
> end up in the collision detection discussion again ..  i know )
>
>> I'm still hesitating to make a choice for how to proceed with  
>> integrating it... with Blender's animation system in mind we can  
>> basically make three choices;
>>
>> 1) Integrated in Object types (Mesh, Curve, etc)
>> The simplest method is adding the necessary data for softbody (like  
>> 'spring' and 'goal' constants) to existing structures in Mesh (like  
>> vertex groups). That way it can quickly work, including tools for  
>> vertex painting etc.
>> Disadvantage; add softbody to Curve, Lattice etc. then is very  
>> cumbersome
>
>
> This is basicly how the current test implementation works. It already 
> shows the lack of flexibility in interacting with other objets.
> e.g. 'spring' links are only possible within the (original) objects data.
> Still there would be the need for an interactive tool for setting up 
> spring links. The rule 'edge becomes spring' is too restrictive for 
> many needs.
>
>>
>> 2) Generic Object level Softbody data
>> Each Object can get the full data required for softbody, including 
>> all  vertex information (with indices mapped to actual vertices for 
>> 3d  coords) and springs. Routines (special editing mode?) are needed 
>> to  convert Mesh->Softbody, edit springs and 'body points', and new 
>> tools  have to be written for painting tools.
>> This is how Maya does it, including the 'error' that arises when  
>> editing the Mesh itself; deleting vertices then screws up the 
>> indices  in the Softbody structure. We can do better, of course. :)
>> Disadvantage: This method is a bit 'un-blenderish', especially 
>> because  the object itself is extended with a lot of data and editing 
>> methods...  probably causing clumsy (modal) UI methods as well.
>>
>> 3) New Object type
>> We can also provide a new type of Object, which then offers a 'soft  
>> body construction kit' in editing mode, allowing its own editmode 
>> for  physically behaving bodypoints to be added, springs, painting 
>> weights,  etc. Main issue to solve then is establishing 
>> relationship(s) with  another Object (or Objects). However, this can 
>> be done based on a  deforming (parent) relationship (like a Lattice), 
>> or on a "map indices"  method - where the vertex coordinates of a 
>> softbody are copied from/to  another Object based on index numbers, 
>> like in the previous type. Plus  it can support Hooks, vertex 
>> parents, etc.
>> Disadvantage: Making a Mesh Object to "Softbody" then is a bit  
>> clumsy... but could be done with an option that automatically 
>> converts  the Mesh data to a new Object, and inserting it as a Parent...
>>
>> Writing down the three choices makes me tend to the third option, 
>> which  basically is the mythical Emo Object, as being hyped a while 
>> during  conferences. :)
>> Best positive side of the third choice is that it becomes very  
>> 'Blenderish', fitting in the current architecture (and UI) nicely.
>>
>> -Ton-
>
>
> humm .. when i read your original code in softbody.c first, i felt 
> those questions coming up. Working on it for a while, i saw the entire 
> impact. So i decided to commit the code for the physics engine to get 
> this discussion running and not making any decition on how to 
> integrate it into blender. However, i think there is the need for a 
> higher abstraction level than option 1) can offer. Making a choice 
> between 2) and 3) is beyond my level of knowledge about 'Blenderish'ness.
>
> -Ole-

Take a look at http://wiki.blender.org/bin/view.pl/Blenderdev/ObjectType 
.  It's a (incomplete) tutorial on adding a new object type to Blender.  
You may find it somewhat useful.

joeedh


More information about the Bf-committers mailing list