Tools for Computer Graphics › Graphics Resources

Graphics Resources

Tools for Computer Graphics


In the previous post, I mentioned some resources related to OpenGL and Shaders. In this post I plan to list some of the tools which are popular and widely used in computer graphics. I also plan to briefly list the pros and cons of some of the tools. I will not be listing tutorials for these tools but you can easily find plenty of them by Googling. This is going to be a long post hence, if you are not interested in some parts like “Specialized Tools” section, I recommend skipping those parts.

Basic Tools

In this section, I classify some basic tools as per their function (subsections) and use. In general for making a decent application or a game, knowledge of atleast one tool per subsection is required and recommended.

Modelling, Texturing, Rendering & Animation

The first step of any graphics application development would be modelling an object and texturing it. This is usually followed by lighting, rendering and/or animation. Doing any of these steps like modelling can be really cumbersome in something like OpenGL hence it is better to use these tools instead. You can of course load a modelled and textured object back in OpenGL if your final application is being developed in OpenGL. If it is being developed in any other application like Unity3D, Android etc you can still use these tools. These tools also support a wide variety of 3D model formats (like .obj, .fbx, .colloda etc) and hence can also be used for model conversion, modification of existing 3D models etc. I might be a very biased here but personally I like Blender and I would recommend learning either Blender or Maya.

Blender

Blender is the free and open source 3D creation suite. It supports the entirety of the 3D pipeline—modeling, rigging, animation, simulation, rendering, compositing and motion tracking, even video editing and game creation (Reference: Blender). Though it can do game creation, it is not its main purpose and you should use game engines for that. The main use case of blender is modelling, animation and rendering. For example, the following film was entirely made in blender:

Maya

Maya by AutoDesk is a 3D animation, modeling, simulation and rendering software. Though it is not free, it is really powerful and is an industry standard. For example, look at this video portraying features of Maya:

3DS Max

3DS Max by AutoDesk very similar to Maya. Both the softwares are capable of modeling, animation, rigging, particles, key framing, rendering, materials, lighting, FX, and more. But, there are a few use cases where one of them is better than the other. For difference in their capabilities you can look at this post. An overview of features of 2017 version of 3DS Max can be found here:

Cinema4D

Cinema4D by Maxon is a powerful 3D modeling, motion graphics, painting, and animation software. It is really good for doing some things like motion graphics. Cinema4D is not free but it does have a free student license. An overview of new features in Cinema 4D R19 can be found here:

Note: Though Maya and 3DS Max are paid, a student can apply for a discount and use them free for 3 years.

Game Engines & Web

Once you have models and or animation ready, the next step to make the actual application or game. For this, you can use a Game Engine. By definition, game engines are tools available for game designers to code and plan out a game quickly and easily without building one from the ground up. If you are writing your application in OpenGL, you can of course use libraries and make your application, but game engines make it really easy to do the same. They give lots of functionality and can heavily save your time. In comparison, if you want low level access, infinite flexibility over what is internally going on and want to build everything by yourself, OpenGL is the way to go. In fact, most AAA game studios (A AAA game (usually pronounced “triple A game”) is just a classification referring to big game studios, typically having higher development and marketing budgets (Reference: Wikipedia)) develop their own game engines from scratch optimized for their specific games. For example, FIFA is made using Frostbite game engine developed by EA.

Unity-3D

Unity is a cross-platform (even support for Web) game engine developed by Unity Techonologies for building both 3D as well as 2D games. It is probably the most popular game engine and has a free as well as a paid version (with more advanced features). The main advantage of using Unity3D over any other game engine is that almost every new sensor or gadget like Oculus Rift, Leap Motion, Google Daydream will have Unity Support for development. It is the game engine for doing AR/VR and CHI related stuff because of inbuilt AR/VR support and availability of lots of plugins. In terms of programming it supports both C# and JavaScript. Unity doesn’t support GLSL shaders and you will have a different syntax for shader programming. But, it does have some new cool features like shader graph. Some of the highlights of Unity 2017 are:

It even has support for deep learning (using Tensorflow for reinforcement learning, immitation learning etc):

2 vs 2 soccer trained using separate reward functions and brains.

Just this week, Google announced Maps API with support for Unity3D. So, you can build real-world based games (obtain 3D model directly from Maps API) using Unity 3D:

