Task:
The goal of this final project is to synthesize everything we've learned in WebGL/Three.js this semester and create a movie. You are free to design and implement any movie you like, as long as it incorporates the required functionality described below. You may reuse any code that you've already written this term.
You are welcome to work in a team of two, but please make sure that everyone contributes equally. Note that a more complex project is expected from a team than from a student working alone.
Requirements
The overall framework for your final project must include the following features:
1. Scene and Camera
Your movie environment must be a scene consisting primarily of 3D objects. I will leave this open-ended, but there should be some context (i.e. floor, walls, a room, an outdoor scene, objects, other characters).
Your movie should provide perspective views of your 3D scene while the viewpoint (camera) changes position smoothly over the entire scene, to give the user the sense of navigating your world.
2. Hierarchical Modeling and Animation
Your movie should include at least one hierarchical model (using the idea of "container" objects to create a movement hierarchy). The hierarchical model should be animated using keyframe interpolation, and should move continuously as the camera flies over the scene.
3. Blender Character
Your movie should include at least one 3D "character" imported from Blender. It does not necessarily need to be human or animal like, but it should be reasonably sophisticated (i.e. not just a square or sphere), and it must be created by yourself. If you decide to animate your Blender character, it might be helpful to create some of the character's body parts as separate 3D objects, so that their movements can be isolated and controlled.
If you decide to import an existing online Blender model (in addition to the one created by yourself), please check the license conditions under which the model is released, to make sure you're allowed to use it. Also, add a line to your webpage crediting the source.
4. Texture Mapping At least part of the 3D scene should be texture mapped.
5. Lighting
Use at least two light sources to clearly illuminate the scene.
6. Additional Feature: Incorporate at least one additional feature beyond these capabilities (one that wasn't part of any lab/homework solution). Examples include: simple collision detection for your animated object; having two animated objects interact with each other; having one character chase or run from another; using a cubic Bezier spline for the trajectory of an object (or the camera). The possibilities are endless.
7. The length of your movie should be anywhere between 30s and 60s (before it stops, or starts repeating itself).
Submit
1. First, write a paragraph telling the story of your movie. Then describe how your project meets the requirements listed above. Your write-up should also report any known bugs.
2. Second, upload all your project resources on your website. Do not make any changes to your project resources past the due date of this final project.
3. Third, email me both the write-up and the link to the main source file for your project. If I click on this link, I should immediately see your movie. I will not debug your code, so please make sure that your link works (you may want to test your link on different devices, to be safe). A non-working link, or any other form of submission, will receive zero credit. If this is a team project, only one submission is needed. Turn in your write-up and code under ONE student name, and clearly list the names of the team members in the write-up.