Overview
You work as a C++ and OpenGL 3D graphics developer for Triangle &
Cube Studios. This company designs 3D worlds for clients and customizes
them based on the varied needs presented by each particular client.
In this professional landscape, the demand for computational graphics
and visualizations is continually growing. Your clients may come from
the games industry looking for graphics and animations, the healthcare
industry for medical visualizations, the entertainment industry for
computer-generated imagery (CGI) and visual effects, business industries
for 3D printing to create physical objects for applied real-world
problem solving, and much more. When you are assigned one of these types
of projects, you become responsible for writing code in OpenGL to
create objects, apply texture, apply light, render, and control virtual
environments relative to a virtual camera.
Your current project with Triangle & Cube Studios is to recreate a
3D version of a 2D image that you have been given by a client. Your
client will later be 3D printing this to use as a preliminary concept
for their business, so they only need you to create a simple
approximation using a few basic shapes.
This week you will begin recreating the 2D scene by constructing just
one 3D object. Note that you will be using the image you selected last
week for this task.
Prompt
Using the image you selected in the Module Two milestone, begin
creating a 3D object to represent one of the objects in your 2D scene.
The object you create in this milestone will need to be made from two or
more primitive 3D shapes. You will complete your work in Visual Studio.
Be sure to work from a project file that has the libraries set up
correctly from your work in Module One.
Specifically, you must address the following rubric criteria:
Create a complex 3D object using at least two primitive shapes.
The object you create should be reflective of one object from your 2D
scene. At this stage of your object’s creation, you should add different
colors to each vertex of the object. This will help you better
visualize the variance between the different parts of the shapes you are
creating. Note that the code you already have uses rainbow colors on
the shapes that are provided; if you use this code you may keep that
rainbow format. Remember, the shapes you may wish to use are as follows:
- Cube
- Cylinder
- Plane
- Pyramid
- Sphere
- Torus
Apply transformations so shapes are scaled, rotated, and translated (placed) correctly.
This work should be relevant for the 2D reference image. For example,
if you are working with a cylinder, should it be standing up or lying on
its side, based on the image you are referencing? If you are also
creating a cube, where should it be placed relative to the cylinder?
What sizes are the two objects when compared to each other? It will be
easier if you complete these transformations in the right order for your
specific object. In general, you will wish to first scale, then rotate,
and then translate. While this is not always the case, that is the most
likely order for your process to follow.
Create code that follows a logical flow without syntax errors.
The code you create needs to be executable and all the code that is
included will have to be reached by the execution. Note that not
everything should be written in a single function and your work should
be well-modularized.
Apply coding best practices in your creations. Pay
particular attention to the way you format and comment your code.
Program code should be easy to read and follow industry standard code
formatting practices, such as indentation and spacing. Commenting best
practices should be in place to ensure the source code is briefly and
clearly explained using descriptive comments.
Guidelines for Submission
Submit a completed ZIP folder with all of your code, which may
include one or multiple CPP files along with Visual Studio project
files. Also make sure the ZIP folder includes an EXE file, because
without this your code will not be able to run. Checking for the EXE can
be used as a quick reference on the functionality of your code before
you submit. Reference the Visual Studio Export Tutorial, linked in this
week’s Resources, for guidance on how to download the necessary ZIP
folder.