Simple Real-Time 3D Scene Editor built with C++ and OpenGL

Project Description

This project was developed in 2021 for my Master’s Computer Graphics Class by me and three other classmates. Our initial assignment consisted of creating a bare-bones 3D engine using C++ and OpenGL. The purpose of this task was for us to learn the basics of real-time rendering using a graphics API as well as how to build an abstracted framework for a 3D application.

In the second part of the semester, we ended up expanding on this project by adding new features and capabilities inspired by 3D editors like blender3D.

Introduction to Programming Concepts in Virtual Reality!

Project Description

This project was developed for my Master’s Virtual Reality Class in 2020 by myself and 3 other classmates. Our assignment tasked us with developing a project that made use of VR’s unique characteristics. After some research, we took inspiration from some existing papers and created “Hello VWorld”, a game that introduces players to basic programming concepts in an immersive environment.


In Hello VWorld, the player finds themselves alone in a test chamber. Inside this chamber is a glass cube with a small robot. …

From a 2D Jam Prototype to a finished 3D Demo!

What is Circuit Slimes?

In Circuit Slimes you play as an Electrical Slime Engineer trainee, your job is to repair and complete circuits by deploying your slimy assistants and wrangling them in just the right way to get the job done. To complete levels you must conduct the electric slimes from their power source to their respective outputs. In order to complete circuits, you use different types of slime to alter and add components on the board. Will you be capable of mastering these little creatures and getting them to collaborate?

Circuit Slimes Trailer

C++ Ray Tracer and Path Tracer scene renderer for simple 3D scenes

Project Description

This project was developed for my Master’s 3D Programming Class in 2020 by me along with two other classmates. Our initial assignment was to build a Turner Whitted Distributed Ray Tracer capable of rendering basic scenes so we could learn the fundamentals of physically-based rendering and establish a base to improve upon in the following assignments.

The code is available on Github if you want to take a look:

MOJO preparation

Promotional Image

Hello hello,

MOJO was last Tuesday, and with that behind us, its time to look back and give an update on the progress of the game.

We worked very hard all week to get everything ready for delivery if you want to check out the game drop by our page and try it out on Android, PC, or Mac.

Main menu scene

I also finished working on that background scene I showed you, and we ended up using it as our main menu, which I also re-made from scratch. …

Nearly there

Hi hi! Here we are, nearly reaching the end of the semester, still at home, still working hard on this game. This week has been very intensive as we gear up to release a demo for Mojo next Tuesday 😓


First up, for our other course, AASMA, where we are leveraging this same project to explore interactions between multi-agent societies we needed to have a way to differentiate between the regular slimes that were built with the behavior we originally intended for them from the “smart” slimes as we have been calling them.

We had a meeting and decided that…

Camera work and More Assets

Hi hi! We’re back for another weekly devlog, this time around I did some asset work, as well as a few final refinements for the camera system to make sure the game feels tight and the controls are smooth.

First up, I’ve been postponing this for a while so I figured it was finally time to update the face textures for our slime buddies!

Ever since we got the camera controls in and ran the android builds we noticed that the textures I initially concocted were far to small and low res for a tiny screen like the one on…

Multi-tile Pieces and Board Highlight Selection

Hi hi! Another week passes and the work keeps piling up 😬

This week, in particular, was quite tough since another course three of us attend decided to highjack the whole week by scheduling a test for this next Saturday and an essay due the same day. But, nonetheless, we still tried our best to get some work done and push the needle forward!

I had the pleasure of working on something that we’ve been wanting to get right from the start. Multi-tile pieces!

Little Detail here, we now have contact shadows (with a blueish tint) being cast on the board

Some pieces occupy more space than a single tile on the board be it for functional…

Buttery Smooth Touch Control

Hello hello, we are back after another week of hard work, and lot’s of unity wrangling.

This week was quite productive for the team as we all picked up where we left off, with our work all organized in our handy little Trello board and new-found motivation thanks to the valuable feedback we got from our peers!🤗

I’d like you to focus your attention on the left column, no need to read the rest ;)

In all seriousness, we are very thankful we got to read some generally blind and unbiased critical feedback! This made us aware of some of the main issues we are facing right now and plan accordingly for the future. Plus it seems, despite…

Delivery Crunch and Planning

Hey hey! It’s already been another week already huh? Time flies…

This week was quite stressful due to the delivery that happened on Wednesday. The days prior to submission we were working almost constantly to get as much of the base functionality in there as possible. In the end, though we couldn’t do as much as we wanted and some bugs got introduced in that last bit of the sprint, I can say I am quite proud of what we were able to accomplish. …

Francisco Nicolau

I’m a CS Master’s student interested in using all sorts of technology as a medium to challenge myself and express creativity.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store