You should write a Source SDK Wiki article on your findings Joel, very interesting stuff. :)
On Wed, Oct 14, 2009 at 2:23 PM, Joel R. <[email protected]> wrote: > This is very very possible. > > Objectives and problems you have to overcome to meet this goal: > > > - Use Quaternions to break Gimbal Locking (happens with Matrix and Euler > Angles). You can download a nice set of Quaternion functions from Ogre > Engine (free download) and with some slight tweaks they will work on > Source. Quaternions are basically an Up Direction (vector), and an Angle > (float). There is a function called "Slerp" that will let you smoothly > orient between 2 quaternions. There are multiple ways to create > Quaternions > using Matrices or Vectors. > > > - You'll have to keep a new vector that saves your "gravity direction". > If you want to orient automatically you'll need to constantly trace > downwards along your gravity direction and based on the new Ground > Normal, > allow orientation or not. > > > - Source uses AABB which means your player box will never rotate, ever. > This causes a problem with your origin. When you rotate onto a wall, > your > origin will be much closer to the ground than before. Simply hack around > this by adjusting your RenderOrigin up X units off the ground (when you > are > on it of course). > > > - Jumping was one of the bigger problems I first encountered. This is > better suited for orientations based on events, if you want automatic > orientation based on the ground the player is on, you'll need to have > multiple traces of different lengths to make sure you maintain the > correct > orientation. You can also trigger going to a default gravity if you are > in > the air too long or the ground your over is to complicated or is > orienting > too fast. > > > - You'll have to orient your models correctly. Models use Euler Angles > for orientation, so if you use Quaternions, you'll have to convert to > Matrix > and then to Euler Angles. Not such a biggy, but Euler angles were never > meant for 6 degrees of freedom usage. If you want to use them, only use > them > in the local world space where everything is oriented at (0,0,1). Then > convert to world space. > > > - Wall collision is another big problem you will encounter. Since you > won't have the luxury of using the players bounding box for tracing, > you'll > have to be accurate with line traces. I constantly found myself getting > knocked off the ground because of odd terrain. Stairs is another wall > collision problem you have to face. This requires more line traces going > in > your movement direction starting from the top of your player model to the > middle and so on. You have to make sure you can actually move forward if > not > you'll get yourself stuck in the terrain. > > > - Other Entities is the last problem. So far you've only managed the > players. Now you have to manage all other entity objects. You'll have > to > follow the same basic principles as the player orientation depending on > what > your entities do. Physics entities have to all orient based on the same > gravity direction, if you want each one to have it's own orientation, > you'll > need to work with the physics interface. This requires managing the > angular > velocity and linear velocity. This is more complicated, and if you can > pull off the player orientation, you should be able to figure a way to do > this. > > > > > On Wed, Oct 14, 2009 at 3:21 PM, Adam "amckern" McKern <[email protected] > >wrote: > > > Its possible, but very hard to get going - though i did not change the > > view, i did make it so that your movement is dependent on shooting > weapons > > in a ZeroG environment > > > > http://www.nigredostudios.com/prime/screenshots/zerog0002.jpg > > > > -------- > > Owner Nigredo Studios http://www.nigredostudios.com > > > > --- On Thu, 15/10/09, Tony Paloma <[email protected]> wrote: > > > > From: Tony Paloma <[email protected]> > > Subject: Re: [hlcoders] Arbitrary Gravity Direction > > To: "'Discussion of Half-Life Programming'" < > > [email protected]> > > Received: Thursday, 15 October, 2009, 4:08 AM > > > > IPhysicsEnvironment has a function called SetGravity that takes a Vector. > > You can use it to set an arbitrary direction for gravity, but it will > work > > for VPhysics objects only. I didn't check if this information was in that > > thread you posted. Sorry if it was. > > > > If you have an instance of VPHYSICS_INTERFACE_VERSION, you can get the > > environment by: > > pPhysics->GetActiveEnvironmentByIndex(0); > > > > -----Original Message----- > > From: [email protected] > > [mailto:[email protected]] On Behalf Of > > [email protected] > > Sent: Wednesday, October 14, 2009 6:39 AM > > To: [email protected] > > Subject: Re: [hlcoders] Arbitrary Gravity Direction > > > > See this thread for a discussion and partial implementation of arbitrary > > gravity direction. > > http://forums.steampowered.com/forums/showthread.php?t=778484 > > > > I never got it working entirely right, and gave up on it anyway :) > > And it never did props. > > > > -- > > This message was sent on behalf of [email protected] at openSubscriber.com > > > > > http://www.opensubscriber.com/message/[email protected]/129248 > > 43.html< > http://www.opensubscriber.com/message/[email protected]/129248%0A43.html > > > > > > _______________________________________________ > > To unsubscribe, edit your list preferences, or view the list archives, > > please visit: > > http://list.valvesoftware.com/mailman/listinfo/hlcoders > > > > _______________________________________________ > > To unsubscribe, edit your list preferences, or view the list archives, > > please visit: > > http://list.valvesoftware.com/mailman/listinfo/hlcoders > > > > > > > > > > > > > > __________________________________________________________________________________ > > Get more done like never before with Yahoo!7 Mail. > > Learn more: http://au.overview.mail.yahoo.com/ > > _______________________________________________ > > To unsubscribe, edit your list preferences, or view the list archives, > > please visit: > > http://list.valvesoftware.com/mailman/listinfo/hlcoders > > > > > _______________________________________________ > To unsubscribe, edit your list preferences, or view the list archives, > please visit: > http://list.valvesoftware.com/mailman/listinfo/hlcoders > > -- ~Ryan ( skidz ) _______________________________________________ To unsubscribe, edit your list preferences, or view the list archives, please visit: http://list.valvesoftware.com/mailman/listinfo/hlcoders

