Building an Architectural Walkthrough Using Unity
Starting from 3D models in common architectural software, we will discuss the workflow to load the models into Unity and even incorporate model changes. The building model will be refined, with better materials and lighting, so it looks attractive to the visitor. With a few basic scripts, we add the necessary interactivity and finally export it into an application you can share.
This video tutorial shows an efficient and easy approach to apply an architectural 3D model into your project for quick and reliable results.
About the Author
Stefan Boeykens is an architect-engineer from Leuven (Belgium). After graduation, he was involved in architectural practice for about 4 years, before returning to the KU Leuven for his PhD in 2007 on the integration of Building Information Modeling (BIM) in the design process. He worked on a variety of research and education projects, ranging from CAD and BIM to metadata for architectural archives and cost simulations. His main research interests are BIM, 3D modeling and visualization, digital historical reconstruction, parametric design, programming, and interoperability between a variety of software tools, with a special focus on openBIM.
Importing Architectural Models in Unity
What this course entails
Unity cannot directly import SketchUp files. Export the model to compatible 3D formats for Unity.
ArchiCAD does not support FBX or Collada. Instead of using 3D obj formats, we rely on model exchange through Cinema 4D.
Unity integrates directly with Cinema 4D.
Once you established a model import, Unity retains its import settings and will reload the model when the file is updated automatically.
Architectural models tend to be large and complex. Splitting the model into separate files and applying culling and batching will improve performance.
Navigating an Architectural Model
Creating an interactive navigation system can be quite elaborate. Luckily, Unity provides two common setups: a First Person and a Third Person controller.
3D objects are usually not aware of other's geometry in the scene. Colliders are used to detect the objects passing through them.
Depending on the context, you have to choose between a First and a Third Person view point. Unity provides both of them as examples.
Using the default construction worker is not suitable in typical architectural visualization situations. You can use the Unity Asset Store to load or buy new characters and animations.
To assist the user with navigation, you can add additional cameras that can be used as a subset of the screen.
Improving Materials with Shaders and Textures
The default materials imported from CAD/BIM can be dull. We can improve them a lot by using multiple textures.
A plain-colored background helps with the orientation a bit. By adding an environment texture, we can see the sky and clouds all around us.
Though we can create a transparent material with the default shaders, it is dull and does not give the impression of a reflection. When we use a special shader, we receive a pseudo reflection.
Texture materials can use up a lot of memory and are not easy to adjust quickly. Procedural textures can generate textures from a recipe and can be edited.
Some objects have holes and cutouts, which can take lots of geometry to model. We can increase the performance using simple geometry and cutout shaders.
Adding Lights and Shadows
Without lights, your project is dull and dark. There are four different light types available to brighten up any scene.
There is no sun object in Unity, but we will mimic the light effects of the sun using a directional light. Moreover, it can also cast real-time shadows.
Exterior, direct lighting is fairly easy, but interior scenes can be dull and flat, initially. Use several lights with fairly low brightness to even out interior lighting.
Real-time lights are very demanding and have lower performance. With Lightmapping, we can pre-calculate lighting as an additional texture layer on objects.
Calculating lighting in advance can take lots of rendering time and texture memory. Start with conservative settings.
Animating Objects and Lighting
Unity has several possibilities to define animation. Apart from scripting, there are two animation systems available, Legacy and Mecanim.
Animation in Unity is stored in animation clips. We need to create the clips and attach them to the right object.
Gameobjects only rotate around their own pivot point. To rotate them around a different point, we can use an object hierarchy.
For full control over animation, we require scripting, and we can get quite far with the keyframe animation alone.
An animated sun study uses a combination of different rotations and also needs to shift color. Almost any object property in Unity can be animated.
Scripting to Add Interactivity
Out of the box, Unity is quite complete. However, to add specific functionalities in a project, you require scripting.
To write scripts, you need a good code editor. Unity includes Monodevelop, which is an integrated development environment.
Scripts often contain events that need to occur at a specific moment or situation. We react to a Trigger Event to capture the player approaching.
Materials are assigned to the Renderer component. With scripting, you can replace them with another material.
Shortcuts only make sense on the desktop and Webplayer. Adding a GUI button is consistent on all platforms.
Expanding the Scripts
Sometimes you want to hide or show the parts of your model, or you might want to switch between different design alternatives. You can enable and disable the Mesh Renderer component of Gameobjects using a script.
Sometimes you want to present the user with a particular viewpoint: from above or from an alternative angle. We will move our main camera between different present camera positions.
When you fall from the world or want to quickly step back to where you began, you can move the player.
If we want to request more information about a particular object, we need to highlight or select it first. Picking objects uses a cast ray in the scene to pick objects.
When we highlight an object, we want to see some information in a pop-up window. We will request information from a custom component and display it in a GUI window.
Presenting the Final Walkthrough
The Unity Editor is an authoring environment, which gives a preview of your game for testing. However, to share your result with the world, you need to compile it in an actual game or app.
Once you have chosen the desired platform and player settings, you can build your game.
Depending on your Unity license and operating system, you have multiple platforms at your disposal.
Unity supports iOS, but you need a Mac that runs XCode and an iOS SDK Developer license.
Unity has the provision of being controlled by the Unity Remote App which can be run from your IPhone.
While a running app can be all you need, some minor improvements are often required.