Sunday, October 8, 2023

Urbana Pops performance and reunion presentation

 In summer 2022, Urbana Pops Orchestra premiered the short film Urbana High School: 1914 with my original music Tudor Fantasia. 

Here is a link to that performance: 


Yesterday, I also was honored to present my pictorial history slide show to my 20th high school reunion, which also included a version of the UHS: 1914 film and a tour of the building.



Saturday, December 25, 2021

UE5 upgrade

 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. 





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:


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
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. 


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!
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:


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]

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. 

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. 
Rough outlines of the leaves are traced in Blender, and UV mapped to match the original photo.
The extra vertices in the middle of the leaf are added because it makes the tessellation work better in UE4
(more opportunities for displacement, maybe?). 
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:

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:




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:


Balcony brick ornament in Blender, with reference photo

Balcony brick ornament imported into UE4
 Shower hardware rods in the Girls' Shower completed:

Screenshot of Girls' Showers from v9 video
Shower hardware completed
Gym balcony rail added around the entire perimeter:

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


When the music demo is ready, I will post it, along with the updated video.