2026

25 Saint Johns Place has been my Brooklyn home for the last twelve years.

thumb_01

Six years ago, during bouts of creative stagnation and Covid isolation, I began modeling my apartment as a way to stay creative. I had no idea where I was headed. If nothing else, it was a good excuse to explore some workflows in Houdini that I was not yet comfortable with, in particular modelling and rigid body dynamics.

I started in the living room and measured and modelled all the major furniture, electronics, and larger clutter items one by one. I paid special attention to making everything to scale, and including as much realism as felt reasonable.

Note: the framed art is representative of the art that is currently hanging in my apartment. There are a lot of Jeremy Geddes pieces (6 at last count) and some Dan Hillier prints. I feature them because they are part of the personality of the apartment and it would feel odd to replace them with placeholder art. All copyrights belong to the respective artists.

The following images and videos were created in Houdini and rendered with Redshift unless indicated (any photos will be marked as such). Since this project spanned several years, earlier images in the series will feel more incomplete, with placeholder geo and quickly made materials.

When Tutorials Collide

In many ways, this project started a decade ago. I was learning how to use Houdini so I was deep in the world of YouTube tutorials. There were two tutorials I did back to back, one was just understanding materials and 3D models in the form of an apartment interior, and the other was a mo-cap animation from Mixamo. 

I had this idea that I really wanted both of these things to live in the same project so I combined them and added rigid body dynamics - the breakdancer with no sense of personal space was born.

This project has been in the back of my mind, at least subconsciously, and I realized I just wanted this setup to use my actual apartment instead of this generic one that came with the tutorial.

Where to begin?

Much of my early efforts involved reproducing the walls, floor, and ceiling. It isn't an overly complicated apartment, but it does have nice details like an exposed brick wall and pressed tin ceilings.

Initially I had grand plans to make an HDA that would take in any random floorplan and would create all the necessary details like moulding, doors, windows, and ceiling patterns. After a few weeks of this, I came to my senses. I wasn't trying to make any random generative apartment, I specifically wanted to recreate my apartment.

I mapped out the floorplan as accurately as I could, and from there I extruded out the walls, generated the ceiling, and designed a moulding HDA that I could use to easily add baseboard, crown, edge, panel, and case mouldings where needed.

floorplan

Early on, I knew I didn't want to bother with the back half of the apartment which included the kitchen, bathroom, and two bedrooms. I decided to focus my efforts on the living room, "sitting" room (which was maybe designed to be a dining room but we just have shelves and a futon sofa), my office, and the main hallway. This would certainly be enough to keep me busy.

The surfaces are pretty straightforward: hardwood floor everywhere except the tile hallway, white painted walls with the exception of one exposed brick wall and one wall we wallpapered. The ceiling had been painted the same color as the wall but had a nice pressed tin design that would be fun to replicate. I used Quixel Megascans for the hardwood floor and brick wall. For the white walls, I started with a plain white material and added some displacement in the form of grunge maps to make it feel less crisp. This building is from the early 1900s and the painted surfaces contain a palimpsest of many previous sloppy coats. (I first heard the word "palimpsest" in an art-history class. I asked the curmudgeonly teacher what the word meant and they responded I should look it up in the dictionary. I asked "how is it spelled", to which they responded "D-I-C-T-I-O-N-A-R-Y". Still stings.)

Here are a couple photos of my apartment found on Zillow. Had I known I would be doing this project, I certainly would have taken a bunch of photos of the apartment in its initial emptied state. 

apt_photo_02
apt_photo_01

Here are renders of the empty apartment from different vantage points. I used a placeholder screenshot from Google Street View for the environment outside the windows (I come back to this later). It was at this stage I made my first concession. I grabbed a model of a radiator from Turbosquid because I wasn't feeling up to modelling that form from scratch. Ultimately I would like to model it myself or at least use a photogrammetry workflow for the more complicated objects.

living_room_rework.v03
living_room_rework.v04
living_room_rework.v05
living_room_rework.v07

Every object, one at a time.

Now comes the tedium. Starting with the coffee table, a thankfully simple Parsons design, I began to model everything to scale in Houdini. Initially, I chose the easy/boring/rectilinear objects. The entertainment console, the side tables, the picture frames, the bookshelves. It was slow going, but again it was mid-covid... it's not like I had an intense desire to leave my apartment.

I would wander around the living room contemplating all the things, and when I found something I knew I could model, I would measure it and take reference photos and jot down notes. Then back to the computer to reproduce it in 3D. At first, I was making HDAs with tuneable sliders but ultimately I settled on just making the "thing" directly instead of making a tool capable of making different versions of the "thing". This really simplified the process.

image-75

New day, new shortcut.

When it was time to work on something more complicated, I decided for my sanity that I would check online to see if that exact thing had already been modelled. I wasn't a good modeller and I didn't aspire to become a great one. When it was time to make the side chair, I searched for the make and model and saw that many furniture companies release 3D models of their pieces. That helped greatly. 

