Scop is a projet related to computer graphics, and part of my formation at school 42.
It is a good introduction to OpenGL and 3D graphics more generally, as it requires a solid understanding of several notions such as draw calls, openGL buffer and array objects, and vector maths. We also had to write our own "math" library, in which I implemented some useful methods to manipulate vectors, matrices, and quaternions.
As a bonus, I added multisample anti-aliasing and object picking by using renderbuffers, basic lighting/shading, and object manipulation via 3D handles (translation, rotation, scaling).
git clone https://github.com/Kikoman90/scop ~/scop
cd ~/scop && make
Launch the program with one or more parameters: the name of the .obj files you would like to open. The format of these files is wavefront obj. These files define a 3D model composed of vertices, linked together to create faces. They can also contain vertex normals and texture coordinates. Also, those files can reference one or multiple .mtl files, the latter which define material properties for shading.
Example : ⇣
./scop models/42_uv.obj
Description | Key(s) |
exit program | esc |
orbit camera | right-click |
pan camera | shift + right-click |
zoom camera | ctrl + right-click |
select object (hold shift for multi-selection) | left-click |
translation handle | W |
rotation handle | E |
scale handle | R |
activate/deactivate auto-rotate | Z |
switch handles space (world/local) | X |
switch face gradient (grayscale/RGB) | C |
smooth shader transition | space |
switch skybox | S |
switch model texture | T |
If you want to contact me, or help improve this project, send me a mail at fsidler@student.42.fr