Thanks for the link to the source page James! In my spare time I'd like to join the developers on this project. I think I see some spare time in my schedule for 2015. Unless I'm lucky and I get laid off before then...

When I look at the OLEDynamics.cs code, I see a test on line 806: if VehicleFlg.NO_Z is set, then the m_dir.Z is set to zero. If NO_Z is set, then it could explain the problem I am having. So I tried resetting that flag but it did not allow the linear motor to move up. Still no luck. I tried setting the VEHICLE_FLAG_NO_X, and that worked! I can prevent the vehicle from moving in the X direction. But still nothing can get the vehicle to move in the Z direction. I tried moving the llResetVehicleFlags(VEHICLE_FLAG_NO_Z) to just before the call to start the vehicle moving in the script, under the hypothesis that NO_Z was being set by some other call, but still no luck.

Then I looked in the ODEDynamics.cs code where, starting at line 663, the comments from KF say "So far I have found no good method to combine a script-requested .Z velocity and gravity". Then he proceeds to replace the requested linear motor Z value with the current Z velocity of the body. Since a balloon is buoyant, the Z of the current velocity is always 0 and this looks like it is probably the problem. It always resets the linear motor Z value to 0 here. I'll have to think about what should be done here...


On 6/7/12 5:51 AM, James Hughes wrote:
Mike,

I guess that no one that deals with vehicles has taken a look at that code in a good while now. Since you have a handle on this from the LSL side, why don't you have a look at the OpenSim ODE code for that? I did look at it and it looks pretty straightforward. Maybe you can see something from that side.

https://github.com/BlueWall/opensim/blob/master/OpenSim/Region/Physics/OdePlugin/ODEDynamics.cs#L824

d is Ode.NET which contains functions found here: http://ode-wiki.org/wiki/index.php?title=Manual:_Rigid_Body_Functions

If you see something there, you can submit patches (or hit us with a clue stick) and we can get it fixed. It may be as simple as calling d.BodyGetRotation and plugging the result into the equation: https://github.com/BlueWall/opensim/blob/master/OpenSim/Region/Physics/OdePlugin/ODEDynamics.cs#L845

Thanks!
-BlueWall

_______________________________________________
Opensim-dev mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/opensim-dev

Reply via email to