Computer Graphics 2

An assortment of pieces created during the Computer Graphics 2 comp sci Masters course at Faculty of Sciences at the University of Novi Sad, supervised by professor Marko Savić PhD.

Git repository of the project: https://github.com/NikolaVetnic/RG2

VoxelWorld

Mars, Valles Marineris. Arctic / Pastoral / Desert / Magma palettes.

VoxelWorld is a set of solids used to store voxel information and means of rendering them using the project’s ray tracing engine.

The array of algorithms employed for traversing the voxel solids starts of with a simple brute force approach, then takes into consideration the direction of the tracing ray during iterrations, then switches to an approach professor and I called “grid march” (which boils down to checking only one of possible seven neighbors based on the direction vector of the ray), and finishes off with a procedure which employs octrees (octal trees) as means of storing voxel information.

Triangular Mesh

Triangular mesh is a solid used to store information on polygonal meshes commonly used for storing geometrical data of 3D objects. The meshes can be loaded from OBJ files, texturing as well as surface smoothing (based on surface normals) is supported.

Quadrics

Quadric is a solid which implements all the quadric surfaces, which themselves are a generalization of conic sections. Solids implemented include sphere, cylinder, cone, ellipsoid, paraboloid, hyperboloid and hyperbolic paraboloid.

Constructive Solid Geometry

Constructive Solid Geometry is a technique used in solid modeling. Constructive solid geometry allows a modeler to create a complex surface or object by using Boolean operators to combine simpler objects, potentially generating visually complex objects by combining a few primitive ones (from Wikipedia).

Early Voxel Renders

Voxel rendering using brute force algorithm. Some ideas into how voxel meshes might be edited (using text as well as image editors).

Bugs

Mostly related to CSG solids.