A. As far as I know, there is no way to directly control the
number of polygons that are contributed by rounded primitives such as cones,
cylinders and spheres. So, to get an exact count, use only boxes
and simple indexed face sets in your low LOD model.
A. Ok, you will build two versions of your model: a normal version, and a reduced version. It is the normal version of your model that we will judge for complexity and interest. The normal version must contain:
Your reduced version should look approximately like your normal version, but contain significantly less polygons. We define "significantly less" to mean less than 200 polygons, which means that your normal version should have more than 200 polygons. The difference in polygons between your two models is not defined: it should satisfy the above constraint, and should provide for a normal model that is detailed and looks smooth. If you are in doubt, err on the side of more complexity in your normal model. There is no lower bound on the number of primitives or primitive types in your reduced model, as long as it looks approximately like the normal version.
So, how does one determine how many polygons are in the reduced model?
Boxes have 6 polygons, and the number of polygons in an IndexedFaceSet
is defined in the node; these can be counted. The number of polygons
that go into rendering Cones, Cylinders, and Spheres is determined by the
renderer, though; you have no direct control over this number. For
that reason, you probably want to avoid using Cones, Cylinders, and Spheres
in your reduced model. Where you use a Cylinder in your normal model,
try using a Box in your reduced model. You can make similar substitutions
for the other types.
A. You may use JavaScript if you wish, but it is not required.
Script nodes allow you to do more complicated animations, since you can
keep state variables between different animation segments; however, you
can complete all of the requirements of the assignment without using any
Scripts.
A. This is kind of tricky. Basically, any events that you want to send between nodes that reside in different files must be done through the prototype's declaration. See the example ProtoEvents.wrl. This file has a cone, a sphere, and a cylinder, all in separate files. Each primitive sends a different kind of event out through its interface to animate the square that resides in the main file. This requires that each EXTERNPROTO have the correct kind of eventOut in its declaration.