This is the Final Project of ECE385 in UIUC
implemented on DE2-115 FPGA board
Team Member: debugevent90901 ๐ , TaKeTube ๐
This is only a project that is for learning and fun, not industrial productive.
For complete Quartus Project Files, please refer to https://github.com/TaKeTube/FPGA-based-3D-renderer-Project
โ This project implements a simple graphics pipeline on FPGA. It can render 3D objects with FPGA, and control the position of camera, rotations of the object through keyboard. โ It uses on-chip memory to store the information of the 3D object and 2 frame buffers, and uses NIOS-II as a controller to communicate with the keyboard. โ Other features include simple clipping, .obj loading, etc.
For more details, see report.pdf and proposal.pdf.
- In Final folder are the final finished files, all well-commented.
- In MidPoint folder are existing files before mid point check, not fully functioned and may be messy. Not all files are commented.
Original contributor: WangXuan95/Verilog-FixedPoint Instead of floating point, we choose to use fixed point number. This is the only outer existing library we used, and we make certian modification to it, see details in /Final/trigonometric_lib.sv.
Top Block Diagram
See the Final Report and Final Proposal for detailed description.
op | description | op | description |
---|---|---|---|
โ | Forward (camera) | โ | Backward (camera) |
โ | Left (camera) | โ | Right (camera) |
w | Rotate along y axis | s | Rotate along y axis |
a | Rotate along x axis | d | Rotate along x axis |
q | Rotate along z axis | e | Rotate along z axis |
key 0 | Reset |
To load a model (.obj format), please use the python script inside the ObjConvertScript folder and follow the description in Final Report & Comments in the code.
When the screen is locked, you should push key 0 to reset.
Unfortunately, this model failed to rotate smoothly because of the unconverging timing