Development

Stream of updates

Current Status

Art Status

To-Do:

  • Improve light-baking

    • transfer from a Bakery scene in a separate project

Tech Status

Todo:

  • Implement basic Normcore multiplayer

  • improve functionality and visual appeal of handheld UI

  • install on-device performance logging tools


Logbook UI system is now minimally functional:

  • World markers trigger their associated logbook UI content payload

  • Upon initial discovery by user, World markers correctly register themselves into a list of discovered markers

  • World markers correctly manage their visual state (undiscovered, highlighted undiscovered, discovered unhighlighted, discovered highlighted, and actively selected)

  • Logbook UI forward and back buttons cycle through discovered content, and trigger the associated world marker's highlighted state (disabling highlighted state of other markers)

  • Logbook UI "settings" button toggles between a settings screen and a "welcome" screen

    • to return to "discovered" content, user can simply select the world marker again or press the forward/back buttons on UI

  • logbook UI can playback audio and video content

    • need improved UI to indicate AV content length and current play position

  • Logbook UI blocks raycasts, preventing accidental triggering of world markers behind the UI

  • Logbook toggle button (primary button) now disables/enables or switches UI hands as expected (no double button presses necessary)


NEEDS/To do:

  • world marker content

    • created a spreadsheet to track content and their payload and production status

  • implement captions system for audio narration

  • UI visual overhaul (what should it look like? paper?)

  • create UI system to track AV playback progress

  • create indicator showing how many world markers remain to be discovered

  • create system to allow 2 different world markers to represent the same item? (e.g. piranesi has two annotations using the same letter, to refer to each of the 2 portico niches)

  • setup on-device performance profiling to quantitatively monitor performance going forward

A slideshow of the latest progress on the Pantheon.

