Highlights
Overview
In the final project, you will use three.js to create four scenes that run in your internet browser, specifically:
1. A scene with a static (non-moving) camera and dynamic (moving) objects
2. A scene with a static camera and static objects
3. A scene with a dynamic camera and dynamic objects
4. A scene with a dynamic camera and static objects
Starter Code
There is a ZIP folder on Moodle called sample_models.zip that contains a number of example 3D models (in both .obj format and .js format). Due to the local file loading restrictions of modern browsers, its difficult to load a .obj file dynamically in Javascript, therefore we have converted the .obj files to .js format, which is simply the verbatim content of the .obj file defined as a Javascript string.
You can download the sample models, preview the .obj files using a 3D viewer such as Meshlab or the one built-in to Windows or MacOS, then select the model(s) you need, and move/copy the corresponding .js file to the models/ subfolder in your project folder. In order to keep the submission file as small as possible, please only include the models you need in that subfolder.
Due to the creative nature of this project, you are encouraged to also find other 3D models to use in your scenes. You can look around online, and websites such as good starting point to find .obj files. Please do not buy any 3D models just to use in this project, and make sure that any outside files you are downloading are safe (no viruses), legally-obtained (not pirated/stolen), and in the .obj file format (expected file format). Note that, when using outside files, you may need to spend some time at first adjusting the size and rotation to fit properly in the scene.
Open any of the HTML files the scenes/ in a browser, you should see a drawing window and scene with two bunnies (with or without dynamic cameras/objects, depending on the file). The main key/mouse controls are documented at the bottom of the webpage.
Hierarchically
simulate their motions according to the hierarchy you define. Scenes with dynamic objects need to contain a minimum of 3 levels of hierarchy. The image on the first page shows the concept of levels. For example, if you are modeling a solar system, the sun is the root level (first level), planets (e.g., Earth) are the second level, planets moons are the third level, and moons satellites would be the fourth level. If you are modeling a robot arm, there should be a minimum of 3 arms, each inheriting the motion of the previous arm its connected.
Because different 3D models may have dramatically different scales, your code must scale each model appropriately so that the sizes of different models look coherent and comply with your design. Some 3D models may even be off-center (i.e. the object center is not the origin), in which case you will need to translate them appropriately so they appear at the right positions. If a model appears extremely large, or does not appear at all, chances are its not scaled or positioned properly.
For creating hierarchies, you should use the three.js Group class. Examples are demonstrated in class (also check the provided example scene robot_arm.html). Be creative – a solar system and a robot arm are obvious starting examples, but your submission must be novel and imaginative
There is a global variable called animation speed. When creating animation of your scene, make sure you multiply your parameters by this variable, as the starter code does, so the animation speed can be adjusted on the fly (using the = / - keys). – If you are uncertain if your ideas are different and/or creative enough for full credit, please post on Piazza or ask during an office hour appointment.
Some of this material will be covered in the Scene Modeling lecture, however, the creative, openended nature of the project leaves fair amount up to you to look up and find as well. I recommend bookmarking the three.js documentation while working on this. – I am not expecting art project-level scenes here, however I encourage you to take pride in your work and make something fun/creative!
This CMPT300T – IT and Computer Science has been solved by our PHD Experts at My Uni Paper.
© Copyright 2026 My Uni Papers – Student Hustle Made Hassle Free. All rights reserved.