Unreal

Unreal is a game engine developed by Epic Games. In terms of advance graphics capabilities like complex particle simulations, advance dynamic lighting etc Unreal is better than Unity. But, Unreal has lesser plugin support and is more difficult to learn in comparison to Unity. In terms of programming language, Unreal uses C++. Unreal too has a free version similar to Unity3D. Some of the highlight of Unreal Engine are:

threejs

To discuss threejs, I will have to mention a few things about Web. Since the advent of gaming engines, people have been trying to do similar things with Web. Programmers have been trying to create wrappers around WebGL which allow users to create rich 3D websites and games which are rendered in Web Browser (i.e. can be accessed using a URL without downloading anything). An example of such tool is threejs. It is a cross platform javascript API which can be used to create and display animated 3D graphics in a browser. Though it may be not as powerful as game engines like Unreal and Unity in terms of rendering capabilities, it has the advantage that the user doesn’t need to install anything. It too has support for various libraries and can be used for making VR and AR applications using Aframe etc. Some really cool websites made with threejs are (Click on the image below to get redirected to that website):

One of my favourites is ro.me (the rightmost image). Similar to visual editor in game engines, threejs also has an online editor.

Image and Video manipulation

If you are trying to develop any graphics application, as per your needs you might come across the following problems: converting image/video formats, breaking some video into frames, trimming a video, appending two images etc. For dealing with these problems the following two applications are useful:


Specialized Tools

This section contains some specialized tools classified as per their function. The main idea is that if you want to master some specific part of the rendering pipeline, you can learn a specialized tool made for it. For example, in the previous section, for modelling, texturing and animation we used a single tool like Blender. But, if you want more control in say modelling and animation you can use a specialized tool for modelling and a specilized tool for animation.

Sculpting and 3D modelling

Like I had mentioned before, if you want to master modelling and texturing and do advcaned functions like sculpting, you can learn these specialized tools. They are way more advanced than basic tools and offer more control.

Mudbox

Mudbox by Autodesk is a digital painting and sculpting software for creating and modifying 3D geometry and textures. It can be thought of as 3DSMax/Maya with added support for sculpting. So, if you have experience with Autodesk’s tools, this would be easy to pickup.

Zbrush

Zbrush too is an industry’s standard tool with focus exclusively on modeling and sculpting. In comparison to basic tools like Blender it is way more specialized in terms of polygon count handling etc. But unlike Mudbox, it has a different UI as compared to Autodesk’s products and hence can be more difficult to learn. Some of the new features of ZBrush 4R8 are:

Animation and VFX

Using tools like Blender, Maya or 3DS Max too you can do rigging and animation but there are specialized tools with focus only on animation. Tools like Mixamo and HumanIK plugin of Maya LT are good for character animation.

Moving on to VFX(visual effects), tools like Houdini are really good at it. Some of the clips created with Houdini can be seen here:

Mitsuba - Ray Tracer

In computer graphics research there is field called physically based rendering. I had mentioned this in my first post and about the book PBRT. If you want to do research in physically based rendering, learning Mitsuba can be really useful. It was developed by Wenzel Jakob who is also an author of the PBRT book. Mitsuba has plugins for other softwares like Blender.

CGAL (Geometry Processing)

Computational Geometry Algorithms Library is a software project that provides easy access to efficient and reliable geometric algorithms in the form of a C++ library. It is primarily used in computer graphics research especially for geomtery processing.

Media Art and Visual Design (Processing language)

Processing is an open source language built for media art, visual design etc. It also has a javascript binding and hence can be run on web as well. Just going through this link will give you a good idea of Processing.

Mesh/Point Cloud Operations

While developing your application, if you would like to do some specialized operatins like processing your mesh (like simplify it using some algorithms), editing point cloud, computing normals from pointcloud, generating a mesh from point cloud (also known as 3D reconstruction) etc you should use the following tools:

Sprite/Image Editing

While developing your application if you like to do some specialized operations on image like editing images, creating UI elements etc you should use a tool like Adobe Photoshop or Gimp. The main advantage of Gimp is that it is free and cross-platform (Photoshop is paid and works only on Windows and Mac), but Photoshop is more powerful and had more support, more specialized filters and gets constant updates.


comments powered by Disqus