Project 2: Boxels
In this project, you will create an application that renders “boxelated” sculptures. You will coarsely approximate real-life objects using box primitives. The box locations and sizes will be stored in a text file, read in, and rendered in a rotisserie display. This project is inspired by the work of NVIDIA researcher Morgan McGuire.
Requirements
To receive credit for this project, you must meet the following requirements:
- Create your project in a folder named
boxels
in the single Git repository that you are using for all your projects. - Using
fetch
, read in a box description file formatted like this:BOX-0-CENTER-X BOX-0-CENTER-Y BOX-0-CENTER-Z BOX-0-WIDTH BOX-0-HEIGHT BOX-0-DEPTH BOX-1-CENTER-X BOX-1-CENTER-Y BOX-1-CENTER-Z BOX-1-WIDTH BOX-1-HEIGHT BOX-1-DEPTH BOX-2-CENTER-X BOX-2-CENTER-Y BOX-2-CENTER-Z BOX-2-WIDTH BOX-2-HEIGHT BOX-2-DEPTH ...
Each line is six numbers describing the position and size of each box. - Render the loaded sculpture so that its centroid is in the center of the display.
- Light your sculpture. Directional diffuse shading is acceptable, but feel free to explore more advanced lighting schemes.
- Allow the the sculpture to be rotated about its center using the cursor keys.
- Write your renderer flexibly. It should properly display any box sculpture, including those of your peers.
- Design two sculptures. Share in
#gallery
screenshots of your two rendered sculptures and their accompanying plain text files. Each sculpture must be unique amongst both your own sculptures and others’ sculptures. - Your code must be cleanly formatted, the variable names must be meaningful, and comments should explain non-obvious code.
- Your Git log should reveal a steady pattern of commits. In general, you should commit and push after every work session.
Optional
If you finish early, consider exploring these extra challenges:
- Add optional color to the box file format.
- Allow the user to rotate the sculpture using the mouse.
Submission
When you have completed all requirements, push your code to your remote repository and send your instructor a direct message on Slack to schedule a 10-minute review. Only one project can be granted credit each week. Plan accordingly.