I've been working on a different project recently, but spent some time in the past week up import UHS: 1914 from Unreal Engine 4.24 to Unreal Engine 5. If you have followed the developments of UE5, you'll know that it uses a new lighting technology called Lumen. This new lighting provides high quality real-time lighting, shadows, and reflections. At the moment, it does not support transparency (so no windows), but the differences are beautiful. Below are screenshots comparing similar scenes with the UE4 version on top, and the UE5 version on the bottom.
Saturday, December 25, 2021
Monday, September 9, 2019
Lightbuild success!
It took all of Labor Day weekend, but subsequent testing has confirmed that the UHS: 1914 project no longer crashes when I build lighting! A technical narrative is at the bottom of this post.
The fix involved a more detailed separation of actors to different streamed levels. One for the exterior walls, one for first floor props, one for interior static meshes, one for houses north of the building, etc. In all, the building and surrounding landscape are separated into over 30 streaming levels. As mentioned last month, this results in curious views:
This reminded me of how the White House looked during the renovation in the 1950s:
To celebrate the successful light build, I decided to revisit the cement lamp poles from the front entrance. These fixtures were not actually present in 1914 when the building opened, but were installed some time in 1915, so I am justified to include them.
I say "revisit," because one of my first photogrametry attempts was to create these lamps. I incorrectly assumed I would be able to easily copy one of the sides to create the closed 4-sided figure:
Instead, my new technique of mapping a photo onto a low-poly model, in combination with height and normal maps from Materialize, seems to create adequate results:
Getting back to the crashes, the crashes occurred during texture encoding following an otherwise successful light build. These were full crash-to-desktop situations, and according to the crash logs, I experienced over 70 of them since I first encountered it in May. The crash error was always the same:
Assertion failed: LCI->GetResourceCluster()->UniformBuffer [File:D:\Build\++UE4\Sync\Engine\Source\Runtime\Renderer\Private\LightMapRendering.cpp] [Line: 49]
Opening "LightMapRendering.cpp" only shows on which line of code the error occured -- while the engine was trying to reference the UniformBuffer. My skill with C++ was not great enough to parse this directly, so I tried scaling down each layer by copy/pasting actors to new streaming levels until I could achieve a successful light build. As I mentioned earlier, after splitting the entire project into 30 levels, the light for the map will actually build without crashing (although it still gives a different light build error in the "messages" window following the build).
This fixed the problem for the time being, but the error still remains. Because of copying actors from various areas of the map, there are several streaming levels that are empty, but if even one of them are active during a lightbuild, the Editor will crash. My best guess is that the old, empty levels retain some data of their previous builds, and when the Editor tries to encode lightmap textures from this data, it ends up being too big for the buffer. Without more working knowledge of UE4 and C++, this is all conjecture.
The fix involved a more detailed separation of actors to different streamed levels. One for the exterior walls, one for first floor props, one for interior static meshes, one for houses north of the building, etc. In all, the building and surrounding landscape are separated into over 30 streaming levels. As mentioned last month, this results in curious views:
![]() |
The main building with interior walls and props hidden |
This reminded me of how the White House looked during the renovation in the 1950s:
![]() |
The Shell of the White House during the Renovation 05-17-1950 |
![]() |
Auditorium with seats toggled off; also, walls for the main building are not loaded, with only the wall shared by the gym remaining |
Cement lantern photo reference |
I say "revisit," because one of my first photogrametry attempts was to create these lamps. I incorrectly assumed I would be able to easily copy one of the sides to create the closed 4-sided figure:
![]() |
The only screenshot of the old, long since deleted lanterns from 10-22-2017. Buh-bye! |
![]() |
From left: solid, low-poly lantern model created from photo reference; same model, but displayed as a wireframe; the model wrapped with reference photo; height texture generated by Materialize |
![]() |
Finished lanterns, imported into UE4 with full textures. Subtle, but effective! |
Getting back to the crashes, the crashes occurred during texture encoding following an otherwise successful light build. These were full crash-to-desktop situations, and according to the crash logs, I experienced over 70 of them since I first encountered it in May. The crash error was always the same:
Assertion failed: LCI->GetResourceCluster()->UniformBuffer [File:D:\Build\++UE4\Sync\Engine\Source\Runtime\Renderer\Private\LightMapRendering.cpp] [Line: 49]
This fixed the problem for the time being, but the error still remains. Because of copying actors from various areas of the map, there are several streaming levels that are empty, but if even one of them are active during a lightbuild, the Editor will crash. My best guess is that the old, empty levels retain some data of their previous builds, and when the Editor tries to encode lightmap textures from this data, it ends up being too big for the buffer. Without more working knowledge of UE4 and C++, this is all conjecture.
Monday, August 19, 2019
Garrett house
Lately, I've had some lightbuild issues that crash the engine, and these types of errors are quite time consuming. So, while I have been troubleshooting this problem, I modeled the Garrett house, a farmhouse which once stood nearby the high school at 201 East Washington. The home was demolished in 2002 to make way for green space around the high school and middle school.
![]() |
Photo reference from the home's application to the Historic Register |
![]() |
The Garrett house recreated in UE4 |
Sunday, August 18, 2019
Grotesques and other details
Only a few more architectural details remain before I am ready to render v9.5 of the flythrough. The big items are the grotesques from the front facade (as seen below). I don't have enough source images of these carved limestone figures, so photogrametry is not possible at this time. Instead, I used the same technique I utilized on the main entrance foliage, and mapped a single photo over a manually modeled mesh. A height map created with Materialize adds a touch of tessellation. This method creates acceptable -- albeit temporary -- results.
![]() |
The grotesques, as shown in the original blueprints. |
![]() |
Photo reference of the north grotesque |
![]() |
Photo reference of the south grotesque |
![]() |
North grotesque in Blender. The photo on the right is mapped onto a lightly extruded model. |
![]() |
North grotesque in UE4 |
![]() |
South grotesque in UE4 |
![]() |
Compare to the deep relief from the photogrammetry results for the Student (on the center tower) |
In addition, I completed the brick box ornaments on the rear elevations...
...and finished the wood/brick wainscot going up to the visitor's box in the gym.
![]() |
These stairs were still unfinished in the previous flythrough video |
![]() |
The difficulty was that the angle of the wood wainscot is 41º (not 45º, which would be easier) |
Friday, August 16, 2019
Main entrance foliage
A small amount of stonework from the front facade of the building is still missing -- as in, I have yet to include it in the rendering. To expedite this, I am trying a new technique of 3D modeling. Some of the stone foliage is beyond my skills to model manually, so I am using Materialize from Bounding Box Software to generate texture files from photographs. I then create simple 2D outlines of items, then use the height maps created from Materialize to simulate depth (technically called "parallax displacement"). The results so far have been promising.
![]() |
Main entrance arch with stone foliage typical of English Gothic and Tudor styles. |
![]() |
The photo above, as imported into Materialize. |
![]() |
The same photo after processing with Materialize. It doesn't look as impressive as a screenshot, but believe me -- those leaves look like they are popping out of the stonework now. |
![]() |
Foliage added to the entrance arch in UE4. |
The software is open-source, and free to download. A YouTuber explains how to use it (https://youtu.be/vtnJToPxBNo), but it is mostly self-explanatory.
Wednesday, August 14, 2019
Summer 2019 progress
Between now and my previous post in March, 2019, I have indeed worked on the UHS:1914 project, but not entirely in a way that can readily be presented in the blog. A majority of the work has been to write original music for the v9 video, and although the music is completed, the demo recording is not ready to be shared. There have been numerous items to correct/fix/add to the project, but since the music is complete, the timings for the camera cannot be changed. This means anything I add in the meantime will be fixes or additions that can be seen in the v9 video. These are some of the items added this summer:
Side and rear gable ornaments for the tower, including editing the stonework to look correct from the rear (it can be briefly viewed from the art room skylight in the video). I created a new version of the brick texture (originally from Polypixel) to make arranging fancy brickwork faster:
Based on a photo from within a storage closet built in the former light well, I modeled the brick ornament on the exterior wall between the windows:
Shower hardware rods in the Girls' Shower completed:
Gym balcony rail added around the entire perimeter:
When the music demo is ready, I will post it, along with the updated video.
Side and rear gable ornaments for the tower, including editing the stonework to look correct from the rear (it can be briefly viewed from the art room skylight in the video). I created a new version of the brick texture (originally from Polypixel) to make arranging fancy brickwork faster:
![]() |
Side/Rear gable ornament traced in Blender using a newly created version of the brick texture |
![]() |
Brick ornament as seen imported into UE4 |
I finally found a solution to the square around the doorway arches. Previously, I used a square mesh that had one edge matching the arch, but this resulted in rendering errors. Now, the wall is seamless:
![]() |
Wall above doorway arch before |
![]() |
Wall above doorway arch after |
Cast iron balustrade remodeled to be more accurate:
![]() |
Balcony brick ornament in Blender, with reference photo |
![]() |
Balcony brick ornament imported into UE4 |
![]() |
Screenshot of Girls' Showers from v9 video |
![]() |
Shower hardware completed |
![]() |
Balcony rail |
A redo of the brick texture on the gym stairs no longer results in bizarre streaks:
![]() |
Brick around gym stairs before |
![]() |
Brick around gym stairs after |
Bookshelves are added to the Board Room (not completely accurate, but these did not require the creation of a new bookshelf model):
![]() |
Photo reference of the Board Room from the Rosemary (this is the Echo staff posing for their yearbook photo) |
![]() |
The Board Room in UE4 with added props |
Because of the automatic LOD (level-of-detail) creation, the proscenium always looked "spiky" from a distance. I corrected this by optimizing the original mesh, which turned out to include the unseen (but still rendered) backside of the arch. With over 1000 fewer vertices, there are no more spikes! Also seen in the following before/after screenshots -- the crest used to be "floating" from the proscenium, and now is attached.
![]() |
Before, spikes from the LOD 01 and 02 |
![]() |
After optimization, no spikes! |
A bug cropped up in the UE4 project files causing the editor to crash unexpectedly when copying actors. My intention was to update the gym portion of the project by adding exterior details from the 1914 side of the building (trees, houses, corn, etc), but this kept making the editor crash. A time consuming solution fixed this, but it involved splitting the building into multiple sections. This meant copying every actor (UE4's name for separate items) to new levels that are ultimately viewed all at once, but can create cool/unsettling views mid-way. For example, below is a screenshot of the building with the exterior walls peeled away:
![]() |
Front facade hidden |
...and here with the auditorium in various states of hidden-ness:
![]() |
Exterior auditorium walls hidden |
![]() |
Entire auditorium hidden |
Monday, March 18, 2019
Gym entrance details
I have been holding out on completing the gym entrance because I hoped I would find a better photo of the stonework. Sadly, this photo is missing. I instead used a very low resolution photo to model the stone finials, and repeated the foliage from the Race street entrance. In addition, I cleaned up the indoors part of the entrance by modeling the wrought iron bars on the stairs and brick arch.
![]() |
Completed gym entrance |
![]() |
Stonework copied from the Race street entrance |
![]() |
Stone finials modeled after those on the Champaign County Courthouse (also a Royer building) |
![]() |
Ironwork, marble, and brick arch for the interior |
Subscribe to:
Posts (Atom)