Unfortunately I couldn't find my exact model of sofa so I ended up spending many weeks on that particular piece. Many failed attempts. I just couldn't make it feel lived in and I didn't want to use something like ZBrush to make it feel more sculpted which probably would've been the right move. Ultimately I settled on a hybrid approach: I found a sofa that was similar, and then just modified it so it matched my actual sofa.

image-8-1

I used Unreal Engine here and there to do realtime walkthrough pre-vis, which explains the difference in the render fidelity of the previous two images.

This is the extent of how much I have created for my apartment simulation. There are a few things missing from this wireframe lazy-susan, but it is pretty indicative of where it was when I did all the videos that follow. 

Now what? The sim had become reasonable enough to start doing things with the setup. It was my own personal experimentation sandbox. It has so much potential! I could take any of my old Houdini experiments, put them in this setting, and add a ton of visual fidelity with little-to-no extra effort. So that is exactly what I did.

But first I had to embrace my inner Spike Jonze and experiment with warping and stretching the apartment in disorienting ways.

Infinite Frames

A couple years ago, I created a project called "Infinite Frames" which featured a wall of subdivided rectangles that I turned into picture frames. It was interesting, but it was missing that extra bit of detail that would make it feel like a finished piece. I used Midjourney to create a few hundred portraits that looked like they were from the late 1800s to early 1900s and used them as the artwork for my frames setup. I then pulled that whole setup into my apartment sim, hung it in the sitting room, and rendered out a seamless loop. You can see my living room in the reflections which immediately made the piece feel more considered and complete.

One fun bonus I hadn't initially considered is that since everything was modeled to scale, it was easy for me to wander through my apartment filming with my mobile device and use software like SynthEyes to extract the camera track. Once I imported it into Houdini and oriented it correctly, it just worked.

Poltergeists

It was time to move onto exploring rigid body dynamics in my new setup. This was something that I knew I wanted from the beginning so I designed all the objects in my project to have a corresponding low-res collision shape and constraints. It certainly wasn't easy and there were many abandoned false starts, but eventually I ended up with something that was relatively easy to control.

A few years prior, I worked on a procedural bookshelf HDA and I was able to bring that setup into my apartment sim. Images from that project are shown below.

Full transparency: I had hoped to model each book and photograph the front/back covers and spine to use as textures but once I realized how horrible that would be to actually do, I settled on placeholders.

cbooks.v10
cbooks.v09
cbooks.v13
cbooks.v08

Studies for future XR headsets

You can see from my portfolio that I am very interested in collective animal behavior, such as flocking birds and shoaling fish. I imagined a scenario where XR headsets would be able to scan the room and fill it with objects that react to both the physical environment and the lighting. I created this flocking setup and put it in my living room just to imagine how incredible it would be to be able to experience this in realtime with a real XR headset, and be able to move about the space and influence the virtual creatures. These next two videos are proof of concepts that show what it might look like to have tens of thousands of virtual fish swimming through my apartment.

Where it fell apart

In my desire to make things as realistic as possible, I decided it was time to finally tackle one of the many aspects of my setup that I had been putting off: cables and power cords. And to be quite honest, this is where I started to lose interest in this project. What a nightmare!

I got it in my head that everything needed to be as realistic as possible. And I had been avoiding working on power cords because the more I thought about it, the more worried I became. If I decided to do power cords, then I would also have to do the FioS cable hookup, the cables connecting the electronics to the television, the mess of cables connected to the back of my computer, etc. But sure, I would give it a go. I decided to just start with power cords for lamps that accurately plugged into the outlets I placed in my simulation. Here you can see early progress on making procedurally defined powerstrips.

image-8-2

The other big hurdle which I never really found a good solution to: getting soft things to interact with hard things and fabric things. My memory is fuzzy about this, but if I remember correctly, the issue was that RBD objects in Houdini don't play well with Vellum (cloth) sims. What I would have to do is to simulate the scene with just rigid bodies, and then use that setup as a post process collider for a vellum sim. The other option was to try and just do the RBD in Vellum, but that didn't end up behaving well and there were too many limitations. Ultimately, I put it on the back burner and forgot about it. This one rendered still frame is the only relic from that experimentation.

 

test_render_vellum

Wrap it up.

This project was in active development for many years. It continues to be a source of inspiration for me, but I don't think I will go back into the guts of it to extend the realism or functionality. Sadly, generative AI has taken some of the wind out of my sails. I recently saw someone feed a set of photos of their parents' living room into an AI tool and, with Blender's help, get something comparable to what I built here. It took them minutes instead of years. I expect that six months from now, the tools will let me reproduce everything on this page with a few well-written prompts and a folder of source images. It is hard to know how to feel about that.

I have no interest in bad-mouthing technological progress, but I also can't claim I would have started this project if I had known where generative AI was headed. When I began in 2020, it felt like a great way to learn Houdini and a great way to get out of a creative rut. I stand by that. But would I spend years hand-building something like this today? No.