Applying game techniques into real life simulation
Trying to find the best solution to make a realistic simulation of terrain, our objective is to find which is the best tool for this. The video game industry has an extended experience in simulators of many kinds, such as flight simulators, racing games (which include car, bike and truck simulators). They have become more and more intuitive over the years and thousands of people have used them.
Caterpillar’s goal is to make a system that allows operators to remotely control bulldozers. In the end, it is a very similar experience to controlling a truck in Monster Truck Madness; with a few changes like the 3D models or the speed of the vehicles.
Our research in different game engines, such as Unity 3D, will allow us to learn more about how video games simulate the real world; with things like collisions between objects and physics, and apply that into our simulation.
This week was pretty productive, as I was able to prep for quarters while continuing research into possible solutions for material simulation. By using the CA-6 texture provided by Sam, I was able to create a short video that shows how the gravel may move when the Multi-Terrain Loader is plowing through it. The simulation was made in 3DS Max using simple helper objects to deform the meshes as the MTL moved through the terrain, while I animated the texture to further simulate the gravel’s flow. From this, I learned that the meshes would have to be much more complicated with a higher end bone setup in order to accurately display the simulation.
For modeling, I’ve made more progress on the gears & pistons detail for the MTL, and will be moving onto modeling the cab interior for next week.
This week I have been working on finding what would be the best way to make the different types of materials. I have been looking into a number of different options to do this. The one I have spent the most time on so far is Unity 3D’s particle system. From what I was able to find, the particle system in Unity can be useful in a few different ways. However it does have some set backs with not being able to use 3d particles. Because of this, I have been looking into what else could be used to make up for that. One method I have come across is to bake a physics simulation into 3D models.
I have started looking at taking 3D modeled rocks in 3DS Max and applying a Reactor simulation to them. Reactor is 3DS Max’s built-in physics simulation system. I tried a few things to have them fall and layer naturally. I baked the animation down from the simulation onto each rock. With this I can take these rocks into Unity. What I am aiming to do next is to have the MTL run over them and push them to see how they behave, take that simulation into Unity to see how they would look with the terrain and a mixture of particles.
This past week I’ve been doing further research into higher-end game engines, such as Epic’s Unreal Development Kit and Crytek’s CryEngine 2. The reason we decided to look into these engines is that they contain the capability to use a 3D particle system that also inherit physics capabilities. These features provide a plausible method to achieve the realistic simulation of material spillage that Caterpillar is looking for.
Other avenues of research are using 3D assets that inhibit physics and using them en-mass to be pushed by the dozer; though this could result in massive lag in real-time playback and may not be the best solution. Another route that will be researched is using other effects such as fluid simulations, as soil is very similar to water.
The Change of Researching Engines
This week is very crucial to me, as I researched the core function of Truevision3D: allowing terrain deformation based on influence of the user’s control object. The function is successful colliding after a modification of the vertices from a static mesh. The result is, the MTL model falls down and collides with the terrain mesh. However, while I was digging the terrain where the MTL stands, it was not falling down by the terrain sinking. So the conclusion is, the physics engine could not recognize the deformation of the mesh but only remember the initial placement of it. Due to this failure, I gave up doing research of the engine and go on working with the Unreal Development Kit.
In the last 3 days, I have been focusing on learning the basics about UDK. This development kit has a complete and strong IDE and as well as functions. The user interface is pretty straight forward and much easier to use. From the tutorial, I can get that it is very robust, with plenty of high end gaming features. The shader functionality is strong and organic, very artist friendly, much like using a Maya shading network. The physics module is from PhysicsX so I think it might work well and could satisfy our requirements. I will continue research into this engine, specifically looking into whether the scripting function of the engine is strong enough to modify the vertices of the surface and importing proper data stream.