Aargh... I had wanted to do something like this, with triggers that set a 
gravity direction and strength while you were within them, like a VPhysics 
trigger.  They're fun.
Well, looking at your post, I believe that there's no way in the world that I 
would ever understand anything close to this.

> 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.

It would make for an awesome game though.  Imagine a 1024 cube... Here's 
looking forward to Ballmanmod.

Oh, and I recall that someone was asking why anti-gravity was not working 
somewhere before.
It's because gravity is frozen for the player if they are standing on something 
- just try setting negative gravity with sv_gravity.
Nothing happens to you if you're on the floor.
                                          
_________________________________________________________________
Use Messenger in your Hotmail inbox Find out how here
http://windowslive.ninemsn.com.au/article.aspx?id=823454
_______________________________________________
To unsubscribe, edit your list preferences, or view the list archives, please 
visit:
http://list.valvesoftware.com/mailman/listinfo/hlcoders

Reply via email to