Re: how to stopbody enabling by joint
Mark Williams <[email protected]> Tue, 30 Oct 2007 12:30:29 -0700
| Newsgroups | gmane.comp.lib.ode |
|---|---|
| Message-ID | <[email protected]> |
Krystian Ligenza wrote: > Mark Williams pisze: >> Mark Williams wrote: >> >>> Krystian Ligenza wrote: >>> >>>> Mark Williams pisze: >>>> >>>>>> Krystian Ligenza wrote: >>>>>> >>>>>>> I have look more in mailing list archive, and see that this >>>>>>> topic was many times discussed. Main problem is how to set that >>>>>>> joint should only affect one body and other left unforced. >>>>>>> Maybe we should think about adding flag for this, by adding >>>>>>> dJointSetXXXParam with dParamAffectBoth, dParamAffectFirst, >>>>>>> dParamAffectSecond? If joint can link with world, this should >>>>>>> not be impossible to do - correct me if I'm wrong? >>>>>>> >>>>>> Why wouldn't you just create the joint attached to the affected >>>>>> body and the world (NULL), then? I do that for collisions in >>>>>> certain cases, for example. >>>>>> >>>>> If you attach a joint to a null-body, then the joint considers >>>>> that body to have zero velocity. This is a potential source of >>>>> error when colliding against non-simulated yet animated geoms. I >>>>> think Krystian's patch has a great deal of value. >>>>> >>>> Hope that you are talking about "void dJointSetFixedBodies >>>> (dJointID j,const dVector3 p1,const >>>> dQuaternion q1,const dVector3 p2,const dQuaternion q2)" function >>>> that I proposed for adding, becouse I haven't add what I was >>>> talking about in this mail (about dJointSetXXXParam ). I have >>>> thought, that only thing that is need to be change for all joints >>>> is XXXGetInfo2(...), but It seems that all step functions also >>>> check if joint is attached to Body and World, so this become too >>>> time consume for me to make it good. Also joint can be attached to >>>> World - Body, or Body - World, but internally it is always >>>> Body-World, so making a param that hide one of Bodies as World >>>> would be a tricky part. I may be wrong but it seems that by adjusting the variables b1 and b2 on lines 709 and 710 in quickstep.cpp might be enough to get things going? Cheers, Mark