(this slideshow crops most images, please feel free to right click and "view image)

Now featuring:

Portico, Intermediary Block, Exterior Rotunda and Dome, and the South Block in the rear. All model sections have no visible seams at their connections and have a clean first pass of UVs. Each section needs a detail pass but all major forms are there.

Additionally, as visible in the image, the orthographic drawings by Francesco Piranesi have been re-aligned with the production model. In some quick experiments, these drawings can provide some really interesting effects by sliding them perpendicular to their plane of view (ie: slide the front view forward and backward through the model, or the side view left and right through the model).

Unity code layout, notes and plans

  • Terms/Unity Classes

    • Logbook - the wrist or hand accessible UI that displays what markers you have 'discovered' and accesses the audio/text/image/photographic content associated with the marker

      • manage logbook UI and inventory seperately?

    • Search Ray - a hand mounted ray that reveals world Markers temporarily when hovering, and permanently when trigger is also pressed. Sort of like a magic flashlight that reveals annotation markers (piranesi or otherwise)

    • Gaze Ray - invisible, always on head mounted ray that triggers a "glimmer" on undiscovered (least important XRinteractor)

    • WorldMarker - a marker that exists in the world. highlighted by user gaze and discovered by "search ray" - when triggered it will be permanenlty revealed, added to logbook, and its markerPayload will be accessible through the logbook UI

    • MarkerPayload - a ScriptableObject that contains references to the "content" of the world marker that will be displayed in the users UI

    • MenuManager - (access via secondary button?) for managing settings menu

Controls

  • Thumbstick forward: activate teleport ray

    • contextual: trigger to confirm teleport

  • Thumbstick left / right: snap turn 45 degrees in direction pressed

  • Thumbstick down: activate search ray

    • contextual: trigger to permanently discover world marker

      • also: loads marker payload on logbook UI, adds marker to discovered inventory

  • Grip Button: grab items

  • Primary button: activate "diorama mode" and scales up XR rig 20x

  • Secondary Button: access settings menu? or should this be accessible in the logbook UI?

Done (all rough):

  • teleport (forward thumbstick, trigger to confirm - both hands)

  • snap turn (L/R on thumbstick, currently only right hand)

    • todo: add to left hand? or leave left hand as "menu hand" and use thumbsticks for UI navigation? eh

  • "search" ray (down on thumbstick to activate "search ray" / to find world markers)

    • add trigger functionality to permanently reveal markers & signal to inventory of discovered markers

    • replace line visuals / add audio for something to more clearly indicate search ray is active and when search ray is hovering

  • gaze ray (to temporarily highlight a glimmer on undiscovered world markers)

  • basic world markers (only revealed when looking at or with "search" ray)

    • need states:

      • undiscovered (highlighted and not highlighted)

        • (glimmer to draw interest when gaze ray passes over)

      • discovered (highlighted and not highlighted)

    • should there be a preview "in world" of what the markers content is?

      • perhaps a title/number above the marker (to refer to the content in the users logbook UI)

      • use the same visual marker that piranesi used for his own annotations?

    • triggering world marker should set discovered state, this will change markers permanent appearance in the world and also signal to the users logbook to add it to list of discoveries and load its affiliated AV payload

    • triggering marker after discovery will directly take users logbook to its associated payload

  • grabbable objects (no use case in our current GDD, but good to have working for flexibility)

  • simple hand presence system

    • need to adjust animations for trigger finger

    • can be toggled to show user controller instead of hand model

  • Diorama scaler - with click of a button, shift user scale to 20x so the world appears as a 1:20 diorama

    • to do: add "blink" system to fade to black during transition to avoid user discomfort

  • barebones hand based logbook UI (left arm only currently)

    • can play video on arm in VR

    • to do:

      • what should it look like? simple clean UI? skeumorphic marble tablet?

      • keep track of discovered markers

      • predetermined layouts for different payload types

        • video playing UI

        • text and image UI

          • layout variations on this

        • Image only UI

        • text only UI (seems likely everything would likely include at least one image)

        • do all text UI's need audio narration (accessibility)


Needed:

  • Input Management

    • XR input system is good start but mostly provides raw button presses

    • need to build simple system to track button state (on pressed, on buttondown, on release, etc)

    • found a good template to build from on youtube

  • Audio & Audio Management

    • sounds for

      • highlighting on/off - undiscovered marker

      • highlight on/off - discovered marker

      • discovering a marker

      • UI button over on, over off, click on, click release

      • ambiance of space

      • narration of original piranesi annotations

        • implement Close Caption system from unity sample project

  • Menu Manager

  • Logbook UI manager

  • Logbook "inventory"

  • Scene transition system

    • Create a static opening scene based on a piranesi sketch

    • this can provide some introductory world building and leaves room to select other locations that may exist in future

  • A more accurate teleport area mesh


Future Menu Options

  • Which hand should UI be mounted to

  • reveal all markers

  • captions on/off

Other:

  • particle systems to add life to each aedicula torch

  • subtle dust particles to provide some life to the world

  • animatable volumetric light beam mesh from the dome oculus

  • timeline based "tour" sequences that could provide a more directed / docented tour of the space guided by animated pointlight, with narrated (and captioned) voiceover, and world space UI pop-ups

    • possible seated experience?

  • Latest Progress

    • Upper moulding detail fixes (most significant, lots of manual vertex fixing). This includes the areas where it extends over the altar and where it extends into the portal area - those 90 degree turns where surprisingly difficult (given limitations in blender)

    • Triangle Top Aedicula

    • Oval bust-sculpture recesses completed

      • (next: trying to figure out which aediculae have recesses for sculptures and which are paintings based on piranesi sketches)

    • purchased a corinthian column topper, inserted (unedited) for now and will replace with a version after I retopologize to a much lower poly-count

      • will also need to modify the retopologized version to create a "squared" version for the rectangular pilasters (they have the same corinthian topper style, but without the round base)

      • the columns and pilasters also desperately need to be retopologized as they are currently some of the heaviest geometry currently, but that should be relatively easy, the corinthian topper will be a but more work

Lots of model progress in past two days:

  • new window frames and panels in the "attic" area

  • new aediculas conforming to giovanni's illustration (currently round top only, will create triangle top iteration next)

  • Interior pilasters and columns were aligned more closely to their placement in the Bern Lidar scans

  • The lower moulding with the hanging details has been shaped to conform into the main altar recess and portal entry way (previously it was just a circle)

    • this is still incomplete, will require some significant manual overhaul because this was built by arraying the repeating moulding pattern along a curve, but this has caused some serious issues around the tight corners at the altar and by the entry portal

  • Additionally, the lower moulding was reduced in polycount from 280k triangles to 36k with no visual difference (from the perspective of a VR user on the ground)

To do:

  • purchase a corinthian column topper to modify for columns and pilasters

  • create triangle top aedicula

  • create boolean recesses for particular aediculae and the oval shaped bust recesses to the side of each aedicula

  • Figure out the altar based on giovanni illustrations, figure out the "fence" around the altar according to piranesi

  • bring in the torches from oldModel

New rotunda hull, interior dome, moulding, columns, pilasters assembled together for first time in Blender.

It's starting to shape up!

Columns, pilasters, and moulding will need to be baked down to lower poly for game asset. Lower Moulding is currently just on a circular curve, needs to be adjusted to jut out to altar pillars and form around the entry portal.

Rotunda hull and dome are quite efficient, but I expect them to need some manual adjustment for fixing possible light leaks in baking.

To come: attic window frames, decorative corinthian column toppers (likely will buy a model to conform to this use), aedicula (round top, triangle top), altar area,

Interior hull and new dome from scratch (both in Houdini) seen below. Will begin transferring into a new Blender scene and assembling all of the pieces (middle moulding, upper moulding, window frames, column bases, and eventually refreshed aedicula)

The grey dots are the Bern Lidar scans for real-world reference.

The dome isn't perfect (particularly the recesses) but it is far more accurate than the oldModel dome and reasonably close to the Lidar scans and Piranesi drawings. I realized that there is some interesting trickery going on as the higher level recesses are inset proportionally less (and therefor the gap between rows shrinks as they go up) in order to keep the higher recesses from becoming more rectangular (Francesco's top orthographic drawing including the dome recesses makes this more readily apparent). It also enhances the effect that the dome is receding into the heavens.

