Tuesday, April 8, 2008

I wonder who is reading this over my shoulder

It proves impossible to type notes for Computational Models of Speech, there are too many squiggly lines, too many omegas, too much supertext. So much for that.

Basic physics engine (second milestone) doesn't have to be fancy, "bells and whistles" can be added later. Updating state iteratively with accelerations, rotations, positions, et cetera. First-level behaviors, basically.

First milestone ( design document ) pushed back one class. Is the second (physics) also pushed back? His answer is unclear.

physics takes a state and a control, returns a state.

Steering Behaviors:

seek (target)
v = target.pos - self.pos
return (maxAccel * normalized(v), 0)

path following
t = pathParamClosest (self.pos)
targetPos = path(t +Dt)
seek targetPos

predictive path following
find where your headed
find the point on the path closest to that
aim for that instead
that is
targetPos = self.pos + Dt * velocity
param = pathParamClosest (target.pos)
seek (param)

He just said "Catmull-Rom Splines" again.

Approaches to steering:

Arbitration
eg. "arriving" steering

Weighted Blending
weights associated with steering behaviors
w.i , s.i
s = sum.i(w.i * s.i(target))
interesting...
but situations exist where weights can balance out

Flocking
combine:
separation (not too close to neighbors)
cohesion (not too far away from neighbors)
alignment (with the velocity and direction of the flock)

Priority Based Combination
blended groups ordered by priority
find the highest priority behavior that provides "meaningful steering"
ex:
(high, collision avoidance)
(med, enemy avoidance)
(low, path following)

No comments: