As my final project for CPE 471, I created a simple sandbox environment that allows users to place objects (defined using .OBJ files) in a 3D world. My program allow users to toggle between three different use modes: "explore", "placement", and "removal". While users are in the explore mode, the world is in a "read-only" state, allowing the camera to move freely above the grid. Placement mode allows users to cycle through different objects and view them in the world as if they were placed. The user points the center of the screen at a square on the grid and the object appears above that grid square and don't overlap with already placed objects. Removal mode allows users to remove objects that have already been placed by aiming the center of the screen at the ground where the object was placed and pressing p.
Some objects also have special behaviors when placed, such as the robot (which runs away when you approach it.) Animations use quadratic easing to make movement look more natural. Custom objects may be specified by including their file names in the command-line.