Create this 3D scene in OPENGL C++ using basic shapes (cube, cylinder, sphere, square, cylinder, etc.) and choose the correct colors that each object corresponds to.

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.