This project aims to investigate causal-effect relationships with the use of an virtual environment in Unity and 3D objects created in Blender. Unity is a game engine and also serves as a physics simulator engine. Blender is an open-source 3D modelling software. Both making use of both Unity and Blender, we can have 3D objects interact with each other in a virtual environment. On top of that, this project also aims to understand the most widely used 3D modelling software in the market and their differences. A report was produced, comparing the most popular 3D modelling software available in the market.
IHPC stands for the Institute of High Performance Computing. It was established in August 1998, as a research institute under the Agency for Science, Technology, and Research (A*STAR). It promotes and spearheads scientific advancements, as well as technological innovations through computational modelling, simulation, and visualization methodologies and tools. The institute's vision is to provide leadership in high performance computing as a strategic resource for scientific inquiry and industrial development.
My task was to explore and learn about simulation and modelling software, such as Unity, Blender, 3DS Max and more. We learnt to make use of both Blender and Unity to create a virtual environment, where 3D objects interact with each other, with the goal of investigating causal-effect relationships in a virtual space. On top of that, we were tasked to compare the different 3D modelling software available in the market. We produced a report comparing the price, functionality and difficulty of the most popular software in the market. This report serves as a market research for my organization.
I started with learning Blender using online courses. Blender is an open source 3D modelling software capable of 3D modelling, rendering, rigging and animation. I focused on learning the required skills to create 3D models in Blender. Blender has many functions that I had to learn, starting from the very basic to more advanced techniques. Some of the functions include bevel, extrude, array, Booleans and Bezier Curve. Each function has it specific uses. For example the curvature of 3D objects can be created using Bezier Curve function.
Having no prior knowledge in Blender, I had to start from learning the most basics. This included something as simple as navigating through the 3D space in Blender. A lot of time was spent watching and listening to tutorials, that taught and explained the functions in Blender. I faced many challenges during this process. Often, the 3D models I ended up creating would have problems like flaws in the shape or difficulty in attaining greater details for the object. I had to resolve these problems by pinpointing the errors, required functions or retrying again.
By watching the online tutorials and having additional practice in Blender, I managed to pick up the techniques that are required to create 3D objects. With the knowledge I gained, I managed to create many different 3D objects that was subsequently imported into Unity. Some of the 3D models I created included a bowling ball and pins, chess pieces, a rocket and a Mayan pyramid.
Bishop
Pawn
Queen
Bowling ball with red glossy material
Bowling pin
After Blender, I started on Unity. Unity is a game engine and a physics simulator engine, capable of creating 3D and 2D games. Within Unity, there were many functions that makes it a suitable physics simulator. Unity had a rigid body dynamics system, which meant that objects in Unity can experience real-time physics like forces, gravity and mass. Additionally, 3D objects can interact with one another by the use of Colliders, which allows for physical collisions between the 3D objects. In the process, I also had to learn basic C# programming, the programming language in Unity.
Learning Unity began with learning the overall interface and understanding how basics movements of objects are achieved. Unity has a interface with different elements, controls and screens. C# codes are required for objects to translate along the 3 axes in the 3D space and for objects to rotate. An additional aspect in Unity's virtual environment is the camera. The camera has to be placed appropriately for observations of the virtual environment to be clear. Eventually, with some research, a moving camera that could track a moving object was implemented.
One main difficulty that I faced, was dealing with the coding. Many problems and errors came from the scripts of codes and I had to research on ways to resolve it. It was challenging to understand the more complicated codes. Despite this, all the codes for the final Unity product worked well and there were no problems.
Images shows the movement of the robotic arm with only one slider moving
The first final product is a working robotic arm. This robotic arm is controlled by the sliders. Each slider controls the rotation of one joint in the robotic arm. This virtual robotic arm serves as a simulation of a real-life robotic arm, with joints that rotate the same way too.
Initially, the robotic arm was controlled by keyboard controls. However, sliders proved to be easier to use because the sliders visually indicate the extent of rotation of each joint. Moreover, using keyboard controls would require many key binds making it harder for someone to use.
Each slider has its own script of codes. The sliders all restrict the rotation of the robotic arm.
using UnityEngine;
using UnityEngine.UI;
public class rotatebase : MonoBehaviour
{
// Assign in the inspector
public GameObject objectToRotate;
public Slider slider;
// Preserve the original and current orientation
private float previousValue;
void Awake ()
{
// Assign a callback for when this slider changes
this.slider.onValueChanged.AddListener (this.OnSliderChanged)
// And current value
this.previousValue = this.slider.value;
}
void OnSliderChanged (float value)
{
// How much we've changed
float delta = value - this.previousValue;
this.objectToRotate.transform.Rotate (0, delta * 360, 0);
// Set our previous value for the next change
this.previousValue = value;
}
}
Code for one slider
The second final product is a moving person in a virtual environment with other 3D objects from Blender. The person's movements are controlled by the keyboard. The person can move around and jump in the virtual environment. The person is able to interact with the 3D objects that were imported from Blender. Some of the 3D objects included a football and goal post, bowling and pins.
All the interactions between objects in this virtual environment simulates real-life physics. The virtual environment also allows for us to modify the physics within the it, like changing the strength of gravity and drag from air resistance. Objects within the environment can all experience these forces, gravity and have masses.
The virtual environment also has a camera that can track and follow the person, making it easier to view the scene in the virtual environment.
This virtual environment will be modified and used by the organization to investigate causal-effect relationships.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class NewBehaviourScript : MonoBehaviour
{
public Transform target;
public float smoothSpeed = 0.125f;
public Vector3 offset;
void LateUpdate ()
{
Vector3 desiredPosition = target.position + offset;
Vector3 smoothedPosition = Vector3.Lerp(transform.position, desiredPosition, smoothSpeed);
transform.position = smoothedPosition;
transform.LookAt(target);
}
}
Code for a camera that follows the person
Finally, the third and last product is the word report on the comparison of different 3D modelling software that are currently available in the market. Much research was put into it as there was multiple criteria of comparison including price, functionality, targeted users and difficulty. The report explained and compared the pros and cons of each modelling software, to conclude on some key findings from the software that are available. For example, most of the modelling software are expensive costing hundreds if not thousands of dollars.
This will allow the organization to learn more about the most popular 3D modelling software in the market. This knowledge would help them if they have to choose a modelling software for their future projects in this area of virtual simulator.
Comparison of different 3D modelling software
Tan Yue Yang, Chan Chun Mun Aloycius
3D modelling is a technique in computer graphics for producing a 3D digital representation of any object or surface. 3D models are used for a variety of mediums including video games, movies, architecture, illustration, engineering, and commercial advertising. An artist uses special software to manipulate vertices in virtual space to form a mesh. A mesh is a collection of vertices that form a 3D object. There are many different 3D modelling software available in the market. Therefore in this report, we will be comparing the most popular and most commonly used 3D modelling software. These software are Autodesk Maya, Autodesk 3ds Max, Autodesk Revit, Rhinoceros 3D, Blender, ZBrush, SketchUp and Cinema 4D. The criteria of comparison will include the price, the functionality and the difficulty of the software. We will also consider other differences of the software like its intended uses, targeted users and the respective pros and cons of each 3D modelling software.
2.1. Prices
The different 3D modelling software comes at different price points. Hence, we will compare the prices of the different softwares. Blender and SketchUp are available for free. Blender is a free software for any purpose, including commercially or for education. SketchUp is available for free but also offers different plans with different levels of function at different rates. The most expensive version of Sketchup, SketchUp Studio is priced at USD$1199/year (approximately SGD$1614). Autodesk 3ds Max and Autodesk Maya are both priced at SGD$2132/year whereas Autodesk Revit is available at SGD$399/month or SGD$3190 for a year. ZBrush is available at SGD$39.95/month or SGD$179.95 for 6 months or SGD$895 for a single perpetual license while, Rhinoceros 3D is available at USD$995 (approximately SGD$1340) for commercial use and USD$495 (approximately SGD$666) for students. Cinema 4D is available from USD$59.99/month to USD$116.99/month (approximately SGD$81to SGD$159) or a perpetual license for USD$3495 (approximately SGD$4746). From this, Blender is the cheapest 3D modelling software while SketchUp is a freemium software. The other software all come at a price of at least a few hundred dollars and up to a few thousand dollars and are mostly on a subscription basis.
2.2. Functions, features and the intended users of each software
2.2.1. Blender
For Blender, a completely free software, it has many functions. Blender can allow for 3D modelling, sculpting, animation and rigging, rendering, simulation, compositing and motion tracking and even video editing. Blender has digital sculpting tools that are required for digital production. On top of that, it has an extensive Python API which allows for scripting and customization. Blender’s extensive modelling tools also allow for the creation of detailed 3D models, which can also be animated in Blender. Blender being a community-driven project, is intended for everyone’s use and is used to create 3D models, animations, simulations and for digital production.
2.2.2. SketchUp
SketchUp includes drawing layout functionality, surface rendering and supports third-party plugins. SketchUp is used for a wide range of 3D modelling projects like architectural, interior design, landscaping and video game design. SketchUp models can also be printed with 3D printers. SketchUp’s functions mainly focuses on architecture and interior design, and are mainly used by architects and interior designers.
2.2.3. Autodesk 3ds Max
Autodesk 3ds Max is a web-based graphic design software, specifically for 3D rendering and animation and is part of Autodesk suite of software for construction, engineering and architecture. Autodesk 3ds Max is capable of rendering high-definition details, making virtual objects such as characters, scenes and infrastructure more realistic and detailed. Its animation tools allow you to simulate scenarios and physics like the dynamics of a variety of fluids, gases and solids. Autodesk 3ds Max has a rich library of 3D content and a wide range of templated modelling, effects and texturing tools. Autodesk 3ds Max has an open API to help you integrate external apps. Autodesk 3ds Max is mostly used by games developers and architectural designers.
2.2.4. Autodesk Maya
Within Autodesk Maya, there are scene assembly and modelling tools to create realistic environmental elements such as trees, foliage, and rocks, as well as organic locations and terrain. Autodesk Maya also have features such as “Subdivision Surfacing” modelling to create complex architectural forms with realistic programmatic elements. With its advanced tools and high-end plugins, Autodesk Maya software is capable of creating some incredibly impressive 3D Art. Autodesk Maya provides high-end character and effects toolsets along with increased productivity for modelling, texturing, and shader creation tasks. Autodesk Maya is widely used in the animation industry across the world.
2.2.5. Rhinoceros 3D
Rhinoceros 3D is a free form surface modeller that uses the modelling by curves technique (NURBS or Non-Uniform Rational Basis Spline). NURBS is a mathematical model that renders curves and surfaces in computer graphics. This kind of modelling optimize the number of faces forming the object’s surface and offers great flexibility and precision. Rhinoceros 3D includes a complete set of tools such as all the general tools, transform tools, points and curves options, surface features, and a lot of mesh tools to export your meshes or convert NURBS to meshes for display or rendering. Rhinoceros 3D modelling software can also provide deep analysis and visualization features. Rhinoceros 3D is used by architects and interior designers as well as product and graphic designers.
2.2.6. ZBrush
Zbrush is a radical departure from convention when it comes to modelling objects in 3D, as it uses a brush system to enable designers to shape virtual clay in real-time. The digital sculpting and painting program that has revolutionized the 3D industry with its powerful features and intuitive workflows. Built within an elegant interface, ZBrush offers the world’s most advanced tools for today’s digital artists. Designed around a principle of circularity, the menus in ZBrush work together in a non-linear and mode-free method. ZBrush also provides all of the tools needed to quickly sketch out a 2D or 3D concept. ZBrush users are enabled by its powerful software processing allowing users to paint with billions of polygons. ZBrush is used by everyone from art enthusiast to major film and games studios.
2.2.7. Autodesk Revit
Autodesk Revit is a versatile Business Information Modelling (BIM) system which is comprised of several toolsets for MEP and structural engineering, construction and architectural design. The BIM workflow maximizes productivity and helps to streamline design and documentation workflows; speeding projects from design to completion while automating updates. Autodesk Revit offers many other tools and features that can enhance productivity such as Physical Materials for Building Performance Analysis, Autodesk 360 Integration, Worksharing, Construction Modeling, Bidirectional Associativity, Parametric Components. Autodesk Revit is used by architects and other building professionals to help reduce risk, obtain insight into how buildings will perform before construction begins, develop better quality designs.
2.2.8. Cinema 4D
Cinema 4D includes a wide range of functions from modelling, texturing, animation and rendering. It is capable of procedural and polygonal modelling, animating, lighting, texturing and rendering. It also comes with a sound workflow that allows for simple integration with compositing application pipelines making it a multi-purpose application that can be used in films and in motion graphics. Cinema 4D is commonly used in the film industry. Examples of movies that used Cinema 4D include Monster House, Spiderman 3, Chronicles of Narnia and Beowulf.
2.3. Difficulty
2.3.1. Blender
Blender’s interface is complicated to learn as there are so many keyboard shortcuts and tools are hard to find. Blender is rather complex graphical and programming system and there are many things to learn such as video, 2D painting, rendering, audio and programming
.
2.3.2. SketchUp
SketchUp’s toolset is familiar, it’s interface is straightforward, and its plugin compatibility is robust and there are no more unsettling stigmas associated with using the program.
2.3.3. Autodesk 3Ds Max
Autodesk 3Ds Max is not difficult to learn as it starts to show automated results after a few steps and the interface is relatively easy to understand.
2.3.4. Autodesk Maya
Autodesk Maya has a steep learning curve and its difficult to learn as its interface is very complicated.
2.3.5. Rhinoceros 3D
The interface of Rhinoceros 3D is fairly intuitive and is comparatively easy to understand but generating complex forms does require a firm knowledge of principles pertaining to NURBS surface modelling.
2.3.6. ZBrush
ZBrush has a very non-intuitive interface and has a steep learning curve. It is difficult to learn where all the tools are and what does those terminologies meant.
2.3.7. Autodesk Revit
Autodesk Revit offers an astounding amount of flexibility and complexity while maintaining a gradual learning curve that is easy for beginners to digest.
2.3.8. Cinema 4D
Cinema 4D has an intuitive interface. Its flexible interface makes it easier to use. It is easier to learn as compared to other 3D modelling software.
CONCLUSION
Blender is the cheapest among the rest of the software. SketchUp provides a free version but there are other versions of SketchUp with more features and function that requires subscription fees. Whereas Autodesk Revit is the most expensive with a subscription fee of SGD$399/month or SGD$3190 for a year. SketchUp, Autodesk 3Ds Max, Autodesk Revit and Cinema 4D are the easiest to learn, while Blender, Autodesk Maya and ZBrush are the hardest to learn. Rhinoceros 3D has an easy learning curve of creating basic geometries, generating complex forms does require a firm knowledge of principles pertaining to NURBS surface modelling as NURBS modelling methodology, especially when continuously smooth forms need to be created, can become quite complex.
ACKNOWLEDGEMENT
We would like to thank our mentor Mr Chen Yi and Ms Fiona Liausvia for giving us the opportunity to learn with them as well as their guidance and support and we would also want to thank our school mentor Mr Ivan Sum for his encouragement throughout our WOW programme.
1. Blender 3D modelling
Despite being an open-source software and a community-driven project, Blender has many functions. Blender is capable of 3D modelling, sculpting, animation and rigging, rendering, simulation, compositing, motion tracking and even video editing. However, I will be focusing on the content I have learnt in the area of 3D modelling.
3D modelling is a technique in computer graphics for producing a 3D digital representation of an object or a surface. Blender, just like most 3D modelling software, works by representing the 3D objects as a mesh or meshes.
A mesh is a collection of vertices that forms a 3D object. A mesh can also be seen as a collection of faces or polygons. Since, the collection of vertices forms faces. A common term used to describe 3D objects is whether the objects are low-poly or high-poly. Low-poly 3D objects are meshes that is made up of few number of polygons, whereas high-poly objects are made up of many polygons.
The process of creating a 3D object usually starts with a reference image and a scale in mind. A reference image would be used for the creation of realistic, life like 3D objects. A scale is especially important when creating multiple 3D objects and placing them in the same 3D space. This will ensure that the objects are of an appropriate size. Next, a primitive mesh is usually used as a starting template. A primitive mesh is a mesh that is already available by default and acts as a starting shape for modelling. Then, different functions and tools have to used to alter the primitive mesh into different shapes. This could be altering the vertices, edges or faces of the primitive mesh.
There are many functions. Hence, I will go through some of the more commonly used functions.
Firstly, extrude is a function that allows for duplication of vertices, while still connected to the original vertices. New vertices are turned into edges and these edges form new faces. This adds new geometry to the existing mesh.
Secondly, the bevel tool smooths out the corners of the mesh by adding new geometry to the edges. This tool can smooth out the sharp edges in the mesh.
Thirdly, a commonly used tool to model curves is the Bezier curve. It allows for the drawing and tracing of curves. This can create the curves required for the 3D object.
Lastly, there are modifiers which are simple algorithms that can be applied to the 3D objects. For example, the array modifier can clone the object in specific ways, like a clone every 10cm apart along the x-axis. The Boolean modifier makes it possible to remove or cut out a certain portion of the mesh geometry, while still leaving the rest intact.
Additionally, Blender allows for texturing of the objects. Different materials can be modified and applied to the objects. Properties of the textures of materials like its roughness or brightness can be altered too. Blender can also render images of the 3D models out. This requires a camera and lighting. It is like having a photo shoot for the 3D object.
2. Unity and C# coding
Unity is a popular game engine and physics engine. Unity has the capabilities to simulate physics within the virtual environment. 3D objects can be imported into Unity. To control the 3D objects, or GameObjects as it is referred to in Unity, C# coding is required. C# coding comes with its specific syntax, in this case a ";" after a line of code.
With C#, the GameObjects can translate or move along a certain axis or rotate about a certain pivot. Learning C# coding required a lot of researching. Online resources can often provide the specific keywords for the specific functions. It is also important to understand the logic behind the code.
The basics of Unity begins with its interface, which is customisable. Panels and screens can be moved around to suit each person's liking. The first part of understanding Unity is understanding the two different modes. The play and edit mode. In the edit mode, the user can edit the GameObjects, the scripts of code or the scene etc. In play mode, Unity runs the whole scene and all the codes allowing the user to test the game or the virtual environment.
To get a GameObject to move, a script has to be attached to the GameObject. In the script there will be the C# code. A simple example of a code to move a GameObject would be "Transform.Translate(Vector3.forward * Time.deltaTime);". This gets the GameObject to translate forward along its z-axis at one unit per second. 'Time.deltaTime" refers to real time or the changing time. To achieve a more complicated set of movements, a more complicated script of code is required.
To get GameObjects to interact with each other, two modifiers have to be applied to the GameObjects. The Rigid body and Collider modifiers. Rigid body allows the GameObject to experience forces and gravity in real-time. Colliders allows the GameObject to experience physical collisions with other GameObjects.
3. Report on comparison of 3D modelling software
I managed to learn a lot from producing the report. I learnt that there were only a handful of 3D modelling software that were very popular and widely used. These software are Blender, SketchUp, Autodesk Maya, Autodesk Revit, Autodesk 3ds Max, ZBrush, Rhinoceros 3D andCinema 4D.
When comparing the prices of these software, it is evident that most of them are costly. Only Blender and SketchUp are available for free. Monthly subscription fees can be at a few hundred dollars, while one-time perpetual license, which was available for just a few of the software, cost thousands of dollars. These software are widely used by the film industry in their film production. Common users of these software also include architects and interior designers because some of these software have dedicated functions to building and interior designing.
The modelling software all had their own pros and cons. More expensive software came with more functions like for Autodesk Revit. Other software can have a steep learning. Autodesk 3ds Max is difficult to learn and pick up requiring a lot of time and effort.
1. Content Overload
There were a lot of content to learn and absorb in a short span of a few weeks. It was tough to try to pick up both Blender and Unity, having only had some prior knowledge in programming. Blender was really something new to me. There were just hours and hours of content for creating pretty simple 3D objects. Blender had many functions, tools and modifiers etc. I also had a lot to learn in Unity. Unity had its own set of functions, tools and modifiers too. I have never had experience with any software that were similiar to Blender and Unity, and I had to learn everything from scratch. However, over time I really did gain a lot of knowledge in Blender and Unity.
2. Resolving the Problems
In the process of completing the final products, I encountered a lot of problems. I would get numerous errors just from a single script of code. I experience difficulties in Blender when learning and creating 3D models. I had to try again and again. This was the same for Unity. I ended up repeating the same process because I had to keep on resolving the problems that came one after another. Encountering problems and challenges was inevitable. I was working in an area I had no prior experience in. Overcoming the problems and challenges allowed me to learn even more.
Valuing the Experience
I treasure the experience I had working in this organization. I was able to work with the mentors there who were really willing to help even when they were busy with their own work. This was really an unique opportunity. From this opportunity, I got to learn new knowledge, skills and content. Some which would be useful in the future in life.
Despite all the challenges during the process, I enjoyed my time and the whole experience. I will remember the knowledge and skills I have gained during my time in the organization and put it great use in the future.