A project to demonstrate hydraulic erosion on terrestrial planets in real time
Kabilan Thangarajah
A
- Page 1 of
-
- Student Background
- 1.1 Education
- 2018 - Present Computer Systems Technology BTECH Game Developing
- Sept 2016 - 2018 Computer Information Technology (CIT)
- 1.2 Work Experience
- June 2019 - Present Technical Support Analyst
- July 2018 - August 2018 Information Technology Assistant
- 1.3 Projects
- Rock Ryder Reloaded
- Simple City Tour
- Senior Assistance Center
- Tato-inn a Fast-Food Restaurant
-
- Project Description
-
- Problem Statement and Background
-
- Scope and Depth
-
- Test Plan
- Quality Assurance (QA)
- System Testing - Load Testing
- System Testing - Load Testing (Results)
- Functional Testing – User Acceptance Testing (UAT)
- Geodesic Polyhedron Generation
- Geodesic Polyhedron Generation (Results)
- Height Map Generation on Planes
- Height Map Generation on Planes (Results)
- Gravity
- Gravity (Results)
- Hydraulic Erosion
- Hydraulic Erosion (Results)
- Collection of Planets created by Testers.................................................................................................
- Gg Son - Andy
- Kanem – Vipulan
- Aunty Earth – Terry
- Page 2 of
-
- Methodology
- Technologies
- Approach
- Major Milestones:
-
- System/Software Architecture Diagram
- Inertia
- Carry Capacity
- Deposition Speed
- Erosion Speed
- Evaporation Speed
- Erosion Radius
- System/Software Architecture Diagram
-
- Innovation
- Hydraulic Erosion
- Hydraulic Erosion (Results)
- Before and After - 0 Subdivisions
- Before and After - 1 Subdivision
- Before and After - 2 Subdivisions
- Before and After - 3 Subdivisions
- Before and After - 4 Subdivisions
- Before and After - 5 Subdivisions
- Before and After - 6 Subdivisions
-
- Complexity
- Geodesic Polyhedron Generation
- Hydraulic Erosion
-
- Technical Challenges
- Geodesic Polyhedron Generation
- Geodesic Polyhedron Generation (Results)
- Vertices generation
- Drawing Triangles................................................................................................................................
- Creating a Rectangle by Drawing Squares
- Creating a Rectangular Prism
- Subdivision
- Height Map Generation
- Page 3 of
- Height Map Generation (Results)
- First attempt of height map generation
- Overlapping a sphere to represent the ocean
- New Algorithm
- Issues with New Algorithms
- Fixed Algorithm for Heightmap...........................................................................................................
- Experimenting with Shaders
- Algorithm with Varying Heights
- Masking Problems when Rigid Filter is on Simple Filter
- Finish Product after bugs were fixed
- Finished Product with Updated Shaders.............................................................................................
- Simulating Gravity on a Planet
- Simulating Gravity on a Planet (Results)
- Height Map Generation (Results)
-
- Development Schedule and Milestones
- Week
- Week 2 – Milestone: Height Map Generation on Planes (16 Hours)......................................................
- Week 3 – Milestone: Apply Heightmaps to Sphere Faces (24 Hours)
- Week 4 – Milestone: Simulate Gravity and 1st Person Controls (24 Hours)
- Week
- Week 6 – Milestone: Particle Based Erosion on Heightmaps on Planes (24 Hours)
- Week 7 – Milestone: Particle Based Erosion on Heightmaps on Sphere Faces (48 Hours)
- Week 8 – Milestone: Final Optimization (32 Hours)
- Week
- Week
- Week
-
- Deliverables
-
- Conclusion and Expertise Development
-
- References
-
- Change Log
Page 4 of 46
British Columbia Institute of Technology ● Learn physics hands-on by using formulas in the unity engine ● Learn how to create shaders using OpenGL ● Create a game on Unity using C# ● Create a game for iOS using Objective-C and C++ through XCode ● Create a game on android using Java through Android Studio
British Columbia Institute of Technology
● Two-year computing program focuses on diagnosing IT system problems and providing
● solutions
● Knowledge of network and information security
● Implementing emerging tools and technologies and working with hands-on work on industry
projects
● Learn web development, mobile development
● Learn Cloud Computing via AWS
Finning International
Working with the EPS team to create scripts, provide onsite support and I am currently working on developing a solution for tracking, processing and outputting device orders by full-stack developing a
React app.
● Orders-Webapp
○ Frontend:
■ React
■ Bootstrap
○ Backend
■ GQL
■ Apollo
■ Prisma
■ MySQL
● Scripts/Data Analysis
Page 5 of 46
● Python - Mainly for data aggregation, comparison and analysis:
○ Pandas
○ NumPy
○ Beautiful Soup
○ Selenium
● VBA
● Batch/PowerShell
Digital Media Academy ● Fixed hardware and software issues internally and globally via slack ● Assisted teachers to educate youth ● Tier 1 and 2 tech support ● Taught Python ● Taught TinkerCAD ● Helped students with Raspberry Pi projects ● Organized games for youth to play during lunch ● Set up internal Lan networks
● A personal project that built upon a school game project
● Created assets using Blender
● Launcher type game consisting of glider physics and power-ups
● Created a shop which allowed players to improve stats based on purchases
● Created a simple storyline with cutscenes
● The project worked on with a team
● https://github.com/KabilanMT/RockRyderReloaded
● Mobile Tour App for Apple/Android
● Hosted Database and Server on Amazon Web Services
● Able to create accounts for the App
● App would download cities whenever the database was updated automatically.
● Had multiple sightseeing locations for each city.
● Would automatically play a recorded message whenever you reached the
● locations.
● https://github.com/SimpleCityTours/SimpleCityTours
● Built a website for users to obtain help from the correct sources
● Portfolio
Page 6 of 46
● Created with
● Implemented a Chat feature for direct user support
● Created user-friendly user interface
● Technologies Used: HTML5, Javascript, CSS, Wordpress
● Website Link: https://helpformomanddad.today/
● Online Kiosk for a fast food restaurant
● Implemented a database to store user’s order
● Connected web server and database together for function use
● Deployment on Heroku server and Github
● Technologies Used: AngularJS, Bootstrap HTML5, PostgresQL, Javascript
Page 7 of 46
until it loses its velocity. As it is moving down, it will take pieces of the terrain with it and once
(^1) Reference Implementation of a Method for Hydraulic Erosion for a more detailed explanation
Page 8 of 46
In Scope Out of Scope
Sphere Generation A Game
Dynamic Textures based off height An Atmosphere
Heightmap Generation Realistic Solar System with Orbit
Hydraulic Erosion
1 st person controls to view planets close up
Simple solar system to show off different types of
planets the project can make
0
20
40
60
80
100
120
140
0 1 2 3 4 5 6 7 8
Performance of 200 Iterations, 10 at a Time
None
Variable Sediment Reduction with Sediment Dropoff
Variable Sediment Reduction with Sediment Dropoff and Sediment Cap
Page 9 of 46
Are you comfortable with
the size of the sphere you
can create?
Are the number of
artifacts acceptable?
Are the number of
subdivisions allowed
acceptable? Does it look
like a sphere?
Page 10 of 46
Are you comfortable with
the size of the sphere you
can create?
Are the number of
artifacts acceptable?
✓ I’m not able to see
any artifacts
Are the number of
subdivisions allowed
acceptable? Does it look
like a sphere?
Are you comfortable with
the size of the sphere you
can create?
Are the number of
artifacts acceptable?
(^) ✓ Snow mountains can be more detailed Are the number of subdivisions allowed acceptable? Does it look like a sphere?
Are you comfortable with
the size of the sphere you
can create?
Are the number of
artifacts acceptable?
(^) ✓ The mountains have a noticeable number of artifacts Are the number of subdivisions allowed acceptable? Does it look like a sphere?
Page 11 of 46
Are you comfortable with
the size of the sphere you
can create?
Are the number of
artifacts acceptable?
✓ It is very nice
looking
Are the number of
subdivisions allowed
acceptable? Does it look
like a sphere?
✓ Yes it looks like a
sphere
Does the terrain look
believable? Not the
shaders, colors or
shadows.
Do 2-3 layers of Simplex
noise make realistic
looking heightmaps?
Does 5-7 layers of
Simplex noise take an
acceptable amount of
time to generate?
Does the terrain look
realistic? Not the
shaders, colors, or
shadows.
✓ It’s not like real life,
because in real life
the terrain should
be flat from space.
For a game it does
look real.
Do 2 - 3 layers of Simplex
noise make realistic
looking heightmaps?
Does 5 - 7 layers of
Simplex noise take an
✓ There was not a
huge difference for
Page 12 of 46
acceptable amount of
time to generate?
the time it takes to
generate the layers
from 2- 7
Does the terrain look
realistic? Not the
shaders, colors or
shadows.
Do 2-3 layers of Simplex
noise make realistic
looking heightmaps?
Does 5-7 layers of
Simplex noise take an
acceptable amount of
time to generate?
Does the terrain look
realistic? Not the
shaders, colors or
shadows.
Do 2-3 layers of Simplex
noise make realistic
looking heightmaps?
Does 5-7 layers of
Simplex noise take an
acceptable amount of
time to generate?
Does the terrain look
realistic? Not the
shaders, colors, or
shadows.
✓ Yes,^ it looks like^
Mountains
Do 2 - 3 layers of Simplex
noise make realistic
looking heightmaps?
✓ Yes,^ it makes it like
there are terrain
features
Page 13 of 46
Does 5 - 7 layers of
Simplex noise take an
acceptable amount of
time to generate?
✓ Seems fast^
Does gravity that controls
the flow of the raindrops
look realistic?
In first person, do the
land masses and
mountains look
believable?
In first person, are the
frames you’re getting
acceptable for gameplay?
Does gravity that controls
the flow of the raindrops
look realistic?
✓ The player isn’t
affected by gravity,
but the rain flow
does look real.
In first person, do the
land masses and
mountains look
believable?
✓ Not like real life but
good for a game.
In first person, are the
frames you’re getting
acceptable for gameplay?
✓ There were random
intervals where the
framerate dropped
but it didn’t last that
long.
Does gravity that controls
the flow of the raindrops
look realistic?
Page 14 of 46
In first person, do the
land masses and
mountains look
believable?
(^) ✓ Mountains could be smoother In first person, are the frames you’re getting acceptable for gameplay?
Does gravity that controls
the flow of the raindrops
look realistic?
In first person, do the
land masses and
mountains look
believable?
In first person, are the
frames you’re getting
acceptable for gameplay?
Does gravity that controls
the flow of the raindrops
look realistic?
✓ Yes,^ it follows^
the path of gravity
In first person, do the
land masses and
mountains look
believable?
✓ Yes,^ it looks
believable
In first person, are the
frames you’re getting
acceptable for gameplay?
✓ Yes 120+ fps is
acceptable
Does the effect of
hydraulic erosion have a
significant decrease in
frames?
Page 15 of 46
Are you able to see a
significant change in
terrain after the erosion?
Showing a before and
after picture to find the
differences.
Does the effect of
hydraulic erosion have a
significant decrease in
frames?
✓ There were random
intervals where the
framerate dropped
but it didn’t last that
long.
Are you able to see a
significant change in
terrain after the erosion?
Showing a before and
after picture to find the
differences.
✓ Yes, a bit too much
on the lower
subdivision counts.
It does look the best
on 5 and 6
subdivisions.
Does the effect of
hydraulic erosion have a
significant decrease in
frames?
(^) ✓ 5 raindrops look choppy. 2 raindrops look fine Are you able to see a significant change in terrain after the erosion? Showing a before and after picture to find the differences.
Does the effect of
hydraulic erosion have a
(^) ✓ 5 is laggy at times but 2 is constantly good
Page 16 of 46
significant decrease in
frames?
Are you able to see a
significant change in
terrain after the erosion?
Showing a before and
after picture to find the
differences.
Does the effect of
hydraulic erosion have a
significant decrease in
frames?
✓ Yes,^ it does with 5
raindrops drops
down to 40fps
Are you able to see a
significant change in
terrain after the erosion?
Showing a before and
after picture to find the
differences.
✓ Yes,^ one of them is
massively smooth
Page 17 of 46
Collection of Planets created by Testers.................................................................................................
Page 18 of 46
Page 19 of 46
Page 20 of 46
Page 21 of 46
Page 22 of 46
Page 23 of 46
Page 24 of 46
Page 25 of 46
Page 26 of 46
Page 27 of 46
(^2) (^2) Reference Cube Sphere, a Unity C# Tutorial for image and implentation
Page 28 of 46
Page 29 of 46
Drawing Triangles................................................................................................................................
Page 30 of 46
(^3) See Flick, Jasper. “Creating an Octahedron Sphere in Unity.”
Page 31 of 46
https://youtu.be/je74_trLTro
Page 32 of 46
Page 33 of 46
Page 34 of 46
https://www.youtube.com/watch?v=c6uBLGCg3qs
Page 35 of 46
Fixed Algorithm for Heightmap...........................................................................................................
Page 36 of 46
Page 37 of 46
mask it onto already created noise and set limits to the heights without it looking realistic. I was
Page 38 of 46
Page 39 of 46
Finished Product with Updated Shaders.............................................................................................
Page 40 of 46
(^4) Reference Mario Galaxy Physics in Unity – Mike Loscocco for detailed implementation
Page 41 of 46
As I am working part time, I will not be able to work on Mondays and Fridays, for that reason I have adjusted my schedule to accommodate for that.
Sunday Geodesic Polyhedron Algorithm 8
Tuesday Geodesic Polyhedron
Generation
Wednesday Geodesic Polyhedron
Generation
Thursday Geodesic Polyhedron
Generation
Saturday Texture Mapping 8
Total: 40 hours
Week 2 – Milestone: Height Map Generation on Planes (16 Hours)......................................................
Sunday QA Testing 8
Tuesday Applying Changes from Testing 8
Wednesday Review Changes/Apply any
Leftover Changes
Thursday Height Map Generation on
Planes
Saturday Height Map Generation on
Planes
Total: 40 hours
Sunday Apply Heightmaps to Sphere
Faces
Tuesday Apply Heightmaps to Sphere
Faces
Wednesday Apply Heightmaps to Sphere
Faces
Thursday QA Testing 8
Saturday Apply Changes from Testing 8
Total: 40 hours
Sunday Add 1st Person Controls 8
Tuesday Simulate Gravity on Planets 8
Page 42 of 46
Wednesday Simulate Gravity on Planets 8
Thursday QA Testing 8
Saturday Apply Changes from Testing 8
Total: 40 hours
Sunday Applying Textures Based off
Heightmaps
Tuesday Buffer Time 8
Wednesday Buffer Time 8
Thursday Buffer Time 8
Saturday Particle based Erosion on
Heightmap on Plane
Total: 40 hours
Sunday Particle based Erosion on
Heightmap on Plane
Tuesday Particle Based Erosion on
Heightmap on Plane
Wednesday Particle Based Erosion on
Heightmap on Plane
Thursday Particle Based Erosion on
Heightmaps on Sphere Faces
Saturday Particle Based Erosion on
Heightmaps on Sphere Faces
Total: 40 hours
Sunday Particle Based Erosion on
Heightmaps on Sphere Faces
Tuesday Particle Based Erosion on
Heightmaps on Sphere Faces
Wednesday Particle Based Erosion on
Heightmaps on Sphere Faces
Thursday Particle Based Erosion on
Heightmaps on Sphere Faces
Saturday QA Testing 8
Total: 40 hours
Sunday Apply Changes from Testing 8
Page 43 of 46
Tuesday Optimize Deposition, Inertia,
Carry Capacity and Gravity
Wednesday Make hydraulic erosion run in
real time
Thursday Optimize Erosion for
Performance
Saturday Optimize Erosion for
Performance
Total: 40 hours
Sunday QA Testing 8
Tuesday Bug Fixing 8
Wednesday Bug Fixing 8
Thursday Set up scenes for presentation 8
Saturday Set up scenes for presentation 8
Total: 40 hours
Sunday Buffer Time 8
Tuesday Buffer Time 8
Wednesday Buffer Time 8
Thursday Buffer Time 8
Saturday Buffer Time 8
Total: 40 hours
Sunday Buffer Time 8
Tuesday Buffer Time 8
Wednesday Buffer Time 8
Thursday Buffer Time 8
Saturday Buffer Time 8
Total: 40 hours
Grand Total: 360-440 Hours
At the end of the project my deliverables will be:
- Project Source Code
- Project Report
- Functional, QA and Stress Test Results
Page 44 of 46
- Beyer, Hans. “Implementation of a Method for Hydraulic Erosion.” Firespark.De, 15 Nov. 2015, https://www.firespark.de/resources/downloads/implementation%20of%20a%20methode%20fo r%20hydraulic%20erosion.pdf.
- Flick, Jasper. “Creating an Octahedron Sphere in Unity.” BinPress, 2015, https://www.binpress.com/creating-octahedron-sphere-unity/.
- ---. “Cube Sphere, a Unity C# Tutorial.” Catlike Coding, Catlike Coding, 2015, https://catlikecoding.com/unity/tutorials/cube-sphere/.
- “Interactive Terrain Modeling Using Hydraulic Erosion.” Exppad, The Eurographics Association, 2008, https://data.exppad.com/public/papers/Interactive%20Terrain%20Modeling%20Using%20Hydr aulic%20Erosion.pdf.
- Kahler, Andreas. “Creating an Icosphere Mesh in Code.” Catch 22 - Andreas Kahler’s Blog, 20 June 2009, http://blog.andreaskahler.com/2009/06/creating-icosphere-mesh-in-code.html.
- Lague, Sebastian. Coding Adventure: Hydraulic Erosion. YouTube, 28 Feb. 2019, https://www.youtube.com/watch?v=eaXk97ujbPQ.
- Lague, Sebastian. Procedural Planet Noise. Github, 23 Aug., 2018 https://github.com/SebLague/Procedural- Planets/blob/master/Procedural%20Planet%20Noise/Noise.cs
Page 45 of 46
- Loscocco, Mike. “Mario Galaxy Physics in Unity – Mike Loscocco.” Mikeloscocco, https://www.facebook.com/WordPresscom, 13 Oct. 2015, https://mikeloscocco.wordpress.com/2015/10/13/mario-galaxy-physics-in-unity/.
- Šťava, Ondrej. Interactive Terrain Modeling Using Hydraulic Erosion. CZECH TECHNICAL UNIVERSITY IN PRAGUE, 2008, pp. 30–39.
- Volynskov, Alexey. “Water Erosion on Heightmap Terrain.” Ranmantaru Games, Ranmantaru Games, 8 Nov. 2011, http://ranmantaru.com/blog/2011/10/08/water-erosion-on-heightmap- terrain/.
Aug 30, 2020
Added:
- Added results information
Nov 11, 2020
Added:
- Deliverables
- Milestones
Updated:
- Testing Plan
- Methodology
- System/Software Architecture Diagram
- Scope and Depth
- Removed contractions
Oct 28, 20 20
Added:
- Test Plan
- Methodology
Page 46 of 46
- System/Software Architecture Diagram
Updated:
Oct 16, 2020
Added:
- Scope and Depth
- Conclusion and Expertise
Updated:
- References/Works Cited
- Properly formatted everything