Editing the egg is not the only way, I just think it's the best way.
If you write down the names of your objects from max, then all you need to do is find a group with that name and add one more line. Let's say you have the object named 'my_collision_1' - use any text editor that has find/replace options (even Notepad has that!)
find:
- Code: Select all
<Group> my_collision_1 {
replace with:
- Code: Select all
<Group> my_collision_1 {
<Collide> my_collision_1 { Polyset descend }
repeat for my_collision_2, my_collision_3, ..., my_collision_179
As for the options I best quote the manual:
<Collide> name { type [flags] }
This entry indicates that geometry defined at this group level is
actually an invisible collision surface, and is not true geometry.
The geometry is used to define the extents of the collision
surface. If there is no geometry defined at this level, then a
child is searched for with the same collision type specified, and
its geometry is used to define the extent of the collision
surface (unless the "descend" flag is given; see below).
Valid types so far are:
Plane
The geometry represents an infinite plane. The first polygon
found in the group will define the plane.
Polygon
The geometry represents a single polygon. The first polygon is
used.
Polyset
The geometry represents a complex shape made up of several
polygons. This collision type should not be overused, as it
provides the least optimization benefit.
Sphere
The geometry represents a sphere. The vertices in the group are
averaged together to determine the sphere's center and radius.
InvSphere
The geometry represents an inverse sphere. This is the same as
Sphere, with the normal inverted, so that the solid part of an
inverse sphere is the entire world outside of it. Note that an
inverse sphere is in infinitely large solid with a finite hole
cut into it.
Tube
The geometry represents a tube. This is a cylinder-like shape
with hemispherical endcaps; it is sometimes called a capsule or
a lozenge in other packages. The smallest tube shape that will
fit around the vertices is used.
The flags may be any zero or more of:
event
Throws the name of the <Collide> entry, or the name of the
surface if the <Collide> entry has no name, as an event whenever
an avatar strikes the solid. This is the default if the
<Collide> entry has a name.
intangible
Rather than being a solid collision surface, the defined surface
represents a boundary. The name of the surface will be thrown
as an event when an avatar crosses into the interior, and
name-out will be thrown when an avater exits.
descend
Instead of creating only one collision object of the given type,
each group descended from this node that contains geometry will
define a new collision object of the given type. The event
name, if any, will also be inherited from the top node and
shared among all the collision objects.
keep
Don't discard the visible geometry after using it to define a
collision surface; create both an invisible collision surface
and the visible geometry.
level
Stores a special effective normal with the collision solid that
points up, regardless of the actual shape or orientation of the
solid. This can be used to allow an avatar to stand on a
sloping surface without having a tendency to slide downward.
In most cases you should use 'Polyset descend' for invisible collision geometry and 'Polyset keep descend' if you want to use the visible geometry to make collision.
I just tested the exporter (and the maxscript) and it work... provided you don't want to export the collisions with both 'keep' and 'descend' flags. The max-script-gui-thing doesn't allow to put two flags, written manually only the first one will get exported.
I may be totally wrong, cause I'm a dancin' fool.