0% found this document useful (0 votes)
45 views53 pages

Building VR Ar Experiences With Cityengine Unity and Unreal Engine

Uploaded by

chauhan342001
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
45 views53 pages

Building VR Ar Experiences With Cityengine Unity and Unreal Engine

Uploaded by

chauhan342001
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 53

Building VR/AR Experiences with

CityEngine, Unity and Unreal Engine 4


Pascal Mueller, Stefan Arisona
Agenda

• Introduction to game engines


• CityEngine user examples
• Unity or Unreal Engine?
• Importing GIS data in general
• Importing GIS data into Unity
• Importing GIS data into Unreal Engine
• Summary and outlook
Introduction to game engines
What is a game engine?

A software development environment designed for people to build video games:


• Rendering engine for 2D or 3D graphics
• Multiple device support: desktop, mobile, console, VR/AR
• Animation, game AI, physics, audio
• Cinematics and virtual production
• Asset management, increasingly also editing tools
• Extensible, scriptable
• Networking, memory management, threading, localization support …
Why use game engines to build AR/VR experiences?

VR/AR experiences are use-case specific applications:


• focused on story
• intentionally limited functionality
• real-time UI / UX
• content centric, graphics intense
• need to support a variety of VR/AR devices

These characteristics make them a good match for game engines.


Interactive experience vs. offline rendering

Interactive experiences such as games, touchscreen apps, live video effects, VR/AR
apps require fast refresh rates (60 fps or higher).

Alternatively, game engines can also be used for offline rendering of 3D still images
and video sequences.
Architectural visualization

25% of users say they use game


engines (mainly Unreal Engine and
Unity) for architectural visualization.
50% of users say they are
experimenting with game engines.

Source:
CGArchitect 2019
Arch Viz Rendering Engine Survey
Creating experiences quickly: Epic Twinmotion and Unity Reflect
CityEngine user examples
Unity or Unreal Engine?
Unity vs. Unreal Engine: what they have in common
• Both are complete game development environments
• Run on all major platforms, support many target platforms (PC, mobile, console)
• Support state-of-the-art 3D rendering, both are well suited for XR
• No built-in support for GIS data / coordinate systems yet
Unity vs. Unreal Engine: licensing
Unity Unreal Engine
• Subscription model • Publishing license: royalty-based
• No royalties • Creators license: no royalties, free
• Source code not generally available • Source code available

• Both: options for custom licensing

• Licensing details are important when


choosing your engine
Unity vs. Unreal Engine: technology
• Unreal Engine is generally better suited for high quality / performance applications
- More advanced render features (ray tracing, sky atmosphere model, etc.)
- Can easily be customized with C++ code
- Unity is however lagging only little behind, also providing more high-end features
• Unreal Engine has a visual scripting system called “Blueprints”
- Makes it very easy to prototype functionality, implement high-level concepts where C++ is
overkill
- Unity, so far, has no such feature, scripting is based on C#
• The Unreal editor environment is completely customizable
- Use Blueprints, Python, C++ to add your own functionality
- Unity allows extending the editor to some degree
• Unreal tends to be “heavyweight” in resource consumption than Unity
Unity vs. Unreal Engine: adoption
Unity Unreal Engine
• Popular among beginners • Not very beginner friendly
• Many indie developers • Used in larger projects / AAA
• Originally 2D / mobile focus • High-end 3D
- 3D engine is evolving though - Quite resource hungry
- Mobile support catching up
• Non-game support emerging • Strong non-game support by Epic
- Focus on AEC, CAD, simulation
• Large community • Smaller community
Unity vs. Unreal Engine: our conclusion so far...

“Winner”

Development environment Draw

Technology Unreal

Community Unity
Importing GIS data in general
Game engine limitations for geospatial and CAD data
• Traditionally, game engines work in a local coordinate system and are not able to
cope with georeferenced systems
- Thus data must be transformed (centered) before it’s imported
• Precision: typically 32bit floating point
- Extent must be within limits (depending on base unit applied)
• Optimization
- Game engines focus on rendering (with some additions, e.g. collisions) and therefore
optimize (e.g. merge) geometry so it can be batch-rendered
- Consequently, originally structured data is turned into unstructured objects, making it hard
to interact with

• There is work in progress to address these limitations


Getting CAD data into game engines... is it really that complicated?

Source: https://www.researchgate.net/publication/258241826_Using_3D_Design_software_BIM_and_game_engines_for_architectural_historical_reconstruction
The classic option: FBX

• FBX (by Autodesk) is well supported by both Unity and Unreal Engine
• 3D modeling and CAD tools often provide FBX exporters

• So, in theory, this should all work nicely, right?

• In practice however…
The classic option: FBX

• …it’s typically a mess (not just for FBX).

• Incompatible format versions, nonstandard


• Problems with mesh and material handling
• Problems with handling large models
• Unknown origin of source data
• …
A different approach: Unreal Datasmith & Unity+PiXYZ
A different approach: Unreal Datasmith & Unity+PiXYZ
Dataprep: transform your data so it fits the engine

• You can hook into the engine’s import process to filter, optimize, replace, enrich, ...
• In Unity: Using custom import scripts or by using PiXYZ
• In Unreal Engine: Using scripted or visual dataprep
Include geospatial data using CityEngine

BIM / CAD FBX import

Base Maps Get map data


OSM

Sync
ArcGIS Online
ArcGIS Urban
FBX

Unity Editor
Importing GIS data into Unity
Workflow: select models and chose “Export Models...”
Workflow: chose Autodesk FBX, tweak settings, and click “Finish”
Workflow: drag & drop FBX file to Unity assets and into scene
Workflow: move camera to a point of interest in the city
Workflow: press “Play”
Importing GIS data into UE4
Replacing CE preview materials with high quality UE4 PBR materials

Preparation of UV mapping
Texture in CityEngine

Replacement of material
Replacing CE placeholders with UE4 assets

Unreal Engine foliage system


UI for batch replacement of large amounts of placeholders & assets
Sidewalk greenery after applying replacements
Night scene using street light Blueprints
Terrain remains editable using brushes and other landscape tools
Realistic sky lighting and cloud rendering
Summary and outlook
Summary
• Game engines are great for building real-time 3D experiences
• They provide most required features, also for AR/VR, out-of-the-box

• However, they are heavily specialized on graphics performance


- Experiences with special requirements will typically require coding

• Unreal Engine and Unity have many similarities, also some differences.

• Importing CAD data is generally well supported


• Importing GIS data has limitations
• CityEngine helps combine GIS and CAD data and resolve some of the limitations
Outlook
• With the growing use of game engines for non-games (AEC, CAD, ...), the engine
companies are increasingly interested in GIS data
• We can expect engine enhancements to better handle GIS data soon

• In addition, we will see integration of CAD- and GIS enabling software directly into
the engine. For example:
- CityEngine integration: plugins to generate procedural geometry directly in the engine
- ArcGIS integration: plugins to access GIS content from within the engine
Vitruvio: A CityEngine plugin for Unreal Engine

You might also like