Download Realtime Interactive Architectural Visualization using Unreal Engine 3.5 (UDK) PDF

TitleRealtime Interactive Architectural Visualization using Unreal Engine 3.5 (UDK)
Tags3 D Modeling Visualization (Graphics) Rendering (Computer Graphics) Virtual Reality Adobe Flash
File Size4.9 MB
Total Pages91
Document Text Contents
Page 1


Department “Institut für Informatik”

Lehr- und Forschungseinheit Medieninformatik

Prof. Dr. Heinrich Hußmann


Realtime Interactive Architectural Visualization
using Unreal Engine 3.5

Neal Bürger

[email protected]

Bearbeitungszeitraum: 01.10.2012 bis 31.03.2013

Betreuer: Prof. Dr. Wolfgang Höhl, Henri Palleis

Verantw. Hochschullehrer: Prof. Dr. Heinrich Hußmann

Page 2

Realtime Interactive Architectural Visualization using Unreal Engine 3.5


Page 45

Realtime Interactive Architectural Visualization using Unreal Engine 3.5


static texture file. Static reflections are calculated only once when the level is generated
and then never updated.

In addition to the potential performance issues, the method requires that for each object
that uses a direct reflection component, a unique material and accompanying light probe
must be placed. This process can be very time consuming for the artist. It is generally
discouraged to use reflective materials in UDK.

5.2.3. Refractive Materials

Transparent objects, like glass, cause the light being refracted by the material.

UDK offers the possibility to create transparent objects, using the “Translucent” shading
model. The model has additional attributes to modify the opacity and distortion.

When looking at a rounded transparent object, like a glass, the object is usually very
transparent in the center; however, on the edges of the glass it appears to be less
transparent. The light is refracted and reflected simultaneously; this effect is called Fresnel

UDK offers a “Fresnel” node. This node is added to the shading network to control the
opacity. A similar setup can be used to control the distortion factor.

Figure 5.5.: Transparent material with distortion

For the direct reflective component, the previously described method has to be applied

A major issue when using this material is that it has no option to enable translucent
shadows as well as stencil shadows.

Another issue is that UDK does not calculate “refraction”, it only distorts the
environment based on the values in the map passed to the distortion attribute. Refraction
index values cannot be directly applied and distortion attributes have to be manually

5.2.4. Glowing Materials

Lamps when turned on emit light and have a visual glow around them. The basic material
has an emissive attribute to make objects glow. Values above 1.0 are needed to be able to
see a visible effect.

Page 46

Realtime Interactive Architectural Visualization using Unreal Engine 3.5


The glow does not actively emit light. However, the property can be used to create the
material of the lampshades and by placing light sources near the lamp it appears that the
lamp would be actively emitting light into the scene.

Figure 5.6.: Glowing material Glow Value 4.0

5.2.5. Adjusting Materials during Gameplay

The UDK shading system has the feature to use the “ParameterValue” nodes. These nodes
function as named variables. An instance of the material can be created, however, the
“ParameterValues” can be overridden. This allows complex shading networks to be easily
reused for multiple variations of the material.

In addition, the system has the possibility to modify these values dynamically. To enable
this functionality, the “MaterialInstance” has to be created, and a “MaterialInstanceActor”
is added to the level for managing it. Using Kismet the “ParameterValues” can be set
to a specific value. As alternative a “Matinee” sequence can be used to change the
“ParameterValues” over time.

5.3. Lighting
We discuss the basics of the UDK’s lighting system and how it can be used in an
architectural context.

5.3.1. Light Placement

When lighting for animation is used it is common practice to use 3-point lighting: a key-
light, fill-light, and rim-light. The light sources in most cases cannot be seen and can be
simulated by using basic virtual lights [75].

However, this type of lighting setup is created based on the camera position. For lighting
in interactive 3D environments it is important to place lights in a plausible fashion and
independent from the camera. In addition, because the user can explore the environment,
in most cases the user should be able to see the source of the light.

5.3.2. Direct Light

UDK provides four common basic light types: Point light, Spotlight, Directional Light,
and Skylight (a type of ambient light).

Page 90


def export _ browse(*args):
indir = cmds.fileDialog2(fileMode = 2, okCaption = “Select”)
cmds.textField(widgets[“export _ Dir”], e = True, text =

def export _ fbxSettings(*args):
mel.eval(“FBXUICallBack -1 editExportPresetInNewWindow

11.2. Example T3D File
Begin Map Name=Untitled _ 2
Begin Level NAME=PersistentLevel
Begin Actor Class=StaticMeshActor Name=StaticMeshActor _ 0
Archetype=StaticMeshActor’Engine.Default _ _ StaticMeshActor’
Begin Object Class=StaticMeshComponent
Name=StaticMeshComponent0 ObjName=StaticMeshComponent _ 1 Ar
chetype=StaticMeshComponent’Engine.Default _ _ StaticMeshActo
StaticMesh=StaticMesh’ASC _ Floor2.SM.Mesh.S _ ASC _
Floor2 _ SM _ Stairs _ Simple _ 01’
End Object
End Actor
End Level
End Map

11.3. ActionScript Code
import flash.system.fscommand;
import flash.display.SimpleButton;

mc _ cursor1.x = mouseX;
mc _ cursor1.y = mouseY;
mc _ cursor1.startDrag();

var btn _ arr:Array = new Array();
btn _ arr.push(
btn _ first _ one,
btn _ first _ two,
btn _ first _ three,
btn _ first _ four,
btn _ first _ five,
btn _ second _ one,

Page 91

Realtime Interactive Architectural Visualization using Unreal Engine 3.5


btn _ second _ two,
btn _ second _ three,
btn _ second _ four,
btn _ third _ one,
btn _ night,
btn _ morning,
btn _ evening,
btn _ midday,
btn _ city,
btn _ nature,
btn _ lamppost,
btn _ cancel,
btn _ allLights,
btn _ lightsetting1,
btn _ lightsetting2,
btn _ lightsetting3

//register EventListener
for (var i:int = 0; i < btn _ arr.length; i++){
btn _ arr[i].addEventListener(MouseEvent.CLICK,

//Send Commands to Scaleform
function sendFscommand(e:MouseEvent):void{
var button:SimpleButton = SimpleButton(


Similer Documents