You have made a Quadcopter in 2D on a previous assignment. We'll do the same thing again, with a few twists.
Summary: In quadcopter.html
and quadcopter.js
turn the flying donut into a quadcopter (with spinning rotors)
First, since this is 3D, we won't just see the vehicle from above, so you have a little more freedom in what you make. It needs to have multiple (spinning) propellers, but it could be a traditional helicopter (with a vertical rotor in the tail) or even a multi-engined propeller airplane.
Second, in addition to the aircraft, you need to have a "radar dish" on the ground that always points towards the aircraft. This object should stay in the same place on the ground, but rotate so that it is always pointing towards the aircraft (tracking it). As the aircraft moves, the radar rotates. It doesn't have to be a radar dish (you can be creative), but it does have to have an obvious "top" that always points towards the aircraft.
The goal of the assignment is to have you make a hierarchical object (aircraft with propellers) that flies around in 3D, and be able to point one object at the other. Other bells and whistles are nice (and can earn bonus points).
Some requirements:
Note: it will be better to have one aircraft, with a functional radar dish, than two aircraft and no radar dish. Of course, it's best to have two of each. Once you make one, it shouldn't be too hard to add another.
The basic framework provides some lighting, a simple ground plane, and OrbitCamera controls. You are welcome to improve the lighting, and make the ground more interesting.
You may load geometry from a file (using, for example THREE's OBJLoader). However, if you do this, you must describe in your readme file where the OBJ files come from. If you do not create the file yourself, be sure to give proper attribution, and confirm that it comes from a source that allows you to use it (i.e., it has a Creative Commons license). Don't forget to add any geometry files to the repository (we have made this mistake on a previous workbook!). Please do not give big files, or things that use features we haven't discussed in class yet (like Textures). You may only add object files (e.g., .obj).
If you're curious how to make a radar dish, you can use the example on the TREEE.js LatheGeometry page. Or you can make it some other way. A Cone would work at a minimum. It is more important that the object has the right behavior (it clearly points toward an aircraft).
You should complete this assignment in the file quadcopter.js
(which is loaded by quadcopter.html
). We've given you some code to start - a basic ground plane, a camera, some lights, even a simple animation loop. We've put the OrbitControls
for the camera into the scene. You don't have to use what we've put there (you can take out things if you want to put in better stuff - especially for the ground and lighting). However, please include OrbitControls
in your result.
This part of the assignment does not use the framework code. Please build everything using THREE.js "from scratch" (or from the starter code). In other parts of this workbook, we'll introduce you to some framework code that should help in making bigger projects.
We will reward exceptional projects with bonus points. Some things you can do:
If you do something you feel is worthy of bonus points, be sure to describe it. Sometimes interesting behaviors aren't obvious at a glance.
After this exercise, move on to the next page to learn about the framework code we'll use for the next exercises (and future workbooks).