Graphic Design: from curiosity to start learning

Why I became interested in graphic design?

Computer graphics are useful tools that provide a wide range of applications. I just started to pay attention to computer graphics recently as I read the book “Computer Applications in Healthcare and Biomedicine[1]. I feel it is amazing because virtual reality and game simulation can be used to facilitate medical training. 

Figure 1: Virtual Reality in simulated learning.
Source: Adapted from [1]

  Further research brings me to the subject of computer graphics. Beside biology, medicine, simulation, and education, graphic designs are widely used in many other areas such as data visualization, architecture, construction, traffic, navigation, etc. No matter what career we end up with, there is a good chance that it could involve computer graphics. I decided to invest in learning graphic design as I see its potential usage for my personal interest. I would like to maintain this blog as a guidance for anyone who sees the field attractive and wants to get some basic background knowledge about graphic design. The blog is weekly updated to address interesting topics related to graphic design using the OpenGL. 

Brief introduction to OpenGL

OpenGL (Open Graphics Library) provides many advantages. Firstly, OpenGL is an industry standard and can be implemented on different hardware platforms and operating systems. Developers can access OpenGL services with different choice of programming languages such as C, C++, Java, Fortran, Ada. In addition, OpenGL is known for its stability,  reliability, and scalability. Last but not least, OpenGL is independent from network protocols and typology [2]. Below is the link to OpenGL where you can find more helpful information: https://www.opengl.org

However, developers should notice that Vulkan is a new generation of graphics that is much more efficient than OpenGL. For beginners, it is recommended that ones should start with OpenGL and can further progress to the Vulkan as OpenGL is much more simple to learn and it has a wide range of applications. Here is the like for the Vulkan website: https://www.vulkan.org

Terminologies related to graphic process

Rendering is the process by which computers create images from models. 3D Models are constructed using vertices which then are used to create different primitive shapes such as points, line, triangle, polygons, etc. Before the rendering process, other information needs to be defined as well, including light information, surface information, texture information, and 3D animation definition. Rendered images are pixels drawn on screens. Pixel is  the smallest picture element. Pixel is too small to see, but if users set their monitors to low resolution, they will be able to see some individual pixels. We will discuss more about pixels later on the color topic. 

Framebuffer provides a destination for rendering [3]. There are two types of framebuffer in OpenGL. The Default Framebuffer represents a display device or window while Framebuffer Objects (FBO) are defined by users. Buffers are specific locations of framebuffers. 

Graphic pipeline 

The 3D graphic pipeline involves many stages: vertex processor, rasterizer, fragment processor, output merging before displaying on screen. The output of the preceding stage is input of the next stage [4]. 

Figure 2: An overview of graphic pipeline.
Source: Adapted from https://stanford.edu/class/ee267/lectures/lecture2.pdf

Vertex processing involves a series of transforms: model transform, view transform, projection transform. Model transform arranges the object in the world; view transform set the position and direction of the view (or camera). Projection transforms set the camera’s field of view by adjusting the proper lens, focus length, and zoom factor. 

Some attributes of a vertex are positions (x, y, z), normal vector (nx, ny, nz), color(rgb or rgba), and texture. Primitives are connected vertices. Grid-aligned fragments are formed from primitive by interpolating vertices process called rasterization. Fragments are then processed and merged from 3D into 2D pixels in order to be able to display on screen. 

Below is an example that I found useful as it help beginners understand the outcome of each process [5]

Figure 3: An example to illustrate how image is form using graphic pipeline.
Source: https://zhangyi1.gitbooks.io/unity3d/content/shader/introduction-to-how-shaders-work-in-opengl.html

Reference

[1] Edward H. Shortliffe, James J. Cimino, and Michael F. Chiang. Biomedical Informatics Computer Applications in Healthcare and Biomedicine. 5th ed.  Cham, Switzerland, Springer, pp. 858.

[2] Geek square. 7 advantages in OpenGL. Library. August 30th, 2017. Accessed on: September 26th, 2021. [Online]. Available: https://geeksquare.ca/blog/2017/advantages-in-opengl

[3] OpenGL. Framebuffer. May 14th, 2021. Accessed on September 27th, 2021. [Online]. Available: https://www.khronos.org/opengl/wiki/Framebuffer

[4] Gordon Wetzstein. The Graphic Pipeline and OpenGL I: Transformations. Accessed September 27th, 2021. [Online]. Available: https://stanford.edu/class/ee267/lectures/lecture2.pdf

[5] Glumpy. Modern OpenGL. Accessed September 26th, 2021. [Online]. Available: https://glumpy.github.io/modern-gl.html

Print Friendly, PDF & Email

Leave a comment

Your email address will not be published. Required fields are marked *