2023-01-22 | 2023-01-24 |
2023-01-25
2023-01-24
Regression Testing and Painting the Forth Rail Bridge(1)
Every time we make a change to terrain generation we test these changes on previous areas to make sure we haven't broken anything. This is regression testing. Usually we are looking for
improvements to the terrain. Over time we have acquired a set of diverse sites and we are always on the look-out for new ones that test specific aspects of the process. It's a rolling program (a bit like painting the Forth rail bridge) so once we improve one area we move onto the next.
Area |
Outstanding Test Feature |
Algoda (Spain) |
Very rural area with high tree density - extreme edge case for per-mesh performance. |
Barlow |
It's where our office is so we really know how it should look |
Colorado City |
Mix of dense-urban and wilderness |
Everest |
Extreme elevation and empty spaces with no features |
Fort Lauderdale |
Residential area with lots of snaking lakes. Two nearby sports parks. |
Liverpool |
Urban, coastal. |
London |
Dense mapping |
Manchester |
We have a lot of detailed buildings for this area |
Penrhyn Quarry |
Considerably hilly region. Lake at the bottom of a quarry. |
Tuvalu |
There is a lot of coast |
Everest
Everest is the next on the list.
Preparation
It's good to see what we have around S000703:
Everest - S000703
These are quite sparse AS30s so I boosted the S02 and S03 values:
"S02": 20.0,
"S03": 40.0,
'Site Clean' via Oasis Web:
Clean Site S000703
I want to load the site in the UE4 Editor so I copy it locally:
UE4_Z Copy S000703
S000703 in the UE4 Editor
Full screen
Since the last Everest update we have implemented 'flat lakes'. This is a high view of some lakes around Everest base camp. Oasis 3D on the left and Oasis Web on the right. It is apparent that there are some lakes missing from Oasis 3D!
Oasis 3D Base Camp Lakes
Oasis Web Base Camp Lakes
I did a 'level by cube' exercise. It's not very precise but it is a good start. Interestingly all the visible lakes are on one AS30 so it is possible that the others just need to be re-created for them to appear. I recorded the way ID for all
all the lakes and set arbitrary height values for the missing ones. We should see something.
The way IDs are:
The commands to add the levels are:
M3U_AS30AddFields --as30refs 28_00_15_N_086_50_15_E --doit --jsonstrings '{"OSMHeights": [{"type": "way","id": 262723402,"Height": 5408.81,"areashrink": -0.15}]}'
M3U_AS30AddFields --as30refs 28_00_15_N_086_50_45_E --doit --jsonstrings '{"OSMHeights": [{"type": "way","id": 262723400,"Height": 5363.20,"areashrink": -0.15},{"type": "way","id": 262723399,"Height": 5385.65,"areashrink": -0.15},{"type": "way","id": 262723397,"Height": 5388.50,"areashrink": -0.15}]}'
M3U_AS30AddFields --as30refs 28_00_15_N_086_51_15_E --doit --jsonstrings '{"OSMHeights": [{"type": "way","id": 262723400,"Height": 5400.00,"areashrink": -0.15},{"type": "way","id": 966708679,"Height": 5312.66,"areashrink": -0.15},{"type": "way","id": 966708680,"Height": 5400.00,"areashrink": -0.15}]}'
M3U_AS30AddFields --as30refs 27_59_45_N_086_50_15_E --doit --jsonstrings '{"OSMHeights": [{"type": "way","id": 262723401,"Height": 5400.00,"areashrink": -0.15},{"type": "way","id": 262723398,"Height": 5400.00,"areashrink": -0.15}]}'
Re-creating the AS30s
Done
I don't know why the old AS30s didn't have the lakes - but the new ones do. Notice the 'column' effect where the height has been set to 5400m:
All lakes present
It's quite painful, but I have to delete the height keys completely and then add them back in. We'll work out a better way to do this later:
M3U_AS30DeleteKeys --doit --keys OSMHeights --as30refs 28_00_15_N_086_50_15_E 28_00_15_N_086_50_45_E 28_00_15_N_086_51_15_E 27_59_45_N_086_50_15_E
M3U_AS30AddFields --as30refs 28_00_15_N_086_50_15_E --doit --jsonstrings '{"OSMHeights": [{"type": "way","id": 262723402,"Height": 5409.24,"areashrink": -0.15}]}'
M3U_AS30AddFields --as30refs 28_00_15_N_086_50_45_E --doit --jsonstrings '{"OSMHeights": [{"type": "way","id": 262723400,"Height": 5366.61,"areashrink": -0.15},{"type": "way","id": 262723399,"Height": 5381.55,"areashrink": -0.15},{"type": "way","id": 262723397,"Height": 5389.00,"areashrink": -0.15}]}'
M3U_AS30AddFields --as30refs 28_00_15_N_086_51_15_E --doit --jsonstrings '{"OSMHeights": [{"type": "way","id": 262723400,"Height": 5366.61,"areashrink": -0.15},{"type": "way","id": 966708679,"Height": 5316.55,"areashrink": -0.15},{"type": "way","id": 966708680,"Height": 5320.85,"areashrink": -0.15}]}'
M3U_AS30AddFields --as30refs 27_59_45_N_086_50_15_E --doit --jsonstrings '{"OSMHeights": [{"type": "way","id": 262723401,"Height": 5309.35,"areashrink": -0.15},{"type": "way","id": 262723398,"Height": 5308.10,"areashrink": -0.15}]}'
Looking good!
262723400
Compare the old (left) and new (right) Base Camp Lakes:
Old
New
(1) According to the BBC on Friday 9th December 2011 the painting of the Forth Bridge, a job that is famously never finished, came to an end. Despite this, I shall continue to use the painting of the bridge as a convenient metaphor for a never ending task.