This was our final project for MIT’s Digital Systems Class (6.111/6.2050). In this class, all the work was done in SystemVerilog and o Xilinx Spartan 7 FPGAs. The class concluded with an open-ended final project, and we decided to create a camera-controlled 3D model viewer that could render 3D meshes and change the view of the scene based on real-time camera inputs. We also decided(were forced) to utilize the offboard DDR3 RAM for our framebuffer to allow for better resolution down the line, also because we were already fully utilizing the BRAM for loading models.
We currently have successful rendering of 3D objects (like the cube shown) and the ability to change the view of the object based on the center of mass of all the blue pixels on the screen observed via an Adafruit camera hooked into the FPGA. We also have a “crosshair screen” that lets the user know what the center of mass of blue is (i.e., where their “virtual” cursor is). See the video above for a better explanation.