*forgot to mention that another interesting thing about the Panini image of the Pantheon is that his appears to be fully pre-"restoration" while Piranesi's has the more modern upper-mid "attic" area but retains the older aedicula with the extended platforms. Unfortunately, Panini's image doesn't show the altar so I still haven't seen anything else that depicts the altar with platform and bannisters and Piranesi illustrates (curious).

More quick notes:

When you search for art of the Pantheon, the work of Giovanni Panini is often at the top of the results. Panini predates Piranesi by a few years and Piranesi's work very clearly and directly echoes Panini's down to the exaggerated scale and distorted perspective (a distorted perspective that has since taken on Panini's name, most useful for panoramas and large architecture, and recently begun appearing as an alternative form of perspective projection in video game engines: see Panini Projection)

Panini

17 June 1691 – 21 October 1765

Piranesi

4 October 1720 – 9 November 1778

Quick update: Interior "hull" of rotunda is complete (that is: major shapes including all niches, window-cutouts on the upper-middle level, and the entry way)

I am currently working to finish a completely re-built interior dome to more closely reflect the LIDAR and piranesi drawings, and all the shapes are there but it's proving to be a little difficult to nail down as the "square" recesses are insisting on becoming more rectangular the further up they are on the dome.

I hope to have the dome interior done tonight or by tomorrow afternoon, at which point I think I can complete most or all of the remainder inside of Blender. I expect the new dome and hull will need some cleanup on normals, shading, and unnecessary vertices from the Boolean work in Houdini, but that shouldn't take too long. From there it will be mostly a matter of "dressing up" the interior with instances of the new columns (which still need a solution for their ornate toppers, might be worth purchasing/finding a model as they appear to be a variation on a standard Corinthian column topper)

Re: the aedicula: Papa Piranesi's differ from everything I see, at least in their bases. I don't think I have enough info to tell which of his differ in terms of whether they all align with the current aedicula (which have variations that have centers that recess into the wall for statues and those that are simply flat-backed for paintings)

Thankfully, the aedicula are relatively simple either way so I may just build both real/piranesi forms.

Additionally, the upper-middle area will need window frames and triangular toppers, but those should be quick (build one and instance it across all the windows). I expect to represent the large squares between the windows in texture only, not in polygons.

The lower-middle ring is completely modeled to Francesco's orthographic profile and swept along a curve along with the ornate details pieces that hang below them, repeating every foot or so. This curve and profile will be fit to the new hull once it is brought over into Blender. I expect there to be some manual tweaking of this for the areas near the portal and the main altar area where this moulding juts out in a unique way, but I have my fingers crossed that it will not cause too many problems.

By next week the new model should be fully formed enough to start moving into Unity, even if just to see it in the VR space.


Things to consider:

  • What will go in each Aedicula and each niche? We can take some ideas from Papa Piranesi's etchings, but I'm not quite sure what populates these things. The Italians kings buried there are from after Piranesi's time I believe and I am not sure what art work or statues are there in reality or on Piranesi's forms.

  • It appears that the upper-middle/"attic" area was "restored" at some point in the 1700's, but thankfully Piranesi's form largely represents it's current status aside from a chunk to the right of the altar that, if I'm interpreting Wikipedia correctly, was reverted to a form more representative of how it was before the restoration. This would explain the huge difference in Francesco's drawings of the interior vs. Giovanni's/the current state. (To be clear Giovanni's renderings do not show the "patch" that was Re-Restored to show what it was like before the restoration. Ahh, the joys of a building nearly two thousand years old)


After feeling comfortable with Francesco's vividly accurate orthographic details I returned to the high resolution scans of the sketches by papa Piranesi. I see the aediculae are very different and the altar has an apparently marble elevated stage? with a bannister? did this ever exist? did the hanging torches ever exist? why did he draw them? it seems unlikely these aedicula ever existed in this form as they are a fundamentally different from what exists. if they once existed (in Piranesi's time or not), why were they removed? there is no evidence in current (partially restored) pantheon that they did (from what limited info I have gathered). I also noticed in one of Francesco's details of the uper-middle moulding area (with the windows and recesses) he uses a pattern of elongated vertical rectangles that doesn't appear to exist.

tl;dr: possibly figuring out a way to model both versions of the aedicuale? the differences appear to be mostly in the base they use. though possibly some are recessed into the wall and others are merely paintings.

It's an unusual experience to model a building in detail that you've never seen, but it feels vaguely method actor-y by looking primarily at the Piranesi documents as reference (even if that is far more confusing than looking at the Bern scans)

Also, realized (but have not yet confirmed) that the measurement's in these drawings are possibly in the obsolete "palms" unit (about 3 inches, or the width of a palm above the thumb)

Interesting result of a broken experiment to use Piranesi etchings as a texture

Middle-Moulding & Decorative Detail

Built from Piranesi etchings.


Spent several hours today pulling high res images from SC library website (via zoom in and save as for each slice) and then photomerging them in photoshop. The automatic merge added some softness but it is still leagues ahead of the reference I was using. This upper moulding was a breeze with the higher quality Piranesi detail references. Will cheat any details below this as a normal map

This will bake down into low poly asset with some care to the UV's.

Will likely do Portal door next (should be relatively quick, leave a large impression), then work towards locking in the upper middle "windows" area before rebuilding the aediculas in earnest

Base and column of portico monolithic pillars and major pilasters. High resolution. Full resolution models that can be easily baked down to simpler models.

built with Piranesi drawings as primary reference.

The decorative tops on these (and all the columns) are going to be tricky, so I will insert a placeholder and save them for detail work later. Thankfully, the Piranesi's have some great orthographic views of the ornate tops and I think I'll be able to make a reasonable approximation thanks to that.

Much like profile of the moulding on the base of the pilaster and pillar here use nearly the same curve (one swept along a square, the other along a circle), the ornate toppers (on the round pillar or flat faced pilasters) use the same repeating ornate sculpted detail wrapped to the surface, with varying degrees of "curl"

tl;dr: model one ornate flower/leaf piece based off of piranesi's orthographic drawing, repeat and bend it to create the ornate toppers

Finding I need more high quality reference imagery (Lidar is great for big shapes, bad for details), so I am downloading all of the Bern photographic reference as well. Between this and the Piranesi detail sketches I should be able to get things moving in earnest soon on the detail modeling front. Finding the oldModel aedicala need to be completely rebuilt, but that's not so bad as they are not terribly complex shapes and (again) thankfully largely built of repeating elements.


For quick visual reference:
The Pantheon interior has a few 360 shots on google maps. Great for checking some architectural details in context of the rest of the space

New short term task: create a simplified 3d exterior of the pantheon as a simple model (no interior detail), make 3d printable. Could have someone at USC print them out as cutesy little project tokens/paperweights?

Texture Trim Sheets:

Art tool/technique that should be seriously considered.

Have been researching the value and methodology of atlased texture trim sheets for large environments. Really think this is going to be a hugely valuable technique inside the pantheon for cleverly adding a lot of textural detail density with low texture budget, especially given the repeating nature of a lot of the details in there. Again, the value of a building with a lot of repeating details. Will be working through a flipped normals class for blender (here) and some training on using the technique in houdini.

Another benefit: with enough foresight in the development process, you can swap out trim sheets to create different

The "downside" is that it requires very particular UV layouts, but we're going to need that anyways for most of this, which is why clean quad geometry is going to be important to achieve where ever possible

Below are two short videos that show their value in large architecturally detailed environments:

Timelapse of blender session.

Will improve quality in future. Experimenting with on-screen annotation tools (openBoard) for documenting as I work. Recorded this with ScreenToGif but realized that is ideal for short demonstrations, should have used an NVENC capture system (OBS likely) instead and gone direct to h264. ScreenToGif is excellent for short and small clips though

Covers:

  • instancing repeated meshes,

  • naming conventions,

  • organize into collections by region,

  • simple UV improvements,

  • modeling tweaks on Aedicula and other items

Naming conventions established on Pantheon Page.
Initial model status spreadsheet created and made viewable.

Demo of houdini scene with reference scans and images aligned.

new shell of major rotunda hull in progress. "middle area" window cutouts on interior also aligned to lidar/piranesi (and they are all distributed at a mathematically even rotation between each instance (about 22.5 degress but i can check the numbers) suggesting a nice match and reiterating a lot of the interesting mathematical relationships in the space). The cutout arches are also built procedurally with real world dimensions. This demonstration doesn't show that

Houdini project created for major walls of internal rotunda shell (complex boolean cutouts, remake completely in houdini, reimport to blender/unity)

Demonstration of reference scene assembled in blender. To scale (actually I need to double check accuracy in blender, but it is close to accurate).

Aligns the following (sorted same in project):

  • Piranesi Orthographic Renderings

  • Orthographic Renderings from other Sources

  • 2x photogrammetry reference models from Sketchfab (license permissive of reference use)

  • Bern Lidar Points

Bern Lidar points assembled in blender,
next: developing model nomenclature based on Bern plans

Moving forward modeling plan

Start from scratch in Houdini
(non-Pantheon items still likely to be quickly built in blender)

Keep model semi procedural

Why? Architectural Patterns and clean pipeline:

  • repeating patters and mathematical elements

  • simple shapes booleaned out of larger shapes (see: niches, arched niches, recessed rectangles in the balcony). Hou has cleanest boolean operators

  • fine details repeated along edges (see block pattern on lower balcony moulding, fine details in piranesis moulding close-ups) can be easily done and easily updated

  • semi-procedural modeling will keep bigger decisions flexible at all times without requiring tedious manual adjustments

  • houdini has strong suite of game baking tools (build high poly, bake to either a procedural or generated low-poly)

  • should we decided to represent "ruins" of this or other building houdini would allow for creation of destroyed model or grown vines

  • if we settle on a "look" that can be baked in houdini as an automated art pipeline for major assets

Licensing: As I am a contractor, my Indie License will work for me on this project. The Houdini project will remain locked to me as a result, but thats laregly irrelevant as exported items are not bound by the license. So a working model and game-res model will be baked out regularly to FBX and shared. Same format as oldmodel before it, no drawback there.


Updated:

  • Blender Project: Reference Models and Orthographic Planes Alignment

    • Orthographic Images all aligned and scaled to reference sphere of 43.4m diameter in 3d space.

      • Seperated plates by authorship: Piranesis vs Others

    • image planes locked to the appropriate axis of motion. scale/rot all locked

    • Purchased 2 photogrammetry generated models of Pantheon Interior

      • Standard Sketchfab license. Cannot ship in game, can use for reference.

      • Both models also aligned to each other and the aligned image planes


Updated:

  • Pantheon Modeling - reviewing and cleaning oldModel

    • Manually repair and cleaned topology of roof/UVs of oldModel. now solid clean topology = no light leaks

    • quick concrete material for roof

    • Manual repair of most apparent flipped normals through full model

    • Manual repair (a pass) of major internal walls.

    • total reconstruction and UV of upper moulding rim

    • fixed shading normals on arched niches and other smooth areas

    • some lazy UV updates on other items

  • Pantheon Model review status

    • Start from scratch

      • too many polys without any clean topology

      • normals flipped in all sortsa which ways

      • n-gons in places and ways that boggle the mind and are difficult to identify and repair (eg. needlessly connected empty edges, connected points with a correct point between them that is not connected, overlapping faces)

      • no reliable uv-mapping

      • deviations from plans and reference models that I cant resolve

      • wild fluctuations in poly density per object

      • some objects are suspiciously clean and high poly... are these CC-0? where did they come from? are they real items in the pantheon or generic placeholders?

    • after spending hours fixing the roof and poking through the rest of the model to find things to quickly clean up to make the current working model a little more Liveable for the time being, its clear to me that it will be better in every way to start from scratch, but the time spent exploring this model really illuminates the difficulty in making a space like this. It also made clear many of the patterns and shapes that exist in the space and why it is so architecturally interesting.

    • Proceduralism: Patterns and repetition of details large and small. Nearly all of the architectural features are repeated several if not many times. Some of Piranesis own illustrations focus on these details of repetition in macro-close up.

    • Orthographic Reference

      • after aligning all of the available ortho reference i could find (some of the best from the Piranesis), it is clear that I have enough information to recreate the pantheon with a reasonably close to accurate (all of the real-world measurements I find vary, and after painstakingly aligning 20 or so orthographic planes from different sources it is clear that they all vary in some ways, even within the same series of drawing by one author (though, no doubt, my alignment precision could improve, but its pretty close given the limited resolution of some of the images)

    • this model has a lot of the shapes right in some great ways, but once aligning it to some reference models and imagery its clear a lot of (very smart) shortcuts were taken but overall the model is not going to be a great primary reference

  • Unity project

    • import new packages,

    • update render settings for Oculus

    • create quality settings for future use (to ease the option to create a higher fidelity VR or Desktop options in future)

    • import relevant XR toolkit sample scenes and editor scripts

    • run baked lighting tests with old model (light leaks! flipped normals! NGon shading galore!)