For our first lesson in the new year of game prod, we had our introduction to the brief. Within it, we are being asked to create a visual diorama depicting the scene of a checkpoint akin to save/rest zones in games. I will be generating vague thematic ideas and expanding from it with mind maps, mood boards and any methods to develop the concept.
I considered a few vague ideas to stem off of as to not overcomplicate from the beginning; a wide variety of concepts can broaden my horizons and prove my versatility. For the first few concepts, I collected varying thematic scenes to choose from:
Medieval tavern - cozy lighting, steaming mead, wooden tankards reinforced with metal binding for material diversity, snowy exterior.
Baby crib - vibrant and saturated, childlike and innocent, array of toys of plastic and wooden material, night light for soft lighting.
Fruit stall - market scenery, abundance of vibrant fruit piled in compartments, lots of repeated assets in fruit. painted signs for advertisements, cobblestone street.
Ancient temple - holy statues, decrepit stonework, historic inscription, gold-clad architecture depicting a fallen, once thriving civilisation.
Considering each concept's visuals, I leaned towards the vibrancy of the baby crib scene. The idea of strewn-around toys and evidence of a character being present helps to visualise a narrative with just the environment. I turned to PureRef to compile references of this idea with real-life products and rooms tailored to an infant. I included toys, sentimental plushies, cots/crib beds, wooden shape blocks, and blankets.
I can picture the crib being the primary subject of the scene pertaining most of the tri budget. I can certainly iterate on its design with a differing degree of complexity in the wooden arches to fit the budget's needs, especially since soft blankets and fabrics may eat up tris. This can be remedied with simple, repeatable primitive props like the alphabet blocks and generic shape toys that I can save duplicating until the Engine stage.
With my diorama worked out conceptually and visualised with a rough, quick mood board, I started to translate these ideas to paper with small doodles; this helped me brainstorm and imagine how I would tackle this project.
These are the two pages I filled with rough doodles and notes; I'll break these down and annotate the more relevant ideas.
To contextualise the scenery of the crib within the brief, I imagined a plot akin to the 2014 indie horror game "Among the Sleep" by Krillbite Studio. I desired to make a cute, comforting scene with vibrant colours and taking inspiration from AtS helped me imagine how I could translate this to a Games Art brief, with the protagonist's perspective of a young child with juvenile and playful scenery mixed with the horror-filled plotline that creates the conflict with monsters and a contrast in scenery past the initial safety of the protagonist's room.
I made a crude storyboard to show how this checkpoint works within the imagined game.
1: The player wakes up, starting the level, with an inability to return to sleep.
2: They leave the safety of the crib to investigate what causes their unease within the house.
3: Finding the problem, they use their baby rattle to dispel the evil.
4: Problems have been fixed so now the player can go back to sleep, returning to the crib for the character to rest, and the player to save their game.
Since I've established the cot as the central piece of the diorama, I drew a scene with a cot that has a retractable wall/gate that pulls down. This would help draw the viewers towards the cot, akin to a door opening which draws viewers' allure from their curiosity as to what's behind it - the same goes for this cot as the gate will expose what lays within the cot that acts as the checkpoint.
Perhaps the protagonist's rattles and equipment are on display here, as the rattles are used as "weapons" in my hypothetical game.
For the alpha requirement, I imagined stickers and childlike doodles would be a good inclusion to the scene as this would indicate the presence of a child/the playable character using this checkpoint. The expression of creativity certainly communicates that this is perceived as a safe place of comfort and rest for the character. Perhaps drawings and sticker decor would build up over the course of the game, reflecting gameplay occurrences and evidence of frequent use.
My next idea was a blanket, marked in red in the doodle. It would serve a compositional purpose, narratively being used during sleep and positionally is hanging off the bed to suggest the character's departure. However for the composition, its position would help as a transitional subject from the toy-strewn floor to the comfy cot with plush toys galore, guiding the eyes from the floor to the centrepiece of the cot which establishes the leading lines within the compisition, all directed towards the cot.
Set dressing especially for the floor surrounding the crib.
Baby mobile strengthens the silhouette of the cot, potential narrative prop with hanging shapes that reflect the story.
I want the main source of light to be a night light that provides soft, warm lighting that feels inviting. This will create a hue contrast in the scene as the outer area will have a cool, dark colour to show how the night light is the beacon of light within the shrouded dark of the child's room.
If I feel the floor looks too empty or I have extra budget, I could add a fluffy rug to fill in space.
For the floor, I desire wooden floorboards - perhaps in dark oak to contrast the light and vibrant furniture and toys. I discussed with my tutor how to approach this with the tiling texture; they suggested I create the floorboard texture and apply it to a plane, adding geometry afterwards to create variation and achieve the look of separated, stylised planks.
This is how I envision the floor would cutoff at the diorama's edge.
Dev Log Evaluation:
I left this first session feeling intrigued for future classes within this block, as this brief is very exciting - the exploration of composition within a 3D scene sounds like a lot of fun to explore and iterate on to guide the viewer's eyes at every angle. I'm also looking forward to producing my baby crib concept as I can explore vibrant colours and lighting, due to the function of sleeping in the checkpoint, and model some cute and fun props like toys and teddies.
I believe I've achieved a good start with my crude sketches and mood board, although I'd like to clean up my ideas going forward so in the next session, I'll solidify my plans with cleaner mood boards featuring game and 3D modelling references to understand others' approaches to this idea, and material references so I can emulate each one effectively.
On our Friday session, we kept developing our ideas and were recommended to try blocking our scene out in 3Ds Max. I aimed to model a simple crib in preparation for its final model which will have major detail, understanding its basic form before focusing on the minor components. I also wanted to use Photoshop to picture my scene in colour while iterating on the layout and composition.
In making the cot, I started with a cube primitive that I added swift loops to the edges of.
I then extruded the corner faces to create the beams.
Next, I connected the beams using the bridge tool.
This left me with the base.
Finally, I added legs to finalise my simple crib.
With a very primitive 3D blockout made, I was able to reference the crib and plane to draw it out in Photoshop. I used this to visualise the scene better with colour, lighting and extra doodley decals/props. I also used this to iterate on the layout, testing different compositions - this will be enhanced by larger props, but for now I'm considering the direction and placement of the crib, and its scale compared to the plane.
For my first iteration, I had the crib at the back of the scene on a slightly elongated plane to imitate a walkway, which would indicate the player's path to the checkpoint crib. This would likely be reinforced by larger props in the scene which lead to the crib; I worked on this idea by adding a blanket which is falling off the bed which implies that the player slept in it, and dragged it as they left the crib which left it trailing onto the floor. This gives a sense of direction as it acts as a transition from the crib to the toy-strewn floor.
In this next idea, I scaled the crib up and had the plane be a tighter space for a more cramped, chaotic scene. This reflects the presence of the player, being a toddler with messy habits and an abundance of toys misplaced everywhere. This idea works for a visually dense scene, but doesn't touch upon the idea of movement.
This final iteration is likely my strongest; I played into the idea of the crib being the focal point of the scene as the largest prop with the highest tri count, placing it in the centre as the primary focus in the diorama. My concept has conceptual duality in the innocent vibrancy of childhood contrasted by the intimidating nightmares plaguing the protagonist, which I wanted to include in this scene. The others showed this checkpoint purely as a space of safety with no sign of foreshadowed troubles, but here I maintained the functional respite of the crib while visually depicting the frightening events to follow once leaving the checkpoint.
The night light placed in front of the crib casts a large shadow behind it which contains the eerie props that heralds the fore coming of events in-game. This includes a duplicate of the cute plush toy found in the crib, limbs torn and beheaded - I can approach this by building each model limb-by-limb and constructing the crib version normally, while the beheaded one is placed as seen. To add more contrast to this side of the diorama, I can vary the wooden floorboards by adding scratches and breakage with splinters on the edges which separate the atmosphere of each side further.
Dev Log Evaluation:
With this lesson complete, I've started work on my 3D block out to enter the modelling phase, and experimented on the layout of the scene with an addition of lighting all made in Photoshop. Now that I've decided on a composition, I can fully enter the 3D phase next week and develop the block out for my scene. Before then however, I would like to use PureRef to create developed mood boards I can use for references including materials, real-life examples of toys/baby products, and other artists' interpretations of these ideas translated to 3D models.
We've been given a questionnaire detailing on our diorama's concept which will help us work out the details and ensure our idea is consistent and makes sense; I had already worked out most of the details but it helps to record it here, and refine it too!
What is the story of your checkpoint diorama?
My project's story follows a toddler plagued with nightmares that awake him from his slumber; these nightmares manifest within his own home and he must navigate the home to dispel these horrifying entities, to finally return to his crib and continue his rest.
What genre of game is your checkpoint within?
I can imagine this game being a horror despite its visual contrast featuring childish toys and vibrant, innocent displays. Games like Among the Sleep, Fran Bow, Little Misfortune, and Poppy Playtime have shown to succeed in the horror genre despite their cute visuals.
What purpose does your checkpoint serve to your player?
The protagonist's checkpoint is his own crib which he sleeps in; when he gets rid of his manifested nightmares, he is able to return to his safe space, the cot, and return to sleep to get more rest.
What is the tone and mood of your diorama?
I'm aiming for an atmosphere of great duality within my diorama to reflect the game's horror genre along with the innocent nature of the protagonist - the front of the diorama where you face the cot has cozy lighting with a collection of toys and soft cushions and plushies, promoting the comfort felt by the player when resting here. Behind the cot is a large shadow cast by the nightlight in front of the cot, which hides scraps of paper with eerie drawings, torn up toys and scratches that foreshadow the game's event and demonstrate how the protagonist may be able to find comfort and rest occasionally, but his horrors within sleep will still haunt him.
How are you going to use your texture and tri-count budgets?
Since the cot is the centrepiece of the diorama, I'm allocating most of the budget to that to ensure the details are all refined and appealing, along with a few softer props such as a blanket falling off the bed which will need lots of tri's to maintain its curvy silhouette. Lots of budget can be saved by the props including the toy wooden blocks, balls, and shape blocks which can all be duplicated within Engine without affecting the budget. Not to mention, I can change the colour of these in Engine as well so I don't have to make multiple based on colour!
In today's session, I dedicated time to developing a better mood board so I had proper references to use when I start modelling; from there, I would be able to begin my blockout.
In PureRef, I created a more in-depth mood board taking screenshots from gameplay like in Among the Sleep, and used the website "noclip" to observe game levels like Mario Galaxy and Kart 8. I was able to see how Nintendo devs modelled and textured specific props related to my project, along with some real life/in-game materials to grasp how I can apply these to my semi-stylised diorama.
For the foundation of my blockout, I added a cube with real life measurements of a crib - 115cm in length, 90cm in width, 90cm in height. This would allow me to accurately scale the rest of the props surrounding this centrepiece.
From here, my lecturer showed me how to simulate a cloth blanket based on my enquiry; I started with a very dense plane, 100x100 and added a cloth modifier.
Next, I opened "Object Properties" and checked the cloth setting with cotton for the preset for the plane. Next, I added the crib for the collision area and set the depth and offset to 2 for some distance.
I then successfully simulated the cloth.
Using the dot ring tool with an edge loop selected, I could select every other loop too.
With this, I clicked ctrl + backspace to remove the selected loops.
I repeated this until the prop was very tri efficient, while maintaining the silhouette in the bend, leaving me with 50 tris!
Finally, I rendered the blanket with F9 to check it looks good and ensure I could continue with this.
Dev Log Evaluation:
I've now compiled all my necessary references and have learned a new method for crafting a high poly item and changing it to low poly while maintaining its smooth nature. With this complete, I'm confident in entering the modelling phase and starting my blockout. In the next session, I'd like to have a rough blockout complete to develop and increase the detail on.
Friday's session consisted mostly of our introduction to Substance Designer - a new software we'd be using in this project and others going forward. It's a node-based software used for making detailed textures without consuming tris, procedural textures that seamlessly and endlessly generate, and detailed patterns for things such as floor tiles, fabric textures, and much more.
In creating a new file, I was presented with the nodes on the right, and a grey blank cube. The cube represents the current texture, which has no modifications made to it, and the nodes represent the normal, height, and ambient occlusion maps of this cube.
For the first step of the texture we will make, I added a "Shape" node with a square pattern, scaling it down and connecting it to each map node which left me with this new texture on the cube.
To add a slight transition to this shape for less sharpness, I gave it a gradient by entering the "Pattern" tab and checking "Brick" as the shape, then increasing the pattern specific scale which gave me a fade to the shape.
I followed this up with an invert grayscale node, which is self explanatory. Following this, I added a "Blur HQ Grayscale" node which has much more powerful properties. Turning the quality and intensity up high gave me a much more blended effect. Finally, I connected this sequence to a "Blend" node on the foreground setting, with the original shape's duplicate on the background setting. For a finishing touch, I changed its blend mode to "Multiply" which adds this new chain's effect to the duplicate, which acts as the shape's template.
With the chain complete, I connected it to a "Grayscale Tile Generator" node and began adjusting. I changed the pattern to "Image Input" so what it replicates in a tiling format is the appearance of the cube before adding this node. Connecting the end of the chain to this new node in the foreground over background gives us the right appearance.
This left me with this pictured cube!
llalalalala
lalaala
This is how the sequence looked overall so far.
I added a new area to this chain, with a linear gradient node, along with a levels node attached to that. This was necessary to remove the full blacks and whites in this gradient so no value is at exactly 1 or 0, which lessens the intensity of the gradient. I made a new blend node to attach this to in the foreground, with the first blend node put into the background so the gradient will be pasted on top of our current texture.
Next, I adjusted the pattern of the tiles once more for something more realistic and reminiscent of real life tiled patterns. I changed the tile generator's instance parameters to 4x4 in the X and Y categories which gives us a 4x4 pattern for the tiles. Next, I turned up the normal intensity to 10 for a little more definition to the tile edges.
Following this, I randomized the pattern to create imperfections which give more plausibility rather than a completely perfect and calculated texture which doesn't appear manmade. This is done by scaling up the tiles themselves. Finally, increasing the "rotation random" scale, which sends the gradients for each individual tiles in different directions, makes them appear placed haphazardly and more man-made.
In creating our colour, I changed the uniform colour to a neutral cyan, duplicating it and changing that to brown. Next, I brought in a noise node to depict some wear to the surface. In a new blend node, I attached the base cyan colour to the foreground, the dark brown to the background, and the noise to opacity as an overlay. Next, I changed this blend node's property to multiply so the colour and noise is applied over the texture, rather than flatly pasted on top.
As seen on the bottom, I made a dedicated black and white mask to be duplicated and used elsewhere as used for the noise. I did this by duping the tile generator and adding a levels node to remove all the greys which gives me the black and white needed for the mask. I could apply this elsewhere for a mask, but I attached the noise and tiling pattern to a blend node so the noise could have a subtle effect over the pattern, not just the colour.
For the roughness map, I inserted 3 different grunge map nodes. I connected them all to a blend node, 1 map for each connector (foreground, background, opacity). After this, I connected the blend to a levels node and removed the full blacks and whites for a more neutral texture overlay and subtlety. With this complete, I attached the chain to the roughness node.
I also added some edgewear by adding a fractal sum noise node, connecting it to a slope blur node in the slope connector, and then attaching the black mask levels to grayscale. Next, I turned down the intensity and changed the mode to "Min".
I put this chain into a new blend mode, making that "Max (Lighten)" and connected the original tile generator to this blend node as the background, with the new edgewear chain as the foreground.
With that complete, my overall sequence needed optimising. I organised everything so no nodes or sub-chains were cluttered. Each major area was selected with a drag, and right clicked to add a frame. This frame can be labelled and coloured to differentiate everything easier.
Finally, it was time to export. I added a new node called "RGBA Merge" and connected my AO to the red channel, roughness to green, and metallic to blue. This new node would be connected to another called "Output" which I labelled "AORM".
Before exporting anything, it's important to expose parameters so they can be accessed in Substance Painter and changed there, rather than returning to this software just to adjust a few numbers. The important parameters to expose include:
Uniform Colour 1 & 2
Normal Intensity
Roughness Levels
Each tile generator node's X & Y parameters
This is the result of the final material, ready to export!
In the leftmost tab, I right-clicked on the "Tiles" button and hit "Export Outputs". Checking everything on this screenshot and changing the file to targa, everything was exported.
To ensure this texture worked, I used an old mesh from first year and applied the texture to it; as you can see, it worked perfectly!!
I even experimented with some black masks and paint layers to get a little colour variation, although I'm sure that's something I can achieve in Designer exclusively too.
Dev Log Evaluation:
I must say, I left this session exhausted - we were retaining a lot of new knowledge at a fast rate for most of the lecture, and I did some work on my block out during the last hour of the lesson. I would've shown it here, but most of the computers crashed randomly.. either way I saved beforehand so it'll be on next week's blog.
In my opinion, this lecture was successful for me as I do have a thorough understanding of Substance Designer now, I do struggle to keep up with fast-paced tutorials but I was able to keep up so it was no problem. Although the tutorial was quick and my brain is slow, Designer itself seems fine and easy to understand! Its node-based format makes all the changes to a texture easy to visualise and understand and I can see myself using this software a lot for my textures, I look forward to it.
In this week's blog task, we are being asked to observe a realistic environment in a video game, speculating on how extreme weather would affect the components within the scene, and therefore its material structure. The vast majority of games I play lean towards stylised and cartoonish and I wanted to go within a game to grab my own screenshots so I was struggling to think of what to play. Thankfully, Elden Ring is my special exception when it comes to realistic games so I chose that!
Following the analysis of the scene we use, we must apply this research to our own checkpoint and understand how we will apply narrative wear and tear in realistic manner to our assets.
My Screenshots:
External Photos:
Real-life References:
My choice for a scene in Elden Ring was Dominula, Windmill Village; it has rustic architecture featuring a combination of wood and cobblestone, along with dirt and grass lining the floor. It could also be worth mentioning the cloth that the residents adorn!
Heavy Rain:
Wood: this material can vary when it comes to construction, however upon closer inspection this wood looks very worn and rough. This is opposed to wood used in modern architecture which has a smoother surface, resistant to corrosion and decay. Therefore, this wood likely absorbs rain directly, retaining the water and becoming saturated by it - this makes it darker, with a lack of reflection.
Cobblestone walls: stone also have a rough surface, however it doesn't absorb to the same degree as wood, meaning some rainwater would bounce off and run down the contour of the cobblestone. This would lead to reflections on the walls, a little bit of rough shimmer.
Grass: fields of grass have a smooth surface when felt up close, and while they absorb rainwater at their root, it rolls off at the top because of their smoothness; once rain has ceased, droplets would likely sit on the grass blades and brighten the collective grass with its reflective drops of water, meaning lots of scattered and dappled highlights.
Dirt: this material has a similar reaction to wood thanks to its very rough texture, where it absorbs the rain and saturates greatly, becoming darker; it is mostly matte so barely any reflections will show, but puddles may form atop the dirt in concave areas which will have prominent highlights.
Cloth: this texture is entirely matte, with the purpose of keeping someone warm so it likely would absorb the rain and darken, without any sign of highlight.
Sunlight:
Wood: thanks to its matte, rough texture, there would be no significant reflections occurring in the planks. It'd certainly become warmer and towards an orange hue thanks to the warm sunlight however.
Cobblestone walls: stone like this would certainly lighten in the sun but the interesting part would be the contrast created in direct sunlight. This light source would cause the prominent stones in the walls to cast shadows on the wall's foundation, which defines the bricked pattern better. The stones receive all the light, while they themselves cast the shadows around them, defining their protrusion.
Grass: it turns a warmer hue closer to yellow, rather than green thanks to the sunlight. The most interesting and important part to grass' interaction with strong light is its subsurface scattering; the sunlight would pass through it due to its weaker structural density, and cause something of a glow to occur throughout the grass blade. Its smooth surface would likely cause collective highlights on the surface hit by light directly.
Cloth: since it's rough and matte, it wouldn't cause any reflections, its highlight would cause saturation and cast geometric shadows thanks to its clothing folds - although softer folds would cause a smoother shadow, known as a lost edge.
How will I incorporate realistic narrative wear and tear in my diorama?
Since my checkpoint is situated indoors, there would be no effect caused by weather, like corrosion or dampness caused by rain, or strong highlights and reflections from sunlight. The scene is set at night time within the room of a child, meaning external issues won't occur and sunlight won't affect anything either. However, this child is at least a toddler, exiting this stage and his nightmarish manifestations likely reflecting his fears for growing up and leaving his crib and the comfort of infanthood.
This means the furniture, such as the crib has likely been worn down over the years, such as paint tearing off and edgewear as its not a fresh product anymore. Being a toddler, the protagonist is definitely reckless and messy when playing with their toys so they are strewn about the floor, along with some breakage occurring. I believe this would be especially emphasised in the opposite side to this diorama which features eerie things, such as torn plushies with cotton everywhere, scratches on the wood and splinters stemming from the crib and floorboard's edges. Broken crayons signifying the protagonist's stress, and evidence of their use with paper all over the place with chaotic, concerning scribbled drawings.
Asset List and Workflows:
Baby Crib - 3Ds Max low poly sculpt and Designer texture
Alphabet blocks - 3Ds Max and Substance Painter
Rubber ball - 3Ds Max and Designer
Mattress - 3Ds Max low poly, cloth sim cover
Night Light - 3Ds Max
Alphas - 3Ds Max planes and Photoshop hand-paint
Crayons - 3Ds Max, hand-paint paper wrap, Designer texture
Rug - 3Ds Max block out, Designer texture, Painter colour
Plush toy - 3Ds Max limb-by-limb, Designer texture
Floorboards - 3Ds Max block out, Designer pattern, Painter hues
In the last session of the previous week, we spent most of our time learning Substance Designer, so I used the remaining time of the lesson to start modelling my crib. I have it documented since I was able to re-access the file since the random mass computer crash, so I was able to continue my modelling work this lesson. I felt behind, so it was my aim to get the majority of my props modelled by the end of the session.
This is the result of my crib after last lesson, the beams are pillars built with scale and extrude, the wall is a rectangle with the top middle edges brought up to a slope, and the blue part represents the wooden base.
Using a new box, I applied the bend modifier with lots of edge loops to get a smooth slope in the front gate of the crib.
I used the shift tool to budge the slope into a new angle, but I ended up preferring the softer bend from before.
Next, I added in small beams.
After duplicating the side wall, I increased its width to span the whole crib and represent the back wall. I adjusted the top faces as well, to have a slightly more complex silhouette.
For a finishing touch to the crib, I duplicated the crib's components and added a chamfer to each wooden wall and beam for some curvature. This duplicate would represent the high poly version, whereas the low poly would exclude any chamfering or parts that could be repeated.
For the mattress, I just needed a simple box with a chamfer on the edges for a softer curve.
The top edges needed no chamfer as a cloth would cover it, which I began to simulate here with a dense plane.
After including the mattress and walls as collision objects in this simulation with slight offset to prevent clipping, I had a good outcome.
I removed any unnecessary edge loops to optimise the sheet while maintaining its silhouette.
To construct the crayon, I used a cylinder primitive with only a few segments; this is because the prop is very small and doesn't need a lot of topology to communicate the form. I added swift loops in and adjusted them with scale to achieve the crayon nib and a separated loop where the paper wrap will sit.
For the night light, I wanted to create a soft, opaque plastic shape with LED lights inside so I opted for a crescent moon sat atop a wooden block holding the battery block. I started with a plane, using the cut tool to draw out the shape I wanted.
From here, I removed the unnecessary outer faces and connected each vert to get rid of ngons.
Next, I added some extra loops for a softer curve and added a loop going the opposite way so the ends could curve off too.
I tested the extrusion and like the effect, but I needed an easier way to get it to curve all around.
I added a loop within the entire shape as a face on-top to move upwards, this would emulate a smooth transition without the need to chamfer or extrude, scale and readjust the faces.
I tried this new method by extruding it, and then selecting the faces within the inner loop and moving those upwards slightly for the soft edge I desired.
This was the end result of the night light with the box underneath attached through extruding a face on the flat edge of the moon's bottom.
The rug will rely mostly on designer and painter properties, so 3Ds Max only needed a block-out with the shape of a rainbow's arc, which I created with a plane, including some horizontal edges that I adjusted for a sloped angle. I then added a symmetry modifier to mirror it over for the full arch. Finally, I extruded it for a little depth and thickness.
By the end of the session I was running out of creative juice because this was my teddy bear..
Overall though, my block out is pretty much finished!!
Dev Log Evaluation:
I was feeling pretty behind for 3D before this lesson, and I still think I have stuff to catch up on but I ultimately was very productive today, and I succeeded in my goals. The majority of my props are modelled, and most of them are pure models using Painter/Substance to achieve their finished state, so there isn't much left for me to do in the modelling department.
Before I start my unwrap this week, I need to finish my teddy bear's separated model as it'll be constructed limb-by-limb. I struggled towards the end of the lesson in making it, so I believe I'll require Zbrush for a better version of this teddy - that way, I can get more dynamic shapes in its slumped form, its large stitched areas and a general easier time blocking it out. I don't predict difficulty in retopping this prop, and I'll be glad to use Zbrush as well as all the other software to gain more experience in that too.
For extra notes, I need to keep in mind the process of the crib as the focal point of the diorama; I have my high and low poly versions, which I'll bake the high onto the low once it's unwrapped. To create its texture, I won't use a trim sheet but smart materials in Painter which will act as a base that I'll adjust to my needs and apply to the crib when complete. All the props like the night light and myriad of toys will be on their own texture sheet. Another thing is the alphabet blocks, I can model these as basic cubes in 3Ds Max and paint the letters on with a height map in Painter, keeping some separate as regular wooden cubes.
Overall, my goals for next lesson are to sculpt the teddy in Zbrush with spheres, molding them into dynamic shapes and using dam standard to add stitching. This will be followed by retopping it in 3Ds Max, and then I can begin unwrapping everything to start texturing next week. Apart from my teddy and the floorboards, the only props I need to make now are the alphas, so next week I will dedicate time to creating those.
In the Friday session, I had the goal of creating the final 3D asset for my scene before entering the unwrap phase; this was the teddy bear, which gave me trouble using exclusively Max primitives, so I took to Zbrush to sculpt it.
I started by placing spheres to represent each appendage - the head, torso, arm and leg.
I used the Move tool to adjust their shape and give them a more weighted feel, with a natural shape rather than pure spheres.
I also added another sphere to the head and merged it down, using the ZRemesher tool to append them, giving me a snout. Finally, I used the Dam Standard tool to simulate stitch seams on the teddy.
After decimating each mesh in Zbrush for optimisation, I imported them to Max to begin retopping them. I scaled them by 2500 each for consistency and the correct scale compared to other parts of the scene.
I began with a loop for the head, which I extended on one side, leaving me with the topology of half the head. I added deformation loops on the end to reduce the density on the side of the head.
With half the head complete, I could add the symmetry modifier and mirror it over, target welding any open sections in the middle.
In creating the retop for the arm, I realised I could duplicate it over to the leg and use the conform brush to have the same topology for both, fitting each respective mesh.
(Before and after of the crib's silhouette)
Gabriele Feedback:
Since I had a lot of budget left to work with and my crib was still looking relatively low poly, Gabriele gave a few suggestions on how to improve on this; to start, it was adding more topology to the crib. As my centrepiece, I can go crazy on it - especially since most props are repeatables.
Starting with the silhouette at the back of the crib, it had the implication of a curve but it wasn't smooth enough yet. He demonstrated a great method to efficiently fix this using "Alt + R" to select a ring that forms a curve width-wise and then "Ctrl + Shift + E" to add a new edge loop in the vertical centre of it. Following this up with the "Set Flow" tool fit this new loop into the pre-established curve which saves me from manually moving it all. He repeated this until it was much more dense and had a smoother silhouette like I desired!
I could also remove the unnecessary topology at the bottom which you never see anyway, so he removed all of it, leaving a hole at the bottom. selecting the bottom verts of each loop, he used the collapse tool which combined all the verts into one spot, being much more efficient budget-wise.
For the rounded beams, I could add some more topology but he also showed me the "Weighted Normals" modifier which essentially smooths the edges without needing dense topology, which I'll use for more of the crib!
Dev Log Evaluation:
I certainly feel as though my work is cut out for me; I've got a lot to do and I feel a little behind seeing as we need to start our texturing this week, although my hope is that texturing won't take so long since I've got a plan for how each asset will be textured. The important thing as I go into week 4 is knowing exactly what I need to do to catch up and get back on track.
To start, I need to readjust the topology on the crib using Gabriele's advice and then take it into Zbrush to add edgewear for a high poly version to bake onto the 3Ds Max version. Next, I must finish the teddy bear retop which won't take long, followed by another cloth sim which will represent the blanket - this will have the shell modifier to add thickness to it, distinguishing it from the mattress cover. Finally, I must unwrap everything so I can start texturing.
The floor will have a tiling texture of wooden floorboards and will therefore have its own unwrap sheet; the same goes for the crib as its the centrepiece which requires the most textural resolution. Props will follow on their own sheet, the same going for alphas.
For this week's blog task, we've been asked to observe an old, worn object we own and find how it's aged, been damaged through uses, or by exposure to other things. We must also consider how old it is, and how it'll age further following its current course.
For this task, I chose a very aged cement mixer from behind my garden shed; it's been sat outside for at least 5 years, surrounded by trees and foliage. Its rusted metal exterior made it a viable choice for this blog task, along with its clear evidence of decay.
What scratches, dents or scuffs does it have?
The cement mixer features a lot of scuffs and roughness on its surface thanks to its use as a construction appliance - its not really treated delicately. Due to it being placed outside for years, it's been exposed to the oxidation process which produces patina on the surface. A green build up occurs when metal is exposed to the outdoors, causing oxidation which creates that green hue. Highlighted in pink is the underneath area which is exempt from any conditions from above, as its sheltered which keeps it looking like it did when first purchased.
What else has worn the prop over time?
Other outdoor elements have affected this mixer, such as rain. As this mixer is situated beneath some trees, the rain droplets have fallen directly onto it which causes corrosion which can be seen subtly, in its grainy texture. This also benefitted it in a way, as the green decay hasn't occurred on the top thanks to the rain washing it off. Within the ridges on the outer rim, wet leaves have accumulated as they've fallen from the trees and shrivelled into them. It's also gathered cobwebs, thanks to proximity to greenery.
How old is the prop?
This product is AT LEAST 5 years old due to it being used in 2020, although it's likely from the 2010s. Newer models seem to have a smoother, glossy and sleeker surface. Its accelerated aging is due to its constant exposure to outdoor elements such as rain, oxidation from the air, and animals/bugs.
How would the prop look like in 50 years?
In 50 years, I can imagine the orange hue is almost entirely lost to oxidation, appearing green and brown from rust. If still outside, there would likely be more prominent leak marks from the rain collecting in the crevices and running down collective spots. It'd also be even more matte and rough on the surface.
The previous session left me with most of the models complete, but needing to finish the teddy retop before I can start my next tasks. I had the goal of finishing the teddy retop first, then adjusting the crib's topology as I can allocate more budget to it and add more detail as the centrepiece. From here I will consider my next goals.
Lecture Notes - Master Materials and Engine Shaders:
Shaders represent the material with the nodes setup containing AORM textures, whereas a material instance is a copy of this material that holds the exposed parameters for you to adjust without changing the material itself or having to make a unique version with slight changes each time.
The material domain contains varying tools with options that allow you to change how the material reacts to certain lighting/environments. The blend mode is based on translucency with a solid option, a translucent one and alpha cutouts which act like masks.
The shading model calculates how light reacts - default lit is commonly used, pretty self explanatory as any special cases would use upcoming options. This includes the subsurface profile which allows light to pass through the object which is great for foliage, water, and ice due to their atomic structure causing subsurface scattering, where light penetrates the object. I've taken note of this as I'll be creating an ice shader next block.
For the render checkbox, the two sided option is another good choice for foliage or any thin structure like a dagger as it renders both sides.
Engine Stage:
The master material is where you can adjust the prop's texture such as colour, AORM parameters, etc without creating a separate material with the same setup.
ALWAYS turn off SRGB when baking your own AORM textures as it sets them to a different standard which washes out the values of them, reducing their quality and material read.
For a tiling texture in Engine, add a coordinates node in the material editor. Attach this to a multiply node, holding s and left clicking to get a scaler node. Plug the coord node into multiply's "A" section, and the scaler node into "B". From here, plug the multiply node into the UVs of all AORM textures.
Change the AORM textures to paramID, this exposes their parameters and allows them to be changed in the master material, as long as you check the "Global Scale Parameters" option.
To change the hue, add a hue shift noe and plug it into base colour. Add a new scaler, desaturation node with a new scaler node plugged into that called "Saturation" to adjust its vibrancy. Insert a multiply node and a new scaler labelled lightness, setting it to 1 so the multiply has a value to work with - this will adjust how bright or dark the hue is.
Plug that sequence into base colour, the global scaler parameters are now exposed on the material instance so you can change the hue freely.
Right click on a node and select the preview option to see how it affects the material while editing.
For overlay rather than hue, hold 3 and left click for a colour node and convert it to parameters. With a new multiply node, connect the old sequence to "A", and the colour node to "B", plugging the new multiply node into base colour to change the overlay colour, affecting the dark/lightness and (de)saturation of the material and not purely the colour. This is similar to the hue sequence, but with more options.
Repeat the multiply/scaler node sequence and connect it to the AORMs to adjust their parameter intensity - this can be used for roughness for example, increasing its parameters to enhance the aged look of an asset which can change its appearance entirely, without needing a separate version.
To adjust the normals, you can add a flatten node and plug it into normal's RGB. Label a new scaler "normal intensity" and plug it into the flatten node to adjust the normal's intensity in the material instance as this sequence exposes those parameters. I can use this technique for my wooden blocks, as I can increase the intensity on some and place them on the eerie side of the diorama to reinforce the ominous side to this concept.
If you want to optimise your sequence by organising it, you can drag over specific nodes and pressing c to frame them, labelling them too.
laalalala
The teddy required just the torso to be complete which used the same process as the arm and leg, giving me a finished retop; I was able to focus on the crib at this point.
Using Gabriele's tips from last week, I made my own attempt at improving the crib walls. I added loops between each pre-existing one and toggled set flow to maintain the current silhouette with a softer curve that evokes carved wood better.
Next, I worked on the extrusions of the crib which follow the contour of the shape subtly, requiring specific swift loop insertions which I selected the faces of, giving me a basic square shape around the back wall. I then extruded this to get an establishment of this detail.
To bring the curved edges of this extrusion into fruition, I added an inset to the selected faces and brought it forward for something of a slope.
Since I have a lot of budget left, I decided to chamfer the edges too for an extra slope.
I felt the bars of the gate contrasted against the crib in a way I didn't like - they had rounded edges but their perfectly straight, rectangular design didn't match the rest of the crib at all. I took an approach similar to the cylindrical beams and used a cylinder scaled width-ways for a flatter shape, scaling and extruding it to get a complex beam that matches the crib's design.
Previously, I had a high poly and low poly cube as a repeatable asset but I found I have enough budget to simply keep the high poly; I chamfered the edges for some softness.
Next, I used the cut tool on the corners holding disconnected topology causing ngons, adding another polygon that brings them together, finally connecting those new ones by one large square.
I used a pyramid primitive for the triangle block toy, chamfering and fixing the ngons in the same way.
Next, I started working on a stacking toy with rings piled up to the top, perhaps some left beside it. I researched the dimensions, giving me 35cm in height, so I blocked in a cylinder for height reference.
I did some more scale and extruding for the cylinder representing this ring stack toy; I gave it a basic silhouette and used swift loop with set flow to add more smoothness, following the contour.
The torus primitive gave me a great rendition of a plastic ring, with the exact silhouette necessary. I did remove some loops with the dot selection tool to delete every other loop, cutting them in half while preserving the curvature.
I didn't need to make anymore since I can use what I learned in today's lecture to adjust repeated versions in Engine by colour, roughness and wear, etc!
Gabriele Feedback:
I could remove some loops to save tris and bake things with different resolutions, perhaps even omitting entire sections of topology to bake them on instead.
I had concerns with not using enough budget which is why I so densely packed my models with loops, but 11k is hypothetically fine if I use my budget well and my topology is optimised - however I should aim to use the full 20k to get the most out of the budget.
Ultimately, my takeaway is to use the rest of the budget to craft the baby mobile as the complementary piece to the crib. Since the crib is so large and the toys are all so small, the mobile transitions these well in scale as a middle ground. It also will complete the scene with varied shapes and verticality in the piece since most of it was stuck to the ground before.
Since the crib is pretty much complete for the low poly version, I was able to start optimising it; I used Gabriele's method to collapse the verts into one, much more tri-efficient.
To start on my blanket, I wanted it to be distinct from the mattress cover with extra thickness and a more rigid nature compared to the thin flow of the former. I carried out a cloth simulation with the burlap cloth selection, giving me a less flexible shape that stands out against the mattress cover.
I optimised the topology by removing unnecessary loops while maintaining the curves, using the shell modifier to add thickness that follows the shape - unlike extruding a top face which brings it out rather than straight up, following the direction of each plane.
I decided the first simulation wasn't interesting enough - it fell down from the crib to the floor like I wanted to boost my composition, but the shape wasn't dynamic at all. Apart from its falling off the bed, it was straight and flat. I decided to duplicate some building blocks I made to give it collision points that will causing interesting protrusions and folds. I also changed the material from burlap to flannel which was more rigid than cotton, but much less stiff than burlap.
I liked the previous attempt, how it flowed and created dynamic folds so well in reaction to the blocks. However, it wasn't long enough and trail off the cylinder at all, so I retried with a longer plane which worked great.
With a simulated cloth I approved of, I started removing unnecessary edges to save budget.
Next, I added a shell modifier with decent thickness which further distinguishes it from the mattress cover, and evokes the feel of a cozy blanket.
For extra softness, I chamfered the edges.
I made a quick render to check if it looked good before the texturing stage.
lalaala
I realised setting the depth and offset to 2 on all of the collision objects in the cloth sim caused the blanket to float dramatically.
To solve this, I used the shift tool which acts similar to soft selection, grabbing the selected area and moving it around without manually moving topology - it moves it as a collective. This allowed me to naturally drag it into the correct place, just slightly above each object it touches to avoid clipping, as well as dragging the corners down to depict the droop of the blanket even better.
I didn't intend to use Zbrush loads in this project, but I wanted to add more to this crib as the centre piece through sculpting. I aimed to create edgewear that supports the underlying horror themes of this concept, so I brought the crib's assets into Zbrush for some fine-tuning.
When I tried to dynamesh the crib wall with better resolution, I had issues due to the open edges of the model. This was fixed by using the Zmodeler tool, selecting an edge and right clicking, and choosing the "close" option to cap off the edges and dynamesh properly!
I used the trim dynamic brush to cut away edges and corners which flattened them in a simple manner, giving me a solid foundation to build upon.
I followed up the edgewear with trim dynamic with a bit of noise to give the wood some graininess which alludes to the gritty horror foreshadowed in the scene. To strengthen the impression of a wood texture before using Painter or Designer, I used the rake and slash brushes to get those vertical dents. I also used the slash brush to emulate scratches caused by the protagonist in their lack of rest.
I sculpted the middle part of the base with more edgewear to depict how the child gets in and out of bed here frequently, but I forgot the blanket covers it up.. oops.
laallla
I reinforced the planky wood's vertical grooves by using the clay tool and creating subtle strokes, using the brush inversely too for varying height.
I repeated this process for each element of the crib, in varying detail to stay true to their size.
Zbrush Outcome:
With that, my Zbrush sculpting was complete; it's relatively subtle as I was late into the modelling stage and I'm getting ready to unwrap so I only wanted to add edgewear instead of having an entire high poly version with specific detail. I'll complement this edgewear with the textural impression of wood in Painter. I'm glad I was able to get use out of Zbrush for this project even if only for two assets, since it adds even more detail to the focal point of the crib.
Dev Log Evaluation:
I completed a lot of my goals in this session, especially since I felt behind before which is an accomplishment. By the end of the week, we're expected to have our UVs finished to texture next week. I'd like to get the rest of my goals completed in my self directed session tomorrow so I can unwrap then too, starting my texturing on Friday instead.
My remaining goals:
Optimise the crib further within the extruded sections, those loops can be combined.
Model the baby mobile.
Add any more small decals (optional).
Unwrap everything! Crib goes into one sheet, the decals (toys, plushies) into another, and the alphas will be done next week.
At this point, I'm beginning to move out of the modelling stage - most of my scene is modelled in 3Ds max and ready to be unwrapped, but I had enough budget left to add my stretch goal of a baby mobile which would be my main goal of the day. I'd finish adding the last little props and details, then begin the prep stage for unwrapping.
Lecture Notes - Decals Workflow:
A decal is a sculpted/painted texture embedded into a 3D scene. It has a similar process to creating an alpha texture, with both of their masked opacity properties. Most importantly, it's high quality and cheap!!
When put in a scene, you can move, rotate and rescale a decal freely; although, you have to be mindful of its bounding box. This is the box that contains the decal and represents where it's projected as it only projects on 1 axis, on a pre-existing mesh.
If a decal clashes with other meshes, it likely needs bringing closer to the intended mesh. When brought very close to the proper mesh, it closes space between the decal and the mesh and therefore stops affecting other meshes. This applies best to decals applied onto a floor.
To stop the clashing issue on anything where this method doesn't apply, you can select the meshes you don't want the decal on, search "decal" in the bottom right tab on Unreal and deselect the "receives decal" option.
For layering decals, enter the "decal" tab in the bottom right and find "sort order". It's automatically set to 0, so set it to 1, 2, etc to distinguish the layers in ascending order.
Zbrush -> 3Ds Max -> Painter -> Unreal Engine:
Create a plane on Zbrush, making sure to sculpt your decal in the centre as not to be affected by the edge's opacity.
Import this sculpt to Max as the high poly, making a new plane primitive over this to act as the low poly version.
To separate any significant elements in the high poly sculpt, you can enter element select and polygon vertex colours, changing each part for extra distinction.
Export HP and LP into Painter, ready to start texturing. From here, you need to change the shader to match the decal's masked opacity properties - enter shader settings on the far right, uncheck AORM and choose, opacity shader or alpha blend shader.
Bake the meshes using the automatic cage, tick on height and opacity on the left in "mesh map bakers". In the ID tab, select vertex colour as colour source and then bake. This selection uses the "polygon vertex colours" step in the Max stage to bake it all at once, with separate bakes occurring for each selected piece.
Start with a fill layer for the texturing, adding an opacity channel in the "texture set settings" channels. On the fill layer, select opacity and turn it to 1 so it's not visible at all. The opaque parts will be painted in on the fill layer, using a paintbrush similar to the sculpt's texture to naturally blend the edges.
Create a new folder with a mask for colour selection, using the colour ID info from Max to colour drop and work on each part individually. If the material cuts off too early on a colour masked area, increase the tolerance.
With the textures done, export the textures with the output template set to UE (Packed) as a targe file at 2048 size.
Import the textures to Unreal, unticking sRGB as to not inferfere with the bake and textures, and create a new material to represent this decal. In the material editor, change the mat domain to "deferred decal" and the blend mode to "translucent", plugging everything in as usual.
Drag the mesh and material into the scene and appreciate your shiny new decal. To change the axis of your decal's projection, change the blue arrow as this represents the projection.
Before tackling anything complex, I optimised my crib to a further degree, focusing on the areas inside the extrusions and its two horizontal loops.
In vert mode, I selected both of these loops and used the collapse tool to merge them into one loop.
From here, I target welded this loop towards the middle on each side to reach one vert that converges the whole extruded area, saving me budget!
Baby Mobile:
Model: GetDeadEntertainment
Preparing to sculpt my baby mobile, I gathered some references on the realistic dimensions, ideal shapes I could model, and artist interpretations I could extract info from such as this model I found on Artstation.
I added and edited this cube primitive to act as the height reference for my mobile, matching the reference image.
I used the bend modifier on a loop-packed cube to get the hanging part of the mobile.
I extrude & scaled the holder of the hanger using the bottom face of the cube.
lalalla
For the base, I started with two vertical loops that will give me three faces underneath - two claws to grab the crib, and space between them.
lalalla
I crudely extruded a widened bottom where the claws will extend from, adding loops haphazardly for a general grasp of the shape I want to achieve. Don't worry I fix this later.
On the faces that'll hold the claws, I started with an inset, extruding it down with some horizontal loops using the connect tool.
This gave me the foundation of the shape I will build.
I scaled the horizontal loops on the y-axis to establish the wide curve of the claws.
I did this again on the inner loops for that smooth curve I desired.
lalalla
I created an inset on the inner face of the claw, extruding that to achieve the gripping part.
lalalla
This gave me the rough shape of the base.
I used a spline to create the hook on the hanger.
I applied a shell modifier to increase its thickness and get my desired shape.
I cut off half of a torus primitive to get a tubular semi circle, duplicating and flipping it to mark the areas of the first chain.
I then attached these two, selecting each border and used the bridge tool to unify the two ends.
I duplicated this chain model to bring the hanging part of the mobile down further.
I used another torus, turning down the sides count greatly for this angular, 4-sided ring. I adjusted the angle so it'd be flat, followed by some small chamfers to depict the look of carved wood.
Using a cylinder primitive and placing it above the lowest chain, I was able to select certain faces and extrude them to reach the ends of the ring. With those extruded faces, I used the move tool to connect them to the ring.
From here, I extruded again to get the hanging strings. I selected individual faces and moved them up or down to get some height variety in the strings.
I started on some simple mobile props, all pertaining to the theme of slumber, a narrative choice reflecting the protagonist's desire to continue sleeping as they face their manifested nightmares. I started with some star shapes.
This cube with some extra edges was my base for a 4-pronged star.
I selected the non-diagonal verts and brought them inward, followed by removing the diagonal loops for this simple, low poly star shape.
On a plane, I used the cut tool to draw out half of a star's shape.
I deleted the outer faces from this star cutout, and used the symmetry modifier with mirror selected to get a symmetrical shape.
In removing the ngons, I made new cuts and used a vert in the centre to act as a convergent point for each prong of the star. This was effective as each prong is a quad.
I felt the bottom prongs were a little too long, so I applied the FFD 4x4x4 modifier to bring up the bottom loosely, creating a more harmonic shape.
Complete Mobile:
For the final touches, I duplicated the nightlight's moon shape to add to the sleep motif of the mobile dangled over the protagonist's head at all times, followed by some corner chamfers for a little extra roundness.
Optimising Topology & Checking for Ngons:
Chamfering the mobile edges gave me ngons at the top which needed fixing.
I used the connect tool on the middle vert of each ngon area, giving me 2 quads per area, fixing the issue.
The crib beams could use more topology as components of the centrepiece.
The turbosmooth modifier gave me lots of loops to work with that followed the silhouette well.
The dot ring selection gave me every other loop as selections.
I deleted those loops which gave me something less dense, but much smoother and with more appropriate topology for a centrepiece than before.
In the process, I realised an ngon occurred at the top of the beam/
I added a central vert with the cut tool and collapsed them all to there to remove the ngon.
To remove the odd shape that formed and doesn't conform to the beam, I selected the loop and used the relax tool.
Some silly misclick probably occurred when I built this area of the hook.
All it took was deleting those faces.
And capping it!
I neglected the bottom faces of the mobile on the claws and hanger holder.
The nightlight had an ngon which was an easy fix, just needing a quick use of the connect tool.
I was able to utilise tri's to remove ngons on this part.
Gabriele Feedback:
It was made apparent that I have a habit of chamfering something too wide, making it too big for a larger, choppier curve rather than the small, subtle curve it's meant to achieve that keeps separate planes distinct while catching the light in a pleasant way.
He also removed some unnecessary loops that didn't affect the silhouette of my models, as demonstrated with the screenshots - mine is left, his is right.
For a final model before unwrapping, I spawned in a sphere, deleting the bottom face to extrude from the gap. This gave me a sphere with a handle.
Selecting the central horizontal loop, I created an inset to extrude from for some secondary detail.
Finally, I took Gabriele's advice and added a subtle chamfer to get some smooth edges with distinguished planes.
I used a very low poly cylinder to establish a plastic teddy eye, adding some loops at the top and moving it outward for a subtle roundness to the shape.
I chamfered the back edge so the curve of this shape could still be seen as it clips into the teddy's head.
lalalla
lalalla
Finally, I applied weighted normals to the shpae which gave me a smooth, plastic-esque eye.
Dev Log Evaluation:
This is the final result of my scene in 3Ds Max, all models complete, ngons checked and removed, and topology optimised.
My goals for week 5 are to apply smoothing groups, fully unwrap, and bake everything on Tuesday. I hope to start texturing then, too. By Friday, I want all of the basic texturing complete so I can bring everything into Unreal on week 6 and finish up any small texturing details. Another goal is to do the floorboard which will likely need one specific day allocated to it as I adjust the tiling texture on Designer and create its topology on Max in reference to that.
Last week I definitively finished the modelling stage in 3Ds Max, using all of my budget by optimising the topology and allocating it wisely. My aim for this session is to unwrap everything so that texturing can be started as soon as possible - I don't want to still be unwrapping by the end of the week.
Lecture Notes:
Prep before starting the Unreal scene: check your tri-count to ensure you're within budget, check for ngons using the "by numeric" tab in the selection dropdown menu, apply smoothing groups so edges aren't unnaturally faceted. X-form refers to transform data such as scale or rotate, use "Reset X-form" to prevent scaling issues when importing to Unreal. Ensure your pivot for each mesh is in an appropriate location so moving assets in Unreal isn't difficult, use "Affect Pivot Only" to change its position.
Naming conventions are a vital etiquette in setting up an Engine scene, the same as labelling layers in digital art. Mesh, SM_Mesh_Name. Texture, T_Texture_BC/AORM. Material, M_Material_Name. Material instance, MI_Material_Name.
If a single asset has multiple different materials in it, such as a glass of wine, it will need different material IDs. Place a sub-object in the material editor to represent the asset, then assign two separate materials to the selections of the different materials. Back in the normal viewport, assign separate material IDs in the right-most tab based on the asset areas. ID 1 for glass, ID 2 for wine.
To remove a material, type the command $.material=undefined.
On export, make sure "smoothing groups, tangents, prevent edge orientation" are all selected.
Unreal - Setting up a Level and Exploring Lighting:
On a blank project, create a level where the scene will be - either a basic level or an empty world level.
Delete the floor in the level and save it as L_Crib_Diorama.
Go to Project Settings in the Edit menu, find "maps and modes" and set this level as the editor startup and game default map for the sake of viewing convenience.
Find auto exposure in Project Settings and tick it off, as you want to create your own lighting, where this does it for you in a very neutral and bland way.
Also turn off static lighting as it works with the low poly versions of your asset, assuming the ambient occlusion rather than using your high poly bakes which removes a lot of information and tertiary detail.
Import each mesh, setting their location to 0 in the transform tab on the right to bring it to the centre of the scene.
In the top right of the viewport, you can find a button called "surface snapping" which allows you to project meshes onto the surface of another, this is great for placing assets like laptops and paper piles onto an office desk for example.
If you want to create a collection of assets grouped into one as a preset, you can add a blueprint in a miscellaneous folder. A blueprint is a container of data, so you can drag in and arrange whichever assets you desire and dupe it, changing it around slightly for variation. This is great for scenes with lots of repeated assets, such as a diner or a venue with lots of tables and seats.
Ensure meshes are set to static so phsyics aren't applied, causing them to move around against your desire.
When setting up lighting, the most popular method is 3 point lighting - a main light acting as the primary source of lighting highlighting the whole scene. a fill light which brightens any dark areas that are too obscured, and a rim light at the back which creates nice highlights on the edges of assets for dynamic shapes.
Delete the sky atmosphere, set the directional light intensity very low for the base lighting as this is very neutral and allows you to still see your scene before you create your custom lighting.
Add a post process volume widget, check "unbound" in the tab on the right, go to global settings and check on saturation, turning it to 0 so you can view your scene in greyscale. This is great for checking your values and ensuring lighting emphasis is placed correctly in your scene.
Also reduce skylight intensity.
Spot lights are great for directional lighting and establishing emphasis on certain objects, along with mimicking light bulbs blocked by shades around them like a lot of hanging lights.
You can adjust the indirect lighting intensity scale for how much you want light to bounce off of objects.
Enter the lighting's channels for filter, set the channel to 1, and do the same with a mesh to make light only affect that object due to their shared channel.
Turn volumetric scattering all the way down to remove the fog/glow stemming from a light source.
In the right tab search of post proces volume, find vignette to add one to your scene for a gradient around the edges.
Turn the viewport to cinematic to remove the icons of your lighting etc, enter the grid button in the top right of the viewport and change it to 3x3. This is a great way to take effective screenshots as you use the rule of thirds, as we do in traditional art making use of composition.
Create a cinematic to maintain the vignette as you move around in the scene.
Right click the camera, transform and lock so the view you made with it isn't changed.
In the high res screenshot tab, increase the screenshot size multiplier to capture area around your viewport if it's too small.
Enter the lit mode dropdown and find buffer visualisation to view how all channels look, such as grayscale, roughness/metal/AORM, etc.
In lit mode, optimisation, light intensity, you can view how lighting affects the scene on a colour scale. Our goal is to stay in the green range with a bit of red, but purple is something to avoid as it's likely too extreme and obscured.
My first task of the day was applying smoothing groups to each asset so no unnatural faceting occurred - the combination of the smooth -> autosmooth, and weighted normals modifiers helped with speeding up this process.
The first thing I unwrapped was the centrepiece, the crib. Due to the open edges on the sides hidden by the beams, I already had an unwrap half-established. I needed to add seams where the top face was, separating it from the walls, and on each separate face of the extruded areas. From here, I peeled each face easily and sorted them in the UV editor.
lit a glorified box
The mattress is essentially a glorified box with some chamfers on the corners, so the unwrap basically there for me from the beginning. I only had to add a seam to the top edge as the bottom is empty, and then seams on the corners, peeling it as a normal cube.
For the cylindrical beam, I added a seam on the top edge due to its roundness, followed by two vertical seams to split the beam into two long strips when peeling. Once again, I ommitted a bottom face to save budget, so a seam was applied to that open end.
Another simple box unwrap for the wooden crib base.
lalaala
lalaala
For the mobile's base, I peeled the top face that's hidden, the loop that separates where the claws extrude from, and the vertical corners.
For the claws, I added seams to the corners, the loop of the bottom face, and to each loop that has an extruded part.
The claw faces were identical, I toggled angle snap and moved the verts onto the other, stacking the two faces together.
The hanger of the mobile was another case of adding seams to the corners and edges that separate distinct faces.
lalaala
Due to the shell modifier I added to this spline, I had to unwrap the inside of this hook as well.. once the seams were added to each edge of the flat faces with two running down the whole hook, I peeled it all. Since the inside won't be seen, I made those very small to save space on the sheet.
The chain is essentially a modified primitive of a torus, so the unwrap seams were automatically applied, I just had to peel the faces.
Unwrapping the string was an interesting process due to how small and thin it was.. I even made an origami swan somehow when I peeled it wrong??
Ultimately it took peeling the top and bottom faces of the cylinder itself, adding seams to each extruded part to peel the circumference of the cylinder, then adding seams to all the vertical edges of the strings and their bottom face at the end.
For the baby rattle, I added a seam to the top and bottom loop that separates the round part with the tri's, then loops on the extruded middle area, along with seams on each distinct edge on the stick part. Next, I added two vertical seams to split each peel in half
The teddy was a simple case of adding a seam going around the whole limb to split it into two, and repeating this process for each one.
Sheet 1 - Crib and Mobile:
Sheet 2 - Toys, Rug and Blanket:
Dev Log Evaluation:
Since unwrapping is now complete, I can enter the texturing stage so soon! I look forward to this and have lots of plans for how I'll approach each prop on Painter/Designer. I organised sheet 1 by allocating space to the crib as the largest piece in the set, the beams next, and then the mobile. I could get away with scaling down the mattress and base because they're barely seen; sheet 2 has the rug and blanket as the largest pieces, with the toys a lot smaller and especially the hanging parts on the mobile which are even smaller.
For the next session, I aim to assign all material IDs accordingly, and explode the scene in a new file. Once that is done, I'll export and bake everything, focusing on texturing the crib as the biggest component with the most detail. If I can complete all that in the Friday session, I'd like to texture some smaller pieces like the block toys.
In the Friday session, I had the primary focus of baking and starting the texturing, honing in on the crib as the centrepiece. This meant I'd be entering Substance Painter, which is always fun.
To start, I ensured everything in my exploded scene had the correct naming conventions for baking and exported the high and low poly assets to bake together.
I was experiencing some issues in baking with the side wall of the crib, where this strange noise appeared. My assumption was because I didn't cap the open end of the side wall in Zbrush like I did for the back, those gaps caused the noise.
Ultimately, closing the gap and re-exporting the Zbrush mesh didn't get rid of the noise, but when I re-decimated and exported it, it imported into 3Ds Max with a modifier called "Open Subdiv" and I've no clue why, but it fixed the issue so hooray?
As you can see here, the baked went fine after that debaucle - the rest of the meshes baked fine anyway, so I was able to quickly jump into texturing.
I started by adding a cream fill layer to depict the base paint coat on this crib, followed by a deep brown with a black mask, that I used with a paint layer to reveal the chipped parts of the crib and the scratches.
With those blocked in, the crib looked very toon-like, almost like the Telltale studio style because of the look of cel-shading. It was cool, but not my intention.
Here are all the crib parts textured with the first step of the process I showed just earlier.
Dev Log Evaluation:
I believe I still have a lot to tackle texturing-wise - I'm only on the first step of painting the crib and as the main part, it needs much more detail.
From there, the smaller props like toys won't take so long due to their smaller size and simplicity in design, but it's important I get their material read correct. The floor and (maybe) the rug will be complete in Designer, with the final steps being to build my scene in Unreal.
It's important I use my time wisely so everything is done within the deadline.
I used a soft concrete brush to create a vertical implication of wood planks to bring out the white highlights of the paint more.
This step helped integrate the solid brown chipped areas more with smoother transitions and tonal shifts.
Next, I used a dirt spot brush as an eraser to create softer transitions in the wood chips to eliminate the cartoon appearance, this made the chipped areas feel much more natural.
I added some hue variation with a soft brush at a low opacity just so the colours didn't feel so linear - this adds some realism too, as we used hue shifts in our material study for wood.
Feedback:
(This is an example of how I could produce my crib texture made by my lecturers, using smart materials.)
My textures were entirely lacking a roughness map, which would be necessary for my aged, chipped wood.
It was greatly advised that I use smart materials/generators as these lay the groundwork for you, giving you a foundation akin to your desired texture to work with and adjust independently. My lecturers showed me some smart mats in the edgewear range that gave me some great implication of neglect and age in the crib. It also added some grainy noise that played into the eerie concept of my diorama.
Reference Little Nightmares for my PBR textures due to their semi-stylised textures that feature old wood, along with the concept coinciding with mine somewhat. Maybe even reference Little Big Planet for the hand-stitched textures of sack boy and other crafty assets in the game, they'd be helpful for my teddies.
In response to my query on the nightlight, I was advised to add an emissive channel to the moon of my nightlight as this gives guidance to Engine on where it will make the light glow.
Another neat trick I was shown during feedback was how I could create distinction between materials within the crib using roughness maps.
If I placed a negative value on the roughness map of the paint, it would earn some gloss and reflection, whereas putting a positive value on the brown wooded area of the crib's roughness map, it would become matte.
Therefore, when light shone on the crib, only the paint reflected strongly which added a lovely sense of plausibility to my textures.
(Before - you can see the brown getting washed out due to a lack of roughness.)
(After - the reflection on the paint is visible now, with the chipped brown wood remaining a deep value due to the absorption of light.)
addded height to paint streaks map so it looks like dried layered paint
Applying what I learned from my feedback, I had an independent attempt at using smart materials to build up a believable PBR texture. I made sure to frequently check my references, and started with the cream base.
Little Nightmares Master References
Ole Josefsen - Artstation
Next, I started painting the design on the back of the crib, using a black sheep as the main part to strengthen the narrative with visual storytelling; a black sheep represents being outcast, which may be felt by the child as their nightmarish manifestations in-game are perhaps caused by neglect or abuse he faces, leading to a lack of belonging in his family, therefore being a black sheep.
I also included the moon's visual motif to strengthen the idea of the protagonist's yearning for sleep!
I placed a height channel on each paint layer to give some volume to the paint, as if it were laid on thick and dried that way, followed by the dirt spot brush to erase the design slightly, creating an impression of a rough application and a faded appearance.
This is the end result of the crib's texturing which I'm much happier with - not to mention how much more efficient this method of smart mats was! I may add some heavier edgewear to lean into the stylised nature, but I'll see next session.
As some crib beams were still in Max, I put my crib's texturing process into a folder and right clicked to save it as a smart material, so I can reapply it to anything with the same properties!
Dev Log Evaluation:
I started this session feeling a little concerned for how time consuming texturing was, but the formative feedback gave me so much relief in learning of utilising smart mats and generators to speed up the process. Of course I still did my own customisation and tweaking after, but I had a great result in half the time!
All I need is to follow the same process for the rest of my props, bake the low polys onto themselves and texture those, then create the tiling floor and (maybe) rug in Designer, and then import to Engine to start the lighting and final render!
My aim for the Friday lesson is to texture the teddy bear and bring in the low poly only parts, baking those. Next, I'll texture all the toys which ideally won't take long as the harder part is just applying letters to the alphabet cubes, followed by the blanket. I don't imagine I'll start my tiling texture this week as we have a separate session following game prod so that makes my goal to FINISH texturing in Painter.
During my second session of formative feedback, Jesse advised I tackle my tiling texture to get it out of the way instead of leaving it til next week so my goal was to complete that this session.
Gabriele Feedback:
I could lessen the noise and damage on the crib walls if I wanted because it's a little intense, although it does make sense for the horror theme.
I had an enquiry on the teddy bear, since I wanted two separate textures for it on the same Painter file to maintain the two texture sheet requirements. He said I can do my separate texturing in a new folder and only export the base colour instead of the whole texture sheet so I can add this node in Unreal's material editor to a new material with the same normal/AORM.
My paper decal idea is a good idea, quick to make, and meets the requirement. This is good to hear as I don't want to overcomplicate it and waste time with only a week left.
The UV sheet could be a little more optimised, straightening some edges so everything can be packed neater without diagonal concerns. Anything that isn't visible can be scaled down a lot to give more texture space to other assets that will be seen. However, it's not a TERRIBLE unwrap so I should keep this note for my future projects rather than changing anything now.
Jesse came over for feedback and helped me start my tiling texture; we started with a brick pattern, elongating the rectangles with a transformation 2D node and adjusting the normals with a bevel to give the dents some depth.
Next, we explored some noise nodes to apply to the pattern that warped horizontally, creating that subtle swirly wood texture.
lalala
lalala
We then added a node for some value variation in the planks and created the uniform colour with two primary tones so it's not one flat colour.
Finally, we plugged in the roughness node with a lack of black so that it didn't appear glossy, appending everything to the RGBA merge node and exporting the tiling texture with the result shown above.
This is the initial result of the texture on a cube in Max.
I unwrapped and placed each plane according to the plank pattern, but decided it was lacking and needed some variation in the planks at the edges.
Using the swift loop tool and extruding faces, I had a better result.
I used the cut tool to remove ngons and got to re-unwrapping.
This is the result.
Jesse gave the suggestion of bevelling the edges for a softer transition and diveting the middle for some depth, and I would've loved to do it if I didn't have time and budget concerns..
He also helped me setup my decals in Engine before I painted them.
This is the node setup in the decal's material editor. We started with a coordinate node, with a node that has two outputs. We used this to create the X transform data in one slot, using a constant node with multiply and add to create a zoom and a move parameter, once converted to parameters. From here, we duplicated this sequence and connected it to the other node output to get our Y transform data and grabbed an append node to combine these into one and connect them to the UV of the decal sheet, which was plugged in as an alpha/decal would be.
When I came back to Painter, I adjusted the paint layers of the painted sheep pattern and changed the roughness value to be positive since it didn't make sense to be glossy and new - this paint is aged.
For the cloth's base, I grabbed a linen pattern and added a cloth fold smart material to show this bed has been shuffled around in, the child using it clearly struggles to sleep which follows the narrative.
In adding a smart material to the mattress, the result was super intense. I found that the setting for the fibres pattern was causing this craziness so I removed it altogether.
I found an aged plastic smart material to use for the mobile - its subtle scratches were great for this scene.
Its whole roughness felt super similar when I wanted some semblance of wear.
I added a new paint layer and used a brush on the corners to give it more sheen, as those corners have edgewear which is shinier thanks to the plastic texture, whereas it's dulled on the flat planes.
I made sure this change was visible through the roughness channel, where the edges were now darker.
lalala
After adjusting the mobile, I made my own smart material out of it so it could be applied to other plastic objects in the scene.
Using this new custom smart material, I entered the wear layer and erased a lot of it in the paint layer so it comes across as a smoother, lightweight plastic that can be played with rather than a durable upholder like the mobile is. I also reduced the noise intensity with the global blur scale.
For the wood base of this mobile's ring, I used the material "Wood ship hull Nordic".
I rescaled the UV transformation parameters to fit the wood ring better and be subtler, following the shape better.
Next, I adjusted the base colour to be lighter and less saturated.
I created a smart material out of what I just created on the mobile ring and applied it to the stack toy.
I used a "Fabric stretch sci-fi" material for the rubber ball because I saw potential for it to emulate the rubber pattern created for the sake of friction of rubber balls so this was a good base.
I rescaled the hexagonal pattern and increased the global blur so it wasn't as defined of a pattern on the ball, less of a distinct material and more of a part of the object.
For the crayon, I made the base smooth and shiny to emulate the wax of crayons, with a new paint layer for the paper wrap which was much rougher. I added more paint layers to create the pattern on the paper wrap.
I reused the smart material for wood I made when texturing the crib for other wooden toys.
I started with a stitched fabric pattern for the blanket.
I layered it with another kind of stitch to get that rough, fuzzy blanket texture that feels like the kind that makes you itchy.
I lowered the opacity of these patterns and added a noise layer to vary the values of it, finally making the base colours pink which I can adjust later if I want.
I applied the newer smart material for wood I made when texturing the mobile ring to the lettered cubes.
They worked well, but felt pretty plain for cubes that are played with.
I added a new layer and painted in some edgewear with a mold brush for a rough look.
To create this effect, I used black masks, colour and height on paint layer.
On a new coloured fill layer with added height, I used the face select tool to pick out a certain face on the UV sheet.
I then added a paint layer to this black mask and erased a square in the middle and rounded the edges off slightly. Finally, I painted in letters of my choice.
I repeated this process with letters I could make relevant words from in my engine scene by duplicating and rearranging.
To texture my nightlight, I needed to add an emissive channel with the plus button in the texture set settings. I made a yellow base colour for the moon, followed by some edgewear using a smart mask, and then painted in some areas on a new layer with emissive active to indicate where it'll glow in Engine.
For the teddy, I started with a base colour with a dirt smart mask attached for a rough, grainy base. I darkened this base colour and used a new fill layer with a black mask to get the lighter muzzle, belly and paws.
I masked out each limb and applied a fabric smart mask that looks like knitting, adjusting the UV parameters by rotating so it was consistent across the whole body. Finally, I added a darker fill layer and painted around the edges where the light and dark collide for a smoother transition and an implication of age.
lalala
lalala
lalala
lalala
With that, my textures were mostly complete! The screenshot shows them all done, but the rug isn't done yet.
From here, I exported the textures in Painter to prepare for Engine.
To create a fluffy texture for my rug, I used Designer rather than Painter as I can utilise height maps better here. I started with a noise node as a base, using cross section and transformation 2D nodes to turn it into a squiggle. Next, I plugged it into a tile sampler as the base stroke for a tiling texture.
From here, Jesse helped me take this texture further by altering certain characteristics like the normals, which utilised a new noise texture blended into it. The roughness was a direct result of this mixed noise, and the height used the same noise blurred with another to give implications of lower parts where the carpet had been stepped on. Finally, I plugged this all into the RGBA merge and output node. I ticked off base colour since I accounted for that in Painter with a rainbow pattern, so only normal, roughness, and height needed to be exported.
When importing the Designer texture for the rug into Engine, I plugged everything into its usual spots, but next got a new node out known as "POM", or Parallax Occlusion Mapping. Plugging new nodes in like this with Jesse's help gave an effect to the rug which displaced the height map and essentially spawned new geometry using a camera trick - it made it look like parts of the rug went up and down in a fuzzy way.
I referred to the template decal sheet I made, when testing the decal properties in Engine, to paint my actual decal. I was doing paper drawings made by the young protagonist. I used a concrete brush which had that cloudy pencil effect I desired and was able to use in creating a gradient for the paper, and for the drawings themselves.
With my Painter textures imported to Engine, I got to work plugging them into materials. Base colour into base colour, normal into normal, AORM's R into ambient occlusion, B into metallic, and G into roughness. I also added nodes for hueshift and desaturation with multiply nodes attached and converted those to parameters to make material instances where I could adjust the saturation and hue of the sheet.
Once I set up the crib assets in my Engine scene, I tried out the material instance by shifting the hue of the beams.
Eventually, I laid all the assets out to easily duplicate.
At this point, it was time to setup lighting; the emissive for the night light was already setup from Painter so I only had to add a point light to create a surrounding glow for it. The object itself is luminous, but it needs to affect the surroundings too with a warm point light.
The exponential fog was set to a deep blue to depict the setting being night time, with a directional rim light at the back at a cool, light blue to dynamically highlight the crib's silhouette and give the impression of the moonlight through a window.
With the lighting done, I just had to duplicate some assets and change their colours!
Easter egg of my cats!
I set the plastic eye's roughness to incredibly low, they're so reflective, I love it.
Post Mortem:
This project was super fun, I had a great time doing it! Being introduced to Designer was amazing and I really look forward to using it more independently and creating my own procedurally generated textures. Using smart masks, generators and materials to create plausible PBR textures was really interesting and felt like stepping into the next level of 3D modelling and texturing. You can achieve such realistic textures with so little effort, it's incredible. That being said, we did of course customise them enough to make them our own, like how I created my own smart materials by combing and mixing pre-existing ones.
I believe I've come far in 3D modelling, creating my own models feels more natural now and I don't feel like I'm breaking a million rules just trying to extrude a face. I didn't struggle in creating any models, even unwrapping was a seamless process! I'm proud of the range of software I used for this project, 3Ds Max, Designer, Painter, and Unreal being the necessary ones but I used Designer more than once and imported models to Zbrush to create high poly versions of my models for extra detail. Learning the PBR texture logic was a step into a whole new world and very unfamiliar, but I had a great time learning and think I succeeded in creating semi-realistic wood using generators that reflects with the use of maps, such as roughness where I had more roughness in the exposed inner wood, and less on the painted parts which also have added height to show where layers of paint dried.
Narratively speaking, I think it does come across well - the dual concept is well reflected in the two major sides of the diorama with the slumped over, crayon pierced teddy, and the cozier front side well-lit by the night light. I used the lettered blocks to spell words that reinforce these concepts with words like "yay" and "why". I added visual motifs like the black sheep to represent the protagonist's feeling of not belonging too!
That being said, I do feel I have many areas to improve on. My main issue is optimisation; I had a few points of feedback in the modelling stage to remove certain faces because they weren't seen, or using the collapse tool to merge a collection of verts into one. I also learned to remove unnecessary edges that won't affect the silhouette of an object. I think a point I can improve on is doing more. I believe we all want to be as optimal as possible to fit the budget, but I know I could've modelled a few more things, like at least some creepy emissive eyes beneath the bed that peek out, or pillows to fill up the bed space as that felt very empty to me - although it does spin into the narrative of the protagonist's potential neglect which is reflected in his empty, cold bed. I created the high poly version of the beams when the models were still very low poly, so the high poly reflects and looks a little oddly faceted. It wasn't a HUGE issue as it looks somewhat like carved wood, but I'll be mindful to ensure I have a final version of my low poly to take into Zbrush before sculpting anything to bake.
Overall, it was a huge learning curve stepping into PBR texturing and having a higher budget, I had to adopt a new mindset for it but it also felt incredible to make such bespoke scenes like this, and I do feel proud of this project! I'm super excited to step into next block and model the beast that is my digital project.