- Basic Tools
- Specialized Tools
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.
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 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 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 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 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.
It even has support for deep learning (using Tensorflow for reinforcement learning, immitation learning etc):
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 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:
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:
FFmpeg: This is a free cross-platform, command-line tool and can be easily installed. It is literally a swiss army knife for doing anything related to multimedia like converting video formats, encoding them in specific ways, trimming them, breaking them into frames, combining two videos etc. Almost all the operations I have mentioned can be executed in a “single line command”. Note: This is not a tool for making a video/movie. If you want to make a video/movie you should use tools like Adobe Premiere Pro, Final Cut Pro X etc. This is a tool suitable for tweaking multimedia.
ImageMagick: This is a free cross-platform, command-line tool and can be easily installed. It is really useful for manipulating images like converting their formats, adjusting their colors, resizing them, rotating/flipping them etc. Again like ffmpeg, many of these operations can be executed using a “single line command”. Note: Many of the things that you can do with ImageMagick, you can also do with Adobe Photoshop. Though Photoshop is way more powerful, Photoshop is not free and is not necessary for doing simple image operations.
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 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 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)
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:
Meshlab: is an opensource application for processing and editing 3D triangular meshes. It has a lot of built in algorithms for various applications like 3D reconstruction, hole filling, remeshing textured meshes, simplifying meshes etc.
PCL (Point Cloud Library): PCL is an opensource crossplatform library for 2D/3D image a pointcloud processing. It is mainly used to do point cloud related operations and has support for lots of algorithms like filtering, model fitting, feature estimation etc. It is highly used in computer vision and graphics research community.
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