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.

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *