Task 2 - Displaying 3D Polygon Animations




How are 3D models displayed?

 A 3D model is basically  done by a process of developing mathematical representation of any three-dimensional surface of an object. This is because 3D models use a collection off Points in 3D Space, connected by various geometric entities such as triangles, lines, curved surfaces, etc. 3D models can be created by hand, algorithmically (procedural modelling), or scanned. Their surfaces may be further defined with texture mapping.The basic idea of 3D graphics is to turn a mathematical description of a world into a picture of what that world would look like to someone inside the world. The mathematical description could be in the form of a list, For instance: If there is a Chair the player in the game will be able to see the chair from different angles for example from the side, back and front of the chair. Just Like we will be able to do in real life. The only difference is, Computers dont see it as a chair they see it as a chair full of triangles and colours. For example, to the right is a box. In that box is several triangles and colours, This is how the computer will create any object by using maths as a technique although it can be alot more difficult for instance In the pictures below there are two pictures showing the before and after of a 3D viking helmet. The left picture is showing all the different polygons/triangles which are used to make the helmet model, A 3D model is not technically a graphic until it is displayed like the viking helmet in the right picture. 







What is an application programming interface (API)?

API means application programming interface. This is an application which passes information onto other applications for instance If I am on Microsoft word and I copy something and paste it onto google chrome, API is usually what structures and responses to that request. APIs do all this by “exposing” some of a program’s internal functions to the outside world in a certain way. That makes it possible for applications to share data and take actions on one another’s behalf without requiring developers to share all of their software’s code. Almost every application depends on the APIs of the underlying operating system to perform such basic functions as accessing the file system. This is done by sets of routines, protocols, and tools for building software applications. Although API isn't that necessary, for instance if there was a app for the weather; If it had a API, the API will message a weather website which is then replied with a structured response and the website is then updated regularly. However, without a API, the app will have to go on to a weather website to see what the current weather is in a certain location and almost read it like a human would do. Doing this can be risky because if there is any change to the website then the app may get confused and become unresponsive simply because the app will not understand the website. For example, a graphic API is a software that will render the video you see. If your graphic API is DirectX9 you might have less quality picture than you would do if your graphic API is DX11 although DirectX9 will probably run a lot smoother because it is lower quality. I am now going to list some graphic API including a brief explanation about the API. 


Open GL 

Open GL stands for open graphics library, This API is probably the most widely used API in the industry which supports 2D and 3D graphic application programming interfaces. Thanks to Open GL it has allowed more than thousands of applications to a more variety of computer platforms. Without OpenGL we wouldn’t have all these applications on our laptops, mobiles, consoles and so on.  Open GL also offers faster speed acceleration for developing and incorporating a broad set of rendering, textures, special effects and other functions which are vital for developing a game.


Open GL ES

Open GL ES was designed for embedding them systems on to smart phones, consoles and tablets and due to this OpenGL ES is now the most widely deployed 3D Graphics API. This API is a cross-language and multiplatform. It was first released publicly in July 2003 and it was based on the original OpenGL which I have explained above. The OpenGL ES has had some functions removed from the original OpenGL but has also had more functions added to help it be more effective for mobiles. 


Open Inventor

Open inventor is a high-performance 3D software development toolkit which uses C++ as its programming language. It was designed by SGI to help provide the OpenGL API with a higher layer of programming. For example, when using Open GL, the performance is highly sensitive to the way the instructions are sent into the system, this means the user must know which instructions to send and the correct order to avoid sending in objects that aren't even visible in the resulting image. Open Inventor was developed to help stop these issues with the Open GL and to help provide a base layer to make it easier for the developer to create objects for instance there will be a number of pre-made shapes like cubes and polygons which can easily be modified. Open Inventor also includes a number of controller objects and systems for applying them to the scene, making common interaction tasks much easier and more effective. 


Vulkan

Vulkan is a low level API which means it is the most detailed API it will allow the programmer to use different functions within the software or hardware. Because Vulkan is a low level API it gives it direct access to the GPU, this is an amazing benefit if the developer/programmer wants full control. Vulkan has the capabilities so that the multi-core GPUs can keep the graphics loaded, enabling a new level of performance on the existing hardware originally there.  Vulkan is the first generation to use a low-level API for different platforms so Vulkan now allows developers to create applications for the different types of PCs and smart phones. Open GL is similar to Vulkan because they are both available for any platform. Vulkan basically enhances everything GPUs can do.


Direct X

Direct X is a Low-level API that provides programs with a high-performance hardware multimedia support including pictures, videos and more. This is done by DirectX containing a set of APIs that allows DirectX to access the advanced features of high performance hardware for example this could be 3D graphics acceleration. Although these APIs can also control low-level functions as well as including 2D and support for input devices like keyboards and mice, DirectX can also help control the sound and the sound input.
DirectX can easy determine the hardware capabilities of your computer and then set the program to match. This will help DirectX provide access to the capabilities of the computers display and audio card and enable the program to provide 3D graphics, music and audio effects. Basically Direct X will enhance the multimedia capabilities on your computer as best as it possibly can to try and take full advantage of high performance hardware. Direct X also allows the software programs to run on any computer using windows and is designed to handle tasks like rendering 2D and 3D vector graphics, rendering video and playing audio on the Windows platform.

What is a graphic Pipeline? 
The graphic pipeline is a sequence of steps which are used to create a 2D Raster representation of a 3D scene. The Graphic pipeline is basically the process of turning the 3D model into what the computer displays. Each API has a different pipeline but the steps and the final results are really similar. The stages in the pipeline are responsible for processing the information provided and each stage are adding something to the previous stage. All stages are working in parallel. Because of the pipeline architecture it is able to perform billions of geometry calculations per second and are being designed to provide more memory and more stages so that the data can be worked on at the same time. This is perfect because for video game developers being able to do a photo realistic rendering at full speed is the ultimate goal. I’m going to be explaining the graphic pipeline for the OpenGL API and the stages of a typical graphic pipeline of a modern GPU.

Links