You will want to use a bounding volume rather than the center of the object
to determine what node(s) it is in. You can either include it in all of the
nodes that it intersects, but be sure to only render it once. You can push
it up to the parent that owns all of the nodes it intersects, or you could
use "loose" octrees to tweak the node to completely encompass the object.
See Game Programming Gems for an article on loose octrees.
From: Chris Brodie [mailto:Chris.Brodie@...]
Sent: Sunday, January 28, 2001 8:07 PM
Subject: [Algorithms] Texture mapping, Weighted Vertex Normals and Octree
Just say I have a stone. The stone is roughly spherical(convex). I have a
texture that has been made tileable and would like to wrap the stone in the
texture without seams. This concept seems quite difficult for me without the
use of some bizzare shape dependent use of spherical mapping and modifying
the texture. How does one do this?
Weighted Vertex Normal:
I tried the technique that was posted a few days ago (the whole code sample)
however I seem to have a strange artifact on the screen now. Organic shapes
seem to have slight highlights along their edges. I noticed a few posts
about calculating angles and area, could I get more information on that? How
does the area relate to the normal weight? Are there any example around you
guys know of?
When placing object in to an octree how do I handle cases where the
object(say a car) is perfectly centrered at 0,0,0 or in face any edge or
junction of cubes. It seems to that the object will inhabit a neighbouring
node but not be linked from there. Why ask? Well if a large object say an
aircraft carrier's centre lived in a node that wasn't in view but the nose
was it wouldn't get drawn. I think I've missed the point somewhere.
Hopefully the answer isn't clip at octree boundries...
From: Pierre Terdiman <p.terdiman@wa...> - 2001-02-05 09:25:05
Two questions about motion blending in skeletal animation:
- First, a basic one about the correct terminology. I've always used the
words "motion blending" to describe the smooth transitions between one
motion to another. But then, for some people it seems to be related to
mixing one part of a motion (say a run) with one part of another (say
raising the arm). So, motion blending = what? And how is called "the other
one" in correct character-parlance, hmmm?
- Second, an authoring question. How do you edit the transitions between
motions? Do people usually rely on a custom editor to do this? Is there a
way to edit this in MAX - or another package?
In my last engine I've spent some time hardcoding those things, and I don't
want to do this again!!
(Just for fun, here's how it looked for *one* transition.
trc.Name = "StopToJumpRun1";
trc.TargetMotionCell = JumpRun1Cell;
trc.BlendDuration = 10;
trc.SourceBaseFrame = 0;
trc.TargetBaseFrame = 0;
trc.TimeBlendData.MappingType = TBLEND_LINEAR;
trc.Activation = BLEND_DIRECT;
trc.Event.NbBasicEvents = 1;
trc.Event.BasicEvent.ID = EVENT_JOYSTICK;
trc.Event.BasicEvent.Param.d = JOYSTICK_BUTTON1;
trc.Event.BasicEvent.AllowedDelay = PFX_MAX_FLOAT;
trc.MotionInterval.StartFrame = 0;
trc.MotionInterval.EndFrame = PFX_MAX_SDWORD;
trc.ValidityInterval.StartFrame = 0;
trc.ValidityInterval.EndFrame = PFX_MAX_SDWORD;
trc.CallBack = Jumping2;
That again? No way!)
Pierre Terdiman * Home: p.terdiman@...
Coder in the dark * Zappy's Lair: http://www.codercorner.com
From: Klaus Hartmann <k_hartmann@os...> - 2001-02-05 17:11:18
I'm using planes all the time and they work well for me, but if I'm honest
then I have to admit that I don't fully understand the plane equation
Ax+By+Cz+D=0. I've looked in all sorts of places for a good explanation
(including math books), but I wasn't able to find anything that really helps
me. Maybe someone can shed some light into it.
Here's what I *believe* I understand so far.
A plane is defined by the infinite set of points P(x, y, z) that satisfy the
condition Ax+By+Cz+D=0 (that is a plane is defined by the set of points that
lie on the plane). The coefficients A, B, and C are the components of the
vector normal to the plane, N = (A B C), and D is some constant. This
constant D seems to be the distance from the origin to the plane, if and
only if the normal vector N is a unit vector.
I also know that I can rewrite the above plane equation as (N _dot_ P) + D =
0. This is obvious, and I can use this information to classify a point
(determine in which half-space it is) or to calculate the signed distance
from the plane to the point (if the normal vector N is a unit vector).
My question: "Why? Why does the above work the way it works?". I believe my
biggest problem here is that I have trouble to understand the true meaning
of the constant D.
Hope someone can help.