On 4 janv. 07, at 00:49, Jacques Rebourcier wrote:

Marmoute,

I understand that by default a Soya.Body _is_ a "ode body" if Soya.Body.ode =
True (which is the default).

By default a soya.Body __may__ be an Ode Body. Ode support turn on in many case (mostly when you set and ode property *) and could be checked with the soya.Body.ode property (which should be False by default)

*(For example if you set the mass attribute of a non-Ode-management body, ode support will turn on for it.)

I understand that a Soya.World _is_ a "ode world" by default (because world
inherit Body, so has a Soya.World.ode=True, correct ?),

A soya.World __may__ be an Ode Body (because the soya.Body inherence) **and** __may__ be an Ode World It may be the both and have two property to check it soya.World.ode (which are in fact soya.Body.ode) and soya.World.odeWorld:

Both should be False by default.

Each world can have a collision space. I don't know if I must set
soya.World.has_space to true to activate collision detection in that World (i assume it is at True by default, correct ?). I don't know how to allocate soya.World.space (I assume, it is done automatically, so the space type is
not configurable, correct ?).

The has_space property should be False by default. By default a SimpleSpace will be allocated, but it's design to explicity assign different space type to a World. As a world can only have a single Space the creation of any new Space for a World will replace the old one (and transvase it's content into the new one). The Space of a world is the first argument of the Space constructor ( SimpleSpace(bibi) #will create a Space for the bibi world)

I understand that by default, a ode body will be placed in the "nearest" ode
world.

True, when you activate ode management for a Body it'll travel up the World tree to find an ode World if not found, it enable the root as an odeWorld.

If I create a ode Geom for that body, it will be placed in the space
of the nearest "ode world". Correct ?



False, each body (with collision detection) will be placed into the Space of it's parent World* and each Space will be placed into the Space of it's parent until you get the root space.

*(not that the body's space are automatically changed when the body's parent change.)

So by default the ode integration is "nested / related" to a World. So I assume several ode world can exist independantly in a soya scene. So I assume Collide and Stepping are managed begin/end round of soya.World, correct ?

Yop you're right. But take care that Ode architecture use a **single** world for all his operation (but allow several nested Space) And two object can interact only if they are both into the __same__ world !

So it's possible to have more that one Ode, world but in most case you only need the root to be and Ode World.

I assume world manage contact group (delete contact joints) and call
automatically Body.hit function for the 2 bodies involved in the contact,
correct ?

Yop you're right

If I want manage a global ode world, I must deactivate ode attribute in
intermediate Worls, correct ?

False, since all the intermediate world should'nt be ode managed by default. If I made mistake and the property have wrong valu let me know and I'll investigate the issue.

But I do not see doc about joint classes (just see a Joint class), normal ?

Hum I don't get the time to write the Joint doc. And I don't very well this part of Ode. But all the Joint classe should have been pretty well implemented and could be used in the way I hope the most natural.

If you can play a little with the Joint and tell me what you think about it I'll be very pleased. (reading the source should be a good doc if you need it.)


I'll then write tutorial from you're "play/work".



--
marmoute




_______________________________________________
Soya-user mailing list
[email protected]
https://mail.gna.org/listinfo/soya-user

Reply via email to