Website powered by

Witch Apprentice Room Environment Breakdown (WIP)

Work In Progress / 09 January 2023

Hello! My name is Alexius Odom. I’m a pastry chef turned 3D environment prop artist. I first got introduced to 3D modeling in late 2019 because I needed to knock out some extracurriculars. Plus, all the other courses I originally wanted to enroll in were full. Fortunately, I got stuck with an introductory 3D course, and my life has never been the same. The restless nights of being elbow-deep in buttercream have been replaced with obsessively fun hours of developing my CG skills. Creating art that can not only be seen but experienced is in my blood. 

When I’m not on the computer and touching grass, I pretend I am a discount Laura Croft going on adrenaline-pumping adventures, writing moody poetry and short stories, and baking too many delectable treats for my neighbors and friends.

A matcha white chocolate cake made for a friend, a view of my feet and the mountains at Big Bend National Park, and me trapped in a dungeon at Ren Faire.

A poem that was written by me to infuse some magic writing into the scene.

The Project

I have a strong appetite for movies and books filled with the fantastic, obscure, and mysterious.  Whatever engages the imagination is what makes us human and is also important for this project.

However, working on a 3D environment can quickly get disorganized because there are so many tools and resources being used to pull everything together. To start out the project, I created a folder of all the things I anticipated that I would need to keep myself organized.

I approached this project like I do my writing: world-building before getting lost in the details.

  • FX: Volumetric fog, light shafts, light orbs 
  • Light: full moon, midnight, flickering candles, many shadows, a vignette from lighting only 
  • Colors: rich shades or multiple colors, harmonious yet maximalist color palette, deep contrasts, cold hues 
  • Style: Eclectic Victorian, curved/rounded silhouettes, ornamental
  • Décor: Vintage décor, haphazardly stacked books, ornate curtains, broken sofa, vintage chest 
  • Textures: Natural hardwood, soft velvet, rusted gold, stained glass, waxy dust-covered candles, torn upholstery
  • Adjectives: Curiosity, academic, mysterious, enchanting, secretive, wondrous, cozy, familiar, sensual

The concept is based on concept artist Vlada Panteleeva’s Witch Apprentice Room. Vlada’s concept is a visual exploration, with each asset pulling the viewer into the room and its mysterious activity. I wanted to stay true to Vlada’s explorative approach nestled in obscure charm.


Thanks to my traditional art and graphic design background, I can’t help but geek out over the colors. Vlada made the window the most prominent aspect of the scene, contrasting with the bright yellow and shadowed wallpaper.

To focus on the magic of the room, I decided to zoom in a bit on just a corner of the space where the magical activity was happening. It didn’t feel right to remove the ornate stained-glass window completely. And that’s where the moonlight (directional light) came to save the day without removing too many elements of the scene.

Below, you can see how I used the directional light to highlight the supernatural event. The stained glass is still visible, and its intricate shadow casts a cool contrast onto the books, salt ring, and candles.


Don’t hesitate to zoom in on my oversized mood chart.

Blocked out the environment to quickly playtest the room. This step helped me experiment with different models, silhouettes, and geometry to avoid wasting time on assets that may break the harmony of the environment.1


Once I was happy with how the blocked-out meshes *meshed* together and finalized their form, I imported all of the assets into UE5 to make sure everything looked good. The wallpaper texture was from pexels.com and altered in Photoshop. Damage on the trunk and folds in the sofa’s upholstery was sculpted in ZBrush with custom alphas imported from Photoshop.

Final materials were made in Substance Painter and Designer. I followed the amazing William Faucher’s tip to match Substance’s viewport with Unreal Engine’s by changing the ACES color management. This helped me to avoid going back and forth between the apps and adjusting the textures. I largely painted additional textures with the normal map for more precise baked normals. The sofa’s velvet texture is predominantly normals giving the illusion of the densely piled, shiny fabric.

After completing all of the materials, I imported all of the textures into UE5, lighting the scene with the default Sky Light, Sky Atmosphere, and Directional light to see how everything was working.

I took a short break after finishing the materials to learn how to use the Niagara System in Unreal Engine. Learning some basic VFX would improve the storytelling of the environment so that everything isn't so static. After picking up a couple of Niagara tricks, I was able to create a light orb, light particulates, and flickering candlelight.

Even with the VFX, the scene still looked like it was unseasoned because the mood isn't established, and there is no focal point.


After going through over 13 varied lighting setups for the environment, I was getting closer to the image I had in mind, thanks to the help of several references. To craft the mood, I used a Sky Light, Sky Atmosphere, Exponential Height Fog, Volumetric Fog, Post Processing Volume, and two area lights. One area light is to the left of the trunk off-camera, and the second area light is to the right of the sofa to have control over the "natural" vignette's strength. Unreal Engine's awesome volumetric fog helped tie this scene together.

☝️ The scene so far.

☝️ Lighting Only (with increased lighting intensity for more visibility)

☝️ Default Unlit


It’s true. A complete project is better than a perfect one. With that said, there are many ways I need to polish the overall scene. 

Working on this project has been 25% artistry and 75% technical problem-solving. I love a good puzzle, but one way to get closer to solving this one is to get a new graphics card. The BSOD and I are far too acquainted, and my six-year-old graphics card is on a fast track to self-execution.

After communicating with Unreal Engine technical support about the environment looking too dark for an extended amount of time, we’ve reached a pretty solid conclusion. Despite using Nanite, decreasing poly count, reducing texture map sizes, etc., my GPU is ready to retire.

There are some notes on how to improve the scene going forward. I have done some minor repairs on my computer to help push the project as far as it can go while I save up some cash for the juiced-up RTX 3090. 

My notes for the next and final iteration of the environment:


If you made it this far through my workflow breakdown, you deserve all the cookies 🍪, and I am sure the witch that resides in the apprentice room is working on a good fortune spell for you. I really hope to have been of some help or inspiration to someone. There is still a lot to learn, and I look forward to the ongoing journey.

If you felt I didn’t cover something in the blog or have any questions, send me a message here or email me at alexiusodom@gmail.com.

There are many friends I have to thank while I worked on this iteration of the project. Especially Melissa Altobello, who was beyond helpful. Mel provided valuable feedback that pushed me to do more than create a pretty picture. Mel helped me actualize what I want to do going forward. I’ll forever be grateful to Mel for her feedback and encouragement, including those who want to roast my art.

✨ Alexius Odom