One of my all time favorite eighties movies is Weird Science. Years ago, I recorded it on VHS, and that tape ended up breaking because I played it so frequently. If you’re at all familiar with eighties cultural items, chances are that you’ve watched the movie, seen references to it, or heard the title track by Oingo Boingo.
To this day, I quote it and refer to it with surprising frequency. I like to think that speaks to the movie’s greatness, but it could just highlight my personal weirdness. Perhaps it’s a bit of both. Nevertheless, Weird Science is a beloved touchstone of my adolescence.
The plot centers on Wyatt and Gary, two high school nerds with dreams of popularity. Wyatt has a knack for computer programming and is able to code various simulations, which was no small feat in 1985. Gary suggests that they simulate a woman because of course he does. They hack into a government network to acquire more computing power for their simulation and feed every image and concept of femininity and coolness they have into it. After hooking a Barbie doll up to electrodes and pressing the Enter key to start the procedure, an odd, paranormal storm rages around Wyatt’s house and the doll transforms, becoming flesh and blood.
There are numerous mechanisms of this summoning ceremony that I’ve never quite understood, but I haven’t needed to know what exactly was going on in order to enjoy and appreciate the story. I don’t have to know how it works as long as it works. I’ve taken a similar approach to 3D software as I’ve engaged in learning how to produce 3D artwork, especially when I was just starting my journey. I had no idea what sort of calculations a particular gizmo or tool was performing, but I knew what the result would be if I used it.
Even after a few years of experience and gaining a better understanding of some of the things going on under the hood, I reach the end of my knowledge and just hook up the doll, trusting the tools to yield results even if I don’t quite grasp every step of the processes involved in achieving them. As 3D software tools become more powerful, users can implement their advanced features in ways that don’t require a highly technical understanding of how they work in order to take advantage of them.
The folks at Epic Games recently released an early access version of Unreal Engine 5, the next major update to their 3D creation power tool. They released a demo in May of 2020 that highlighted two major advancements in 3D art and game production. As technically impressive as they were, these new features put more power into the hands of artists who may not have deep technical knowledge of how the engine works yet can still take advantage of these features to produce some stunning results. I’m happy this is the case because it enables people like me to use powerful, weird science without knowing the formulas.
Unreal Engine 5
One of the challenges of 3D artwork, particularly when the artist is going for realism, is achieving high levels of graphical fidelity without bogging down the interactive experience. If you look closely at an orange, which seems like a relatively simple object, you’ll notice all sorts of textured details in the outer peel.
Objects in the real world have all sorts of intricate details like this, and representing these details faithfully in a 3D interactive experience can be challenging. Typically, if you try to create granular detail using a 3D model with extremely detailed geometry, the game engine will laugh at you and your computer will choke. And nobody wants to incur the wrath of an irate CPU or graphics card.
In response to this challenge, 3D artists and game engines have developed ways to fake small details. Textures called normal maps enable game engines to calculate light bouncing off of an object as if the small details were there, but the tools achieve the desired effect through the use of a low cost image file instead of highly detailed geometry that would be much more taxing on the system. This method allows artists to preserve a certain amount of detail while keeping their polygon count low enough to avoid melting people’s computers.
Unreal Engine 5 takes a dramatic leap forward in this area thanks to a new feature dubbed Nanite that enables it to natively handle extremely high polygon counts and still render the results in real time. And by extremely high, I’m talking billions of polygons in a single scene.
This development means that artists no longer have to find ways to fake details and spend as much time trading graphical fidelity for performance. An artist can take a sculpted 3D model consisting of 3 million polygons and import it directly into the engine. Nanite handles the calculations and the rendering of visual details automatically. This new tool truly empowers the artist to focus on creating their vision without having to master the nuts and bolts of graphical optimization.
Light ’Em Up
Lighting also presents another extremely complex set of calculations in any 3D project. I couldn’t begin to tell you what’s involved in mathematically modeling how light behaves and interacts with different materials to produce what we see, and I’m amazed every time I reflect on the fact that this is something our computers can just do now.
Math was one of my worst subjects until I studied computer programming, when it finally just clicked. The same is true for geometry, which never made much sense to me until I started learning 3D. Now it makes much more sense. But calculating and modeling the behavior of light rays? I marvel at the wizardry that involves.
Lighting has traditionally been a balancing act between static and dynamic light sources. In an interactive 3D experience, there may be some scenes in which a light source moves in real time or a player character walks through a lit area, casting a shadow in response to their real-time movement and location. This use of dynamic lighting is quite computationally expensive, and so it’s used sparingly.
As a result, most lighting is static and “baked,” meaning it’s precalculated and the information is stored in a type of image file called a light map that tells the game engine how to light the scene. Needless to say, static lighting doesn’t respond to environmental changes in real time. Making changes to the way light interacts with all of the surfaces in a scene takes a whole lot of math. To force that kind of workload in real time would likely result in your computer melting just out of spite.
Fortunately, Unreal Engine 5 now has a feature called Lumen that calculates changes in scene lighting in real time without the need for either light maps or baked lighting. This feature includes global illumination. To illustrate what that is, consider your bedroom. You may only have one or two light bulbs in your room, but the light from those bulbs bounces off of the walls and other surfaces to provide soft lighting that fills the room. This bounce lighting is global illumination. Lumen is able to calculate everything from the soft rays reflected from the paint on the walls to the shiny glint of the reflection from the glasses on your dresser in real time. Real-time, global illumination paves the way for artists to create living, reactive, realistic environments that enable them to tell stories and deliver experiences that wouldn’t be possible otherwise. Weird science indeed.
Optimize and Roll Out
Other features have made their way into the early access version of Unreal Engine 5, but Nanite and Lumen are the two marquee items. Not only do they place a tremendous amount of power directly into the hands of artists who can now rely on the engine to do the heavy lifting, but they also stand to change the development cycle of interactive 3D experiences.
Earlier, I mentioned normal maps and how they allow artists to fake details in order to improve performance. Although this process results in better frame rates and fewer occurrences of your computer screaming at you, this optimization takes a good deal of time. The artist creates a highly detailed 3D asset, then a less-detailed 3D asset with the same general shape, then bakes the details from the highly detailed version into a normal map that textures the less detailed one. Nanite dramatically lessens the need for this optimization process, resulting in significant savings in development time.
Similarly, Lumen eliminates the need to continually wait for static lighting to recalculate and new light maps to bake every time there’s a change in the way a scene is lit. Environments can be finalized much more quickly, and overall development time significantly decreases when using Lumen. Additionally, these time savings allow artists to try out different iterations much more quickly. These new tools enable artists to find just the right look and feel without worrying as much about exceeding deadlines. And we can all use a little less pressure in our lives.
Best of all, Unreal Engine is free, including the early access of version five. I’ve created a few scenes in Unreal Engine, and I enjoy using it. You can produce some really cool stuff just by kicking around in it for a while. So, if you’re at all curious, there’s no reason not to jump in and see what you can do with these incredible new features. Just hook up the doll and get weird.