Heh.<br><br>For the record:<br><br>It was I who first demostrated the possibility of using llSetForce/llApplyImpulse as a viable method of making a prim behave like a vehicle, some 10 months or so ago. During a conversation with one Owen Oyen (who is something of a physics guy), of SL and OSGrid, he became aware of my proof-of-concept efforts along these lines and produced a working vehicle script. <br>
<br>On the linden grid, Owen is a boat scripter and scripter of related technologies; he has, for instance, devised a means of producing current effects based on a model of the contour of the sea floor<br><br>While our current work is targeted directly at boating, it can be readily adapted to encompass all of the typical vehicle types of SL, without any of their vehicle functions.<br>
<br>This model is very primitive, as are those presented in the LSL Vehicle API as found in LL's LSL.<br><br>The characteristics of the LSL vehicle API as implemented by LL are quite simple:<br><br>1. Linear motors. These motors provide motive force parallel to a given axis or axes.<br>
2. Torque motors. These motors provide rotational force about an axis or axes.<br><br>That's it. Period.<br><br>These two models are further modified by a series of contraints that introduce the concept of friction or other load against the forces provided by these motors.<br>
<br>Tidy all this up into a 32 bit bitfield for describing the motive forces and their loads and wrap it up in a nice set of functions exposing this via LSL commands that characterise a vehicle 'type' (e.g., boat/car/plane) with any related constraints/dampers and you have Linden vehicle physics.<br>
<br>As I said, this is a highly simplified vehicle simulation model. There is no distribution of mass involved, no geometry-based drag. There is a single center of gravity at the geometric center. All motion produced by the calls to the API is produced around this center. The complexity all rests witth the description of the motive forces and their respective loading and damping. The forces are applied either to a simple prim in the simplest case, or to a linkset. If to a linkset, the linkset is treated as a single object except for collision purposes, the extent of which is to mesh any geometric complexities of the object.<br>
<br>The short story is, we have modelled LSL-style vehicles using little but llApplyImpulse and llSetForce, and a first-order friction calculation. Ironically, our experiences indicate that these vehicles are consistently better in their handling characteristics than what is available on the Linden grid. Indeed, about half of Owen's current work is in the interest of porting this work *back* to the linden grid.<br>
<br>Enough of that. Lets talk ODE :D<br><br>ODE *does* present some rich opportunities for simulation beyond the (arguably oversimplified) model presented by the LSL vehicle API. given the type of things I've seen reading the ODE documentation, my suspicion is that it's strong points for such simulations will be wheeled vehicles, tracked vehicles, walkers, and by extension, ragdoll/skeletal physics. These would certainly add an interesting element to the mix, and I am all for seeing these ideas roll forward.<br>
<br>I do, however, wish to draw a strong distinction between this ODE work and basic vehicle physics ala Linden Labs, as the vehicle paradigm in LSL is so heavily abstracted that 'simulation', for any meaningful employment of the word, is at best inaccurate, and at most hype. Worse, their method of 'simplifying' (read 'dumbing down'), adds significant processing cycles; were I to guess, I'd say that their API represents greater processing overhead than do the physics proper.<br>
<br>I'd say +1 for rolling forward with some OS functions for ODE; indeed, I would suggest (as I have been for some 9 months now) that ODE's interface be exposed directly in a set of OS functions, allowing the scripter to work in a relationship that is only once removed from the physics engine, in the interest of providing the fullness of the ODE featureset to the scripter. I think some fabulously interesting things would come of this, not the least of which might be a more interesting in-world experience for those of us who primarily employ this as an entertainment platform.<br>
<br>Keep up the good work y'all, this is an excellent dialogue and I hope I have contributed in some way to a clarification of the events surrounding our recent in-world vehicle work (btw we should be ready to demo some of this broadly this coming weekend), and to the issues that lie ahead as we work to bring more physics features to the scripting language and our virtual environment.<br>
<br><br>Cheers!<br>Hiro/daTwitch/Laz...etc.<br><br><br><br><div class="gmail_quote">On Wed, Nov 19, 2008 at 6:14 AM, Stefan Andersson <span dir="ltr"><<a href="mailto:stefan@tribalmedia.se">stefan@tribalmedia.se</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">



<div>
I for one would love to see it unfold something like this<br>
 <br>
1) one or several prototypical and specialized implementations coding directly to ODE but in a nice manner.<br>
2) the implementations refactored into a nice OpenSim API for ODE joints<br>
3) one or several implementations of vehicles utilizing this API directly<br>
4) these implementations refactored into a nice OpenSim vehicle API<br>
5) implementing the LSL vehicle model using this API<br><br>
so yeah, bottom up is the way to go, but with a clear goal in the back of our heads.<br>
 <br>
I for one would want to see the monorail module before the monorail lsl script.<br>
 <br>
I also suspect that along the lines, we might see that we want to implement vehicle types that don't fit into the lsl model... like the 'humanoid' or 'animal' - anybody up for building a stone giant or re-casting an agent in pure prims? :D<br>
 <br>Best regards,<br>Stefan Andersson<br>Tribal Media AB<br> <br>Join the 3d web revolution : <a href="http://tribalnet.se/" target="_blank">http://tribalnet.se/</a><br> <br><br><br><br><br>> From: <a href="mailto:adam@deepthink.com.au" target="_blank">adam@deepthink.com.au</a><div class="Ih2E3d">
<br>> To: <a href="mailto:opensim-dev@lists.berlios.de" target="_blank">opensim-dev@lists.berlios.de</a><br></div>> Date: Wed, 19 Nov 2008 02:01:27 -0500<div><div></div><div class="Wj3C7c"><br>> Subject: Re: [Opensim-dev] Using ODE for vehicles and ragdolls<br>
> <br>> Doesnt ODE have vehicle support internally? The concern I'd have about a vehicle layer over the top might be that performance is suboptimal since we need to run a second physics step which could introduce issues.<br>
> <br>> Regards,<br>> <br>> Adam<br>> <br>> > -----Original Message-----<br>> > From: <a href="mailto:opensim-dev-bounces@lists.berlios.de" target="_blank">opensim-dev-bounces@lists.berlios.de</a> [mailto:<a href="mailto:opensim-dev-" target="_blank">opensim-dev-</a><br>
> > <a href="mailto:bounces@lists.berlios.de" target="_blank">bounces@lists.berlios.de</a>] On Behalf Of Gerhard Dünnebeil<br>> > Sent: Tuesday, 18 November 2008 10:40 PM<br>> > To: <a href="mailto:opensim-dev@lists.berlios.de" target="_blank">opensim-dev@lists.berlios.de</a><br>
> > Subject: Re: [Opensim-dev] Using ODE for vehicles and ragdolls<br>> ><br>> > Hi<br>> ><br>> > having looked into the ODE engine I don't think it's usable for the<br>> > vehicle API.<br>
> ><br>> > Instead i think we should put the vehicle engine on top of it.<br>> ><br>> > This is pretty easily done by adding another layer (could/should be in<br>> > a<br>> > plugin).<br>
> > It can be called in each "Simulate" step and calculate the forces<br>> > needed<br>> > to achieve the vehicles behaviour.<br>> > These forces are then applied -- using the phys engine's API -- to the<br>
> > objects.<br>> ><br>> > This way we are<br>> > a) ... independant (at least theoretically) from the characteristics of<br>> > the underlying Phys engine<br>> > b) ... able to implement different engines for different purposes<br>
> ><br>> > I know someone (is it you, nlin?) already implemented a sailing boat in<br>> > OpenSim. A modular approach here would allow us to implement<br>> > alternative<br>> > friction models beyond what LSL gives us.<br>
> ><br>> ><br>> > Just my two cents<br>> ><br>> > Gerhard<br>> ><br>> ><br>> > nlin (message) wrote:<br>> > > Hello,<br>> > ><br>> > > There's been some discussion about SL-compatible vehicles in OpenSim<br>
> > > recently, with its higher-level abstraction of how vehicles work.<br>> > This<br>> > > would have the long-term goals of compatibility and ability to swap<br>> > > out physics engines while still using the same vehicle layer.<br>
> > ><br>> > > SL-compatibility and abstracting vehicles from the physics engine are<br>> > > good goals for the long term; sort of a top-down approach (start with<br>> > > the vehicle abstraction, map it to many different physics engines).<br>
> > ><br>> > > Complementary to this, I'd like to explore and start discussion of an<br>> > > alternative way of handling vehicles by using a bottom-up approach.<br>> > > Starting with the specific physics engine of ODE, can we use<br>
> > > ODE-specific features to make simple vehicles?<br>> > ><br>> > > I did some experiments with OpenSim and ODE and the answer seems to<br>> > be<br>> > > yes, we can make simple vehicles with ODE by using joints. We can<br>
> > also<br>> > > make ragdolls. I posted some videos to YouTube of the preliminary<br>> > results:<br>> > ><br>> > > <a href="http://www.youtube.com/watch?v=iYIh-eIwmjs" target="_blank">http://www.youtube.com/watch?v=iYIh-eIwmjs</a><br>
> > > <a href="http://www.youtube.com/watch?v=z9bedzIuxdM" target="_blank">http://www.youtube.com/watch?v=z9bedzIuxdM</a><br>> > ><br>> > > This is only prototype work for now, put together sort of quickly as<br>
> > a<br>> > > proof-of-concept with just enough "plumbing" (data flow) to work.<br>> > > There are a number of issues that need to be solved for this to work<br>> > > cleanly. As far as I know (please correct me if I'm wrong) there<br>
> > > hasn't been much work done to try to get ODE joints/vehicles/ragdolls<br>> > > working in OpenSim, but I think it's an avenue worth exploring.<br>> > ><br>> > > Is there interest in pursuing this approach for OpenSim vehicles? I<br>
> > > would look forward to discussing some of the issues that would need<br>> > to<br>> > > be solved.<br>> > ><br>> > > Thanks,<br>> > > N Lin (nlin)<br>> > ><br>
> > > ---------------------------------------------------------------------<br>> > ---<br>> > ><br>> > > _______________________________________________<br>> > > Opensim-dev mailing list<br>
> > > <a href="mailto:Opensim-dev@lists.berlios.de" target="_blank">Opensim-dev@lists.berlios.de</a><br>> > > <a href="https://lists.berlios.de/mailman/listinfo/opensim-dev" target="_blank">https://lists.berlios.de/mailman/listinfo/opensim-dev</a><br>
> > ><br>> ><br>> > _______________________________________________<br>> > Opensim-dev mailing list<br>> > <a href="mailto:Opensim-dev@lists.berlios.de" target="_blank">Opensim-dev@lists.berlios.de</a><br>
> > <a href="https://lists.berlios.de/mailman/listinfo/opensim-dev" target="_blank">https://lists.berlios.de/mailman/listinfo/opensim-dev</a><br>> _______________________________________________<br>> Opensim-dev mailing list<br>
> <a href="mailto:Opensim-dev@lists.berlios.de" target="_blank">Opensim-dev@lists.berlios.de</a><br>> <a href="https://lists.berlios.de/mailman/listinfo/opensim-dev" target="_blank">https://lists.berlios.de/mailman/listinfo/opensim-dev</a><br>
<br></div></div></div>
<br>_______________________________________________<br>
Opensim-dev mailing list<br>
<a href="mailto:Opensim-dev@lists.berlios.de">Opensim-dev@lists.berlios.de</a><br>
<a href="https://lists.berlios.de/mailman/listinfo/opensim-dev" target="_blank">https://lists.berlios.de/mailman/listinfo/opensim-dev</a><br>
<br></blockquote></div><br><br clear="all"><br>-- <br>===================================<br>The wind<br>scours the earth for prayers<br>The night obscures them<br><br><a href="http://osgrid.org">http://osgrid.org</a><br>
<a href="http://del.icio.us/SPQR">http://del.icio.us/SPQR</a><br><a href="http://twitter.com/jstallings2">http://twitter.com/jstallings2</a><br><a href="http://www.linkedin.com/pub/5/770/a49">http://www.linkedin.com/pub/5/770/a49</a><br>