For the start of block 2, we were introduced to our new project brief; this encapsulates the creation of a dungeon-themed environment made with a variety of 3D programs. The majority of us are reusing concepts made in digital's block 1 assignment, as am I; despite having a pre-established concept, research remains necessary so my project is well planned in terms of timing and understanding my goals. To begin this project, I'll create my plans that encompass my asset list, schedule throughout the 7 weeks, and assigning workflows so I have a thorough understanding of how to approach my use of time in tackling this assignment.
Project Specifications:
30,000 tri's for budget.
Scale: 8x8 meters.
1024px density per meter.
2048px maximum for texture maps.
Minimum of 3 unique tiling textures.
At least 1 UE5 decal.
Significant Dates:
15th December - 4th January, 3 weeks of Christmas break.
Start date: 25th November (Week 9)
Week 6: Feedback, 20-23rd January.
Week 7: Submission, 30th January.
Asset List:
Tiling:
Normal Rock
Dirtier Rock
Frosted Rock
Ice
Snow
Instances:
Stairs
Scaffolding Bars
Rails
Icicles
Snow Clumps
Focal Assets:
Big Fish
Desk
Small Fish
Scaffolding Platform
Flood Light
Smaller Assets:
Mop
Bucket
Monitors
Control Panel
Geiger Counter
Computing Tech
Cables
Decals:
Paper Piles
Scrappy Scientist Notes
Printed Documents of Readings (e.g., evidence of creature's pulse)
Foundational Pieces:
Rock Wall
Rock Floor
Ice Wall
Sub-Mood Boards from digital project.
Top left: IceCave by Cui Xiaoyu (3D shaders)
Bottom left: Icecrown Citadel by Peter Lee
Bottom middle: Ice Cave by Jakub Rozalski
Right: Frozen in Ice by Jenn Ravenna
Artist Interpretations:
These are the mood-boards I created in developing this concept for digital, extracting examples of this environment in professional games and film, along with other artist's digital renditions of this concept.
I will be creating more mood boards within this block that delve into the materials included in my scene so I can understand their surface properties when developing them in a PBR style, this will allow them to be plausible and progress my project.
Blog Task 1:
Blog task 1 coincided with our work within the lesson in creating an action plan to schedule our workflow throughout the block - however we were tasked with only fully writing up the first 3 weeks. This is likely due to the fact that we can't predict what stage we're guaranteed to be at past week 3 so we need a solid plan to start it, coming back to the second half once our goals for week 1-3 were complete. The 3 week Christmas break likely plays a part too, as we can use that time to plan the second half or catch up where we fell behind.
I used the paper sheet we were given to write down my initial plans in the weekly schedule up to week 3, then refining it on the blog here; week 1 will consist of the idea generation, reference gathering and primitive blockouts. Next, the completion of the blockout, and all high poly sculpting will be done in week 2. Finally, week 3 consists of the translation of the high polys from Zbrush to Max as they're retopologised and the developed models solely in Max are complete.
Although we haven't touched on the second half of the block, I have a vague plan for what I'll do, with unwrapping and baking done in week 4, texturing in week 5 & 6, with the Unreal scene heavily developed in week 6 & 7. I should note that I will be entering Unreal earlier to slowly develop it, but most of its attention will be distributed to the last 2 weeks once the texturing is done for everything else.
Week 1:
Monday: N/A
Tuesday: Work on the action plan, creating an asset list amd compile past mood boards.
Wednesday: N/A (Trad)
Thursday: N/A (Digital)
Friday: Finish mood board with material references and start the blockout in 3Ds Max.
Week 2:
Monday: Blockout development.
Tuesday: Finish blockout, start sculpting in Zbrush.
Wednesday: Blog task 2.
Thursday: N/A (Digital)
Friday: Finish big fish in Zbrush, start small fish.
Week 3:
Monday: Develop 3Ds Max models.
Tuesday: Finish small fish in Zbrush, start retopology.
Wednesday: Finish retopology.
Thursday: N/A (Digital)
Friday: Finalise Max models and scene.
Dev Log Evaluation:
We had a good start to this project with our task of scheduling our workflow throughout the 7 weeks of this project, organising and visualising what we need to do. Making an asset list also helped to clarify what parts were necessary to this project so I feel confident going forward in knowing what I need to do next; I will develop my mood boards in the Friday session and then start the 3D blockout in Max.
For this session, I have a goal of developing my mood boards and starting my blockout so I can beginning modelling in Max and creating my high polys in Zbrush.
lalala
I had an initial idea of how I'd approach this project, with the ice done mostly using an Engine shader and perhaps a frosty tiling texture to vertex paint ontop. I imagined I could create an illusion with the creature in the ice, omitting its backside to save budget, especially since it's boxed in and not viewable from behind - however' I had concerns about this breaking the scale requirements of 8x8x8m. I'd either be exceeding these parameters or compensating for it by scaling down the room itself to accommodate for the walls behind the ice.
I made this super rough blockout to show Gabriele when I was receiving feedback, and he explained how the extra space at the back is fine regardless of our limitations since this rule is mostly to stop people overscaling and creating something too ambitious to manage in 7 weeks. Another point to add is that the space at the back can be even smaller if I desire since I'm cutting off the back half of the creature.
I blocked in an elongated sphere to represent the creature, but he showed me how I can simply use a plane with some adjusted and extruded topology to represent it since only the front face is seen, those empty sides hidden by the surrounding walls. Ultimately, I think I'll use retopology over a high poly model, only adding topology where it's necessary to imply the silhouette and important areas like the eye which will extrude - but it won't be much denser budget-wise compared to the plane technique.
Jeff "Hawke" Ravatt (2025) Volumetric Ice Shader in UE5. Available at ArtStation - Volumetric Ice Shader in UE5, accessed November 2025.
In researching UE5 shaders, I found this one by technical artist Jeff Ravatt, representing translucent ice. He utilised node techniques and features within Engine to emulate the look of refraction and translucency to simulate a sense of depth within the ice, along with distortion that occurs on the surface.
This is a great shader for me to reference as I'll be creating an ice texture within Engine using shaders too, so learning how Jeff created this will help me greatly. I will apply my custom shader to a simple wall mesh, and perhaps complement its translucency with a touch of extra opacity using a frosty tiling texture made in Designer, applied with vertex painting in Engine.
With a really primitive blockout created, I got to building up my references that focused on materials and surface properties since I need to understand their realistic characteristics to successfully emulate them in PBR texturing even if I'm not doing hyper-realism - having successful material reads will bring my scene so much further as viewers thoroughly understand what they're looking at without guidance.
Since a plethora of icicles already feature in the digital concept art, it was important I have references of them - especially since I'll be instancing them and complementing the room's natural form with icicles in stalagmite/stalactite placement.
The wall and floor beside the ice wall will be rocky like a standard cave, so these rock surface textures were effective inclusions, along with the frosted rock section which I included for the sake of transitional textures since pure rock and translucent ice next to each other feel extreme and unnatural - this would be a good middle ground to blend the two.
The cracked ice is good for when I reference the shader I found, and make personal changes in accordance to these photos with richer saturation.
lalala
lalala
lalala
lalala
This is my super primitive blockout with all the ideal dimensions that match my digital concept - I used an 8m transparent cube to ensure the blockout fit in the correct parameters, although the back part extended past but Gabriele approved of that since it doesn't serve anything than to add a backdrop to the fish's enclosure in ice. On Monday, I plan to start adding the elements of my scene into this blockout with correct scale, adding the to the silhouette too, so it feels more natural and organic like a glacial cave would be.
Dev Log Evaluation:
With my references all compiled and the mood board complete, I had half of my goals from my action plan complete which left me feeling confident as having a variety of images to refer to in the creative process is vital to creating accurate, plausible textures. I also have a very basic blockout which definitely could do with some development, but is a good base template for the primitive blockout for now as my plan is to develop that on Monday.
With this session done, Jesse came over for feedback and checked out my concept and blockout; his main feedback was to add narrative elements to the scene as the scientific operation feels pretty unspecified at the moment. There are signs of human presence, but it doesn't feel personalised - creating the idea of a character or evidence of their personal mark on this place will bring the narrative intrigue forward. I could add a coffee cup, maker, and beans lying around to show he's a frantic, sleepless worker and a nameplate or lanyard to give players an idea of who this person is, along with some glasses or a lab coat strewn on the chair for substance for the players to work with in imagining this guy. The last advice I got was making a little block to scale of the average human so that all the environmental details are in correct scale to a human who would be exploring the place, which I did here.
In the last session, I blocked out the scale and distinct walls/floor of the environment, so I chose to start adding environmental details to this blockout in simple form to represent the major components in my scene, filling out the area.
As the biggest object in the room (aside from the huge creature), I started with the scaffolding platform as that'd determine the scale of everything else and start framing the room, simply using a thin box with some extrusions at angles to get this shape.
The stairs were simple to approach thanks to 3Ds Max's range of starting objects - instead of using standard primitives, I entered the stairs section of the object maker dropdown and selected a straight stair, adding railings to it.
lalala
From here, I selected a few of the bottom stairs and deleted them entirely, leaving me with an amount that's more realistic to climb at about 1 meter high, also dragging the ends of the railings up to meet the new stair amount.
(Connected to the scaffolding)
I created safety bars atop the platform with some simple boxes, bridging them for handlebars.
They felt pretty low when compared to my human scale checker, so I lifted it up which felt much more plausible.
lalala
I duplicated the railings to surround the scaffolding for safety purposes, next working on smaller assets that still act as key components to the scene such as the flood light, chunk of ice holding the smaller creature, and monitors.
The monitors were simple cubes with an inset added to represent the screen, pushed back a little for depth. The ice chunk and small icicles are cylinders with 5 sides, extruded at a smaller scale each time, and twisted for a more organic form. I also added a mop and bucket, both being cylinders with custom extrusions to match their form. I also cutoff half of a torus, capping the ends to represent the handle.
To get this custom bar shape, I used elongated cubes for the outer parts. For the inner part with bars connecting everything, I used a cube with two vertical loops, spreading them out and scaling down the two outmost faces which caused the corners to slope. From here, I selected these sloped faces and extruded them out to connect to the other bars.
Finally, I duplicated them and rescaled to fit the scaffolding in certain areas - although, I won't need them to be duplicated in the later stage of modelling as these can be instanced, saving budget.
To give the desk leg room for the scientists working in this site, I created an inset on the larger front face, removing the bottom inner edge. Next, I cut new lines from the corners of the inset, going straight down and deleting the previous edges. From here, I selected these new edges and straightened them using the edge constraint, normalizing them on the Y-axis. Finally, I selected the inner face from the inset and extruded it backwards to create the space.
Dev Log Evaluation:
This is the result of my work this session, I did stay home due to illness but was able to progress somewhat! Most of the blockout is complete, everything is pretty primitive looking still but the majority of the assets are implemented. The remaining assets include:
Chair
Geiger Counter
Computing Tech
Cables
Paper Decal Block-in
From here, I'll start developing the models with more detail such as chamfering edges, adjusting their silhouettes or just increasing their topology so I have more to work with in the texturing stage. Once the smaller models have more detail, I'll start experimenting with the surrounding walls and cutting them up, using the soft selection tool too, to get more organic shapes that resemble rock and ice more. I hope to get this part complete by the end of the week so I can focus on my high polys in Zbrush for week 3 before we break up for Christmas.
Blog Task 2:
For this blog task, we've been asked to find and analyse an environment from a show, game, or movie of our choice - we're focused on considering the distribution of assets in the mindset of environment creation, such as repeating assets to save budget and time, where certain textures can be applied like tileables or trim sheets, and composition for gameplay and narrative's sake.
I chose the Arctic Peninsula map from the multiplayer hero shooter Overwatch 2 due to its coinciding visual aspects to my project, and for how I could grab wide shots and closeups of assets to analyse and reference. Its combination of industrial sci-fi procedures and an interior ice region alleviate my ability to visualise my own project and even extract ideas for inspiration.
Here is my edit of a screenshot, highlighting different assets and areas that represent the questions we've been asked for the task.
Red highlighted stairs - this asset is featured a few times and was definitely instanced, its placement helps build verticality on the flooring and allow the walkable platform to remain primitive and low-poly, with its geometric texture tiling easier.
Orange highlighted floor - it may not be, but the floor struck me as a tiling texture that could be made in Designer with basic square patterns. It has a buildup of snow and frost, which could be done intricately in Designer or vertex painted in with a separate snowy tiling texture.
Yellow highlighted pillars - going around the map, I spotted these pillars repeatedly which suggest they were built as one, and instanced with decent distance to imply a sense of structural integrity with this underground worksite that ensures the walls of ice won't collapse atop the excavated area.
Small green wall - its hard to spot based on distance but in the non-edited photo, you can see the same pattern repeated. Up close, it did have geometry so this part could be built as a square-shaped model that appears as reinforcement. Repeating these in a row is a good method of varying the walls design to feel more complex, being added in a simple modular fashion.
Purple bars - these low fences act as tertiary detail with another implied sense of safety consideration on this worksite, although very low and prone to tripping on which could suggest a sense of instability in this overtaken cave. These can be placed on the edges of any structural surface to add to their detail complexity if looking bare.
L-corner walls - these walls make up the guarding spaces on the map, granting cover to players. Environmentally, they act as blockades to prevent falling from a height. Building walls like this L one, and a straight one could be used and instanced in conjunction to build the interior of a building.
It's important to mention that trim sheets are certainly compatible with this level, using a lot of metal in blocky form, such as pillars, walls, and bars. Having the variation of toned metal, along with some worn forms and more reflective types would be a perfect plan on a trim sheet for this area, applying it to most metal assets and using the iterated forms to prevent the immersion breaking. I plan to use this technique for my scene, due to the large steel scaffolding platform.
Before stepping into compositional analysis, I have one last mention for assets. The large cylindrical container and scissor lift are clear bespoke models that wouldn't be instanced, acting as primary visual parts in this area. The former is a narrative point, showing that the workstation here is based on extracting substances in this glacial cave to store in the colossal container which trumps most other assets in size and detail. The latter isn't as unique, but plays a key part in the playable area as it interacts with the arena, elevating a platform key to positioning for the players. This could've been another pillar like the one I highlighted previously, but switching it up for a scissor lift shows how the workers in this large environment needed modes of transport and manoeuvre to complete their jobs.
In terms of visual narrative and using composition to guide players through the environment, this map makes it apparent what the major arena is with a clearing of icy rocks to bring in sunlight directly onto the contestion point. If a player is unfamiliar with the map, and somehow can't spot the diegetic guiding info, they can simply follow the light that actively highlights areas of importance.
This subtle use of lighting to guide players is reinforced elsewhere in the map, not just the main arena - in leaving the spawn, you face multiple corridors of ice and could get overwhelmed, perceiving it as a maze. However, this is rectified with small industrial flood lights cohesive with the surroundings, that direct the players with paths of light, as seen above.
lalalala
It's evident in this scene already that the colour scheme used is blue, gray, and orange. Blue surrounds the area, representing the ice and frosty terrain that workers built around, who used strong and durable metals of desaturated, grey tones, with an accent of orange.
The use of blue here doesn't have a strong narrative implication here, although its vast inclusion in the scene influences nearby assets like metal reflections and bounce light, with a rich cerulean atmosphere. The greys of the metal used to build this workspace strengthen the idea of this being an industrial station consisting of dull procedures that reflect in the muted tone of the scaffolding, also used as a supporting role that boosts the visual allure of the vibrant orange platforms due to their steep contrast in saturation.
A complementary colour scheme was already established on first glance with the blue and orange littering the scene, featuring a purpose aside from aesthetics. This saturated, key accent of orange in the scene compounded with the direct moonlight strengthens its visual emphasis through saturation and contrast, where the rest of the scene is locally deeper in value and less illuminated. Small floodlights dot the scene to guide the player, but no area is as heavily highlighted as this main arena of orange tones. This orange strengthens the narrative too, given its use in the real world in hazardous work environments due to its natural contrast against scenes with earthy and muted tones in natural environments, keeping workers alert and aware of their surroundings. This demonstrates this scene's need for and implementation of safety procedures, further communicating its purpose of excavating and professional construction.
I believe I could use vertex painting like in this area of the practice range to suggest a walkable path for players, or evidence of previous human life in my scene.
Extra Tiling Details:
A gravelly stone floor tiling texture was likely used in conjunction with a snow tileable here, vertex painting between the two for a smooth transition.
Decals:
These screenshots show the use of deferred decals, flat images projected onto planes to implement tertiary detail, you can even see where the wall beneath it has dented the poster decal! These examples alleviate the narrative of this scene, with evidence of drilling procedures and safety warnings.
This area in the practice range uses deferred decals too, although I want to extract this idea for my project. Since the world of Overwatch is technically advanced and mine isn't as much, I aim to maintain the sci-fi details of the control panels on the computer with an abundance of buttons and dials, while making them physical rather than techno projections. My method will be to use mesh decals, creating a sheet with buttons, dials, and patterns such as screws and hexagons to communicate the idea of hardware with a less futuristic feel.
This incredible example from senior principal artist Josh Van Zuylen shows how a mesh decal can be done to depict this detailed sci-fi, slightly rustic sheet of hardware. I'll be using this as a master reference for my control panel decal, going through a similar process to create that retro science tech look.
Reference: Josh Van Zuylen (2021) StarCitizen High-tech Mesh Decal. Available at: https://www.artstation.com/artwork/eJlNV3, accessed December 2025.
Extras:
These are some extra screenshots I grabbed of assets closeup, since my scene is a large cave, I want to fill it up with smaller assets so the large parts don't have too much empty space between them so I achieve a natural middle ground. Crates and barrels can be repeated, along with smaller, built-in light sources that suggest a pathway if the primary floodlight highlighting the monster goes out. Speaking of, I found this floodlight in the map which I can use to reference!
Following this session, we will have 1 week left at uni to work on our projects before going home for Christmas break - I know I can do 3Ds Max and Engine at home, but I needed to focus on Zbrush from here on out so it isn't a concern while I'm at home, unable to do it and delaying its completion. I have the goal of starting and finishing the big and little fish I want to sculpt by the end of next week, meaning I'll start on it now.
Lecture Notes:
Turbosmooth on a cube makes a better, more efficient sphere for editing loops rather than normal spheres.
Toggle the lab vial and edge mode to preview the cage, use swift loop on the cage itself to adjust the shape of the turbosmoothed cube-sphere for an effectively chamfered cube.
Floaters: high poly meshes placed close to base low poly to bake normals onto low poly,dont change silhouette too much so it bakes fine and believably, jusy a good way to add detail through seperate meshes - ensure they have separate material IDs, use polygon vertex colour to create colour mask to paint easier in painter
Floaters - this is a method to add tertiary detail to meshes without affecting the original model and save budget. Place high poly meshes close to a low poly base to bake its normals onto the low poly. Don't change the silhouette too much so it still bakes smoothly, the purpose is adding detail through separate meshes to low budget models. Ensure these components have separate material IDs, use polygon vertex colour to create a colour mask in Painter for easy painting. To bake with floaters, use a distance-based cage with average normals ticked off, go into "ID" and select vertex colour for the material ID technique. Add a mask with colour selection to paint on the high poly areas.
I decided to tackle the big fish first, getting the harder part out of the way sooner, starting with a sphere that I elongated to block out the body.
I used a modular technique, adding spheres onto the body along with the move tool to morph them into the shape of the body, jaw and tail, following diagrams of whale anatomy as a close reference for plausibility in this fictional creature.
Next, I merged everything and used the dynamesh tool so each separate mesh was unified. I can start sculpting and adding tertiary detail with texture brushes now, along with fixing the overall body and adding eyes, fins, etc.
I added spheres in place of eyes, dynameshing them and using the clay build-up tool to mold them to the body properly.
From here, I furthered my sculpting around the eyes by emulating the eyelids. I made sure I didn't smooth over my brush strokes too much so I could imitate the look of aged skin, as seen in whales and creatures akin.
Finally, I used the "soft concrete" brush to create a simple, but evident texture similar to scales that brings forth the idea of this creature's aquatic nature, without too much detail considering its obscurity behind a thick wall of distorted ice.
lalala
lalala
Gabriele Feedback:
I was shown a method of making a mop in 3Ds Max based on my enquiry, given my hesitance in approaching the thicker bristles seen in the reference.
Insert a cylinder with lots of horizontal loops, using the twist modifier to set them more diagonally. Chamfer those twisted loops tightly, and the select the edges that were used in the chamfer, extruding them in face mode to get varied height.
Next, apply the array modifier to the cylinder to spawn a ring of these bristles and move them customly for a more natural arrangement. Finally, use the FFD 4x4x4 modifier to adjust the position of all of these bristles to create a relaxed, placed look.
You can then take this and align it with a low poly cylinder or cone positioned in the same way to bake the detail on and texture in painter as usual.
Mesh Decal Method Reminder:
To create a mesh decal, use a plane and create topology on it, baking in Painter and texturing everything, bringing it back to 3Ds Max to apply to other meshes.
Dev Log Evaluation:
By the end of this session, I had completed a decent sculpt for my big fish which was the major part of my high poly checklist. I still need to develop certain areas such as the fins, and then I can start on the smaller fish sculpt so I can begin retopology as soon as possible. My aim is to ensure all Zbrush assets are complete by the end of next week before we go home for Christmas.
Given the sculpt I'd made from last week, I knew exactly what needed doing - the fins. In the previous session I had duplicated the tail and adjusted it to act as a fin but it wasn't to my standard as I did this haphazardly so the sculpt looked complete. To begin this session, I'll create a new fin to finalise the big fish, and then start on the smaller one.
In making the fin, I started with a sphere that I scaled to shrink the width, creating a large flat sphere like the flat nature of a fin. From here, I used the move topological tool to create the spikes of the fin, followed by the rake and soft concrete brush to give it some texture.
At this point, I received feedback from Gabriele to twist the tail fin to showcase the silhouette effectively behind the ice's distortion, along with reusing this sculpt to save time on the little fish.
In my digital concept, the smaller fish was something of an afterthought - its design was random and alien-like which will come across as inconsistent in the 3D space where it's harder to suspend disbelief as everything is physical and sculpted so I reworked its design to represent something of a budding form of the large beast. I used variations of the move tool in Zbrush (topological, infinite) to shift this sculpt into a position reminiscent of foeti, implying that this is the offspring of the large creature.
I furthered this concept by closing the large eyes on the midsection to suggest how this is largely something that develops with age, along with shrinking the fins and keeping them close together to communicate how they aren't ready for swimming yet.
Dev Log Evaluation:
By the end of this session, I had both sculpts complete and ready to be retopologised which was pleasant as I'd reached my goal of completing Zbrush work by the end of this week, even earlier too. Gabriele's advice of reusing the sculpt was a great help as it saved lots of time and allowed me to rethink my narrative to strengthen it with more cohesive designs between the creatures.
Now that the mandatory Zbrush stage is complete, I need to consider my next goal; I could either get retop out of the way since it'll be simple given the ice's distortion, create any more high polys I may desire, or develop my 3Ds Max scene. I believe I want to do the retop first, but then I want to develop my blockout so that each model is more detailed, and if my 3Ds Max scene is complete by the time we come back, I could take some parts like the ice/rock walls and sculpt them in Zbrush for a high poly version with better detail matching their material reads realistically.
With my sculpts complete, I decided to go straight into retopology so I didn't have to concern myself with the burden of managing high polys on my computer at home when I leave for Christmas; I will be able to develop my 3Ds Max models with no problem at home so retopology is my top priority today.
Lecture Notes - Texel Density:
Texel - this word refers to the texture elements, the smallest element of a texture map.
Texel density is the quantity of texel mapped across a surface, a higher frequency gives higher detail and quality texture maps.
1024 px/m is necessary for FPS games because you're looking directly at the environment, meaning it needs to have high detail, 3rd person has 512, and top down has 256 based on the distance the camera has from the environment.
To find the texture map size, you can use the equation of target texel density x surface area = texture map size.
To find the texel density on tiling textures, target TD x surface area / texture size.
Visual method - unwrap 1 square meter plane with a checker pattern of 1024x1024, then unwrap your model on the same sheet and ensure the checker pattern's squares align.
Hidden areas can have less texel density, like underside of table or backside of wall due to not being seen by the player.
For a user-made method, go to customise user interface, toolbars, in category - custom, tD tool.
Unwrap your model, input the map size and your target TD, and then click set, click Get to determine what the texel density of a selected area is.
For environment art, use trim sheets and tiling textures as much as possible so you don't have to concern yourself with packed sheets compared to character art where that format is ideal, the aforementioned methods are greatly compatible with environment art due to the opportunity to reuse textures and cover a large area with procedurally generated textures, tiling seamlessly and painting variation with vertex painting.
The first step was to import my decimated models from Zbrush and place them in the correct position - the big fish is behind the large ice wall, and the smaller fish is within the chunk of ice extruded from the ground. Neither of these need to be particularly dense in topology, but the big fish is even less so, seeing as it's behind a thicker wall of ice and at the very back of the scene where the small fish is closer to the viewer.
llaalalalal
llaalalalal
llaalalalal
I began to run through the standard procedure of retop so I could start on my fish; choose to draw on surface, picking the high poly asset and setting the offset to 0.03 so it doesn't overlap heavily. Finally, I used step build to begin adding topology with verts manually.
lalaalaa
Due to our previous retop experience on human characters, I followed my usual process of starting with the eyelids and building from there.
Once I'd extended from the eyelids enough, I started on the fin. I started with a single row, and used a deformation loop to extend it to a row of three, allotting me more topology on the fin. When I completed the fin, I recognised that it could be optimised so I removed some loops.
Next, I wrapped the body with topology so I could build on it sideways, reaching the head and tail next. Given that the player would never see the backside of the fish, I decided to add deformation loops that shrink the rows of polys from to 1; I proceeded to do this on the top and bottom side to get this seamless result.
On the left, you can see how the top photo shows the front with smooth and clean topology following the contour of the creature, with the bottom displaying the very low poly back.
llaalalalal
Gabriele Feedback:
The important point is to manage time correctly - distribute attention between props as some parts will be looked over but some need fine detail, being looked at by the player in detail so attention with textures and model detail is vital.
The big fish could likely be a unique texture map of 2048 and be fine like that, it gives it its own texture map to be done in painter with just enough detail so the ice shows it well.
Definitely do the trim metal sheet for scaffolding, it's applied super efficiently and covers a large space.
For smaller props like the head of the flood light, monitors, mop, bucket, mug, they can be on one packed texture sheet since they're all super small and similar in size.
The rest can be tiling textures and trims used in conjunction so they don't require packing. I can scale them freely with the tiling texture and whatnot.
In conclusion, texture sets. 1x2048 sheet for the fish, 1x2048 or maybe even 1024 for the small props. 1xtrim sheet of metal for scaffolding, the rest is tiling.
Dev Log Evaluation:
Now that I'm onto retopologising the big fish, my main focus is development in Max seeing as my scene relies on sci-fi visuals with mesh decals and baking techniques shown in previous lectures so most of my work will be in Max. I felt a lot of clarity after my talk with Gabriele and feel confident to continue this project now that I have a solid plan for the distribution of texture sheets in the unwrapping stage, so it's important that I keep working on my modelling to reach that point.
In our return from Christmas break, I maintained the goal of developing my scene in Max primarily - I aim to finish my retopology first so I can move onto the individual development of each model.
Lecture Notes - Drawcall & Unwrapping Tips:
Drawcall - this refers to the rendering cost of meshes, the cost to draw (render) an object on screen.
Calcuation - geometry call + material call = final result.
For a simple book, the geometry call is 1 as it's just one mesh, the material call is also 1, so the final cost in 2
A wine glass is one mesh, but two materials of glass and wine so the result is 3; 1 mesh + 2 materials.
A lantern is 1 mesh, 3 materials of metal, glass, and flame so the total cost is 4.
For a pile of gold coins, the material is 1, the mesh is also 1, giving us a drawcall of 2. A stack of 150 coins would lead to a cost of 300! A forest has a cost of 3 for an individual tree, but for a whole forest, the final cost becomes excessive.
The more objects in view, the more drawcalls are rendered, an abundance of objects in view causes a drop in framerate.
Drawcalls are dependent on what you see, "frustum culling" disables the rendering of what's not visible, reducing the drawcall amount for a smoother experience.
Attaching meshes to make one mesh can reduce the drawcall cost in reference to the geometry call part of the equation, a stack of coins doesn't have to be 150 individual meshes but one large stack, maybe a few loose - this reduces the cost greatly!
Use assembled attached meshes in conjunction with modular ones, assembled meshes reduce the drawcalls but can't be customised, whereas modular meshes are flexible and can be freely placed, although eating up drawcalls.
Assembled attached meshes - furniture, piles of gold, full vehicles like carts, potted plants, building exterior.
Modular meshes - wooden plank, wall and floor tiles, single gold coin and grass.
You can't simply attach everything because everything will be spawned in even with culling in action, everything jsut existing is costly.
Mipmapping - this technique refers to textures being reduced at a distance. If everything is attached, you cant mipmap and reduce textures so everything is high resolution at all times, causing lag!
This is reminiscent of a technique Fromsoft used in creating the open world game Elden Ring - due to its large map size, they utilised a grid overlay on the map. Depending on which square of the grid the player is in, that is where objects load in at a high resolution. For the squares the player isn't in, mipmapping is utilised to load objects in very low-res. It gives a good impression of immersion as players can still see far-off areas without causing intense lag. This is a better trade off compared to refraining from loading anything in faraway.
What is ideal to attach? Villages, doors detached to swing freely, smaller interactables detached, but the larger structures like houses are attached. Dungeons are attached as built-in environments, assets like cages or skeletons are detached as adjustable set dressing.
Instanced static meshes - a static mesh is a non-moving object, instancing in Engine helps repeat them without performance costs like an asteroid belt running over 120FPS as it's built on one small rock mesh instanced to be arranged like a belt. The foliage tool in Engine lets you paint your foliage in, reacting to terrain and being placed on the right plane, along with adjusting mesh scale for variation.
UV notes - place seams underneath or away from view, flatten meshes to avoid distorted edges, keep texel density in mind, trim sheets are amazing for environment art.
Planar projection mode rids mesh of seams and flattens its view, use 2 3 2 key inputs to get movement back, hold Alt with the orange crayon button to remove seams manually, in the reshape elements tab use the straighten button to get perfect straight unwraps to prevent distortion.
Instead of spheres, use cubes with the "spherify" modifier to get a sphere with better loops to unwrap, go along half of it and add some standalone seams to cut it in half and separate each side in a uniform sense.
For custom cylinders with extrusions, unwrap as normal by peeling the ends, and splitting it lengthways to lay the body flat. Next, straighten it and manually move the seams that get distorted in the process so the texel density is consistent and not squished or stretched.
Remember to use align horizontal/vertical tool!
Use the scale button to get unwrapped stuff to correct scale so the checker pattern is consistent on the model, manually scale what you want to be higher or lower in detail.
I repurposed my custom retop to work on the fin, collapsing edges at the back since it wont be seen; I duped and rescaled it to the smaller fin's position.
With the fins complete, I scrapped my custom retop in favour of the retopology modifier to give me a cheap enough base that fits the silhouette of the creature, seeing as ice will obscure its view so it doesn't need to fit perfectly.
I also applied the retop modifier on the smaller fish, at a face count of ~1000.
To accommodate for the fins I'm duplicating again, I got rid of the topology created where the high poly fins extrude, along with adding loops for the eyes and the curve of the top jaw. This helped me achieve an accurate silhouette with low detail.
Since I changed the shape of the fins on the baby fish to show their early stage of development, I used the FFD 4x4x4 modifier with control points selected to adjust the overall shape of the fin without much manual work.
Jesse Feedback:
My main goal was gaining clarification on vertex painting, as I grasped the concept of adding more topology where I want to paint but I just needed a demonstration to show how to apply it to my scene; Jesse showed me how the vertex painting is applied to the verts, acting as a sort of gradient fading from there corners so the more verts I have, the more flexible the pattern I paint in can be as it relies on the topology. I've concluded that I can add topology with swift loops where I want to apply vertex painting, planning where it's applied such as a tiling texture of frost on the corners so more topology near the edges. Another thing to remember is that I can reduce the topology loads where areas aren't visible such as the back faces of the walls, I'll collapse the faces there.
Another note to make is that I need to develop the narrative!! Some nameplates, evidence of character presence, hero props, company names on the equipment will create plausibility in the scene.
Gabriele Feedback:
The first concern pertained to the walls, seeing as its a very natural and organic structure featuring frosty rocks, it was important that this form was conveyed seeing as my blockout is essentially rectangles; we decided that the best course of action was modelling the ideal silhouette for each wall, and then taking the mesh into Zbrush to create edgewear and sculpt in that rocky/icy texture which will bake great and convey the material read effectively.
My blockout was considered a good base that I just need to develop, seeing as this is my main goal for the week seeing as I didn't work over Christmas - the majority of my sculpting is complete in Zbrush, and the high poly models in Max compound with the general model development anyway so their workflow will go hand-in-hand and I just need to get it done. I'll be using mesh decal sheets, high poly details baked onto the silhouette and other methods combined for this. For the hard surfaces like the desk and scaffolding, modifiers like chamfer and weighted normals will create a great final model without much effort.
I had a final question concerning my icicles; seeing as I'm creating an ice shader in Unreal Engine, I wanted to know whether that would be applied to the icicles too which is a little dumb in retrospect, but of course the answer is yes - I plan to utilise vertex painting to create smooth transitions between the floor and icicles so they integrate with the environment, using a frost tiling texture and perhaps some rocky textures in conjunction.
Dev Log Evaluation:
This screenshot shows the current stage of my Max scene - the retopology is complete now, so I need to really focus on developing my models to the point of completion by the week's end!
Most of the models, given their sci-fi appearance, need silhouette correction and chamfer work to appear smooth and sleek such as the bars, stairs, scaffolding, and desk. To improve the detail on the high-tech areas, I'll be using a mix of a mesh-decal sheet and high poly models baked onto a basic mesh. Environmentally speaking, I have the aim to adjust the silhouette of the walls and floor and then give them edgewear and texture in Zbrush for their high poly version.
With all that complete, I will be able to start my unwrap!
Lecture Notes - Substance Painter Refresh:
Prepare Viewport: In Display Settings, have the environment map set to (ideally) studio options like studio tomoco as it gives neutral lighting for viewing accuracy, change the environment alignment to camera instead of world - environment map follows your camera as you move, remove shadows for a proper objective view without shadows obscuring assets, set focal length to 50 to avoid mesh distortion, de-activate the post effects for extra accuracy, increase anti aliasing, anisotropic filtering set to very high for sharp textures regardless of distance.
Shader settings - use metal-rough, increase specular quality to very high, enable double side geometry.
Masking: folders contain your layers AND keep it neat. Start with a new folder to represent your asset, add a black mask to this folder, remember to click alt on the mask to view where its applied, drag a material to the folder's whole tab not just the mask, use polygon fill for clean mask selection on meshes, chunk fill selection is another good option to grab a whole area with just one click or drag instead of intricate clicks as it refers to the UV sheet.
In the new folder inside the old folder, add a black mask to the new folder and select the specific area you want to adjust manually - you're refining the mask with clean selections and essentially layering masks.
Add a new folder above with a black mask, selecting the next area you want to texture, again dragging a material onto the whole tab of this new folder for a distinct area separated in the mesh.
You can import images directly to painter, beneficial for secondary props for quick and realistic side assets.
Grab a neutrally lit texture as a png, drag and drop onto the mesh and apply as base colour for example, change the projection to tri-planar to tile it in a sense.
Create a new folder and mask it accordingly, dropping the image texture into it so you can start adjusting.
In a new fill layer with some height selected, use a smart mat or pattern in the grayscale section to achieve some bumpyness.
New filter in this fill layer's black mask with blur selected so it's not too noisy and intense.
Add a fill layer, select height, make a black mask for it and add another fill layer in the black mask with those smart pattern mats to get bumpyness again.
You can also paint in the height (do it on the black mask, not a paint layer)
Fixing baking errors in painter: texture set settings, normal mixing - replace, you can replace the normal map. In a new fill layer just select normal, select your normal map in this fill layer, add another paint layer again and normal instead of base colour. Change the blend mode to pass through so it affects the base normal map, change viewport to normal mode so you can see colours for how its affected, use the stamp button on the interface's far left and press V somewhere to sample that area and paint over the error accordingly.
Anchor points: stores data from layers to reapply later on - think of it as a save state, add an anchor point to normal info layer and label, storing and collecting this layers data, in an added generator go into micro details and in micro normal, turn it to true. Add the normal info's anchor point in the bottom of the generator tab in the micro normal map, change reference channel to normal and then the generator will be applied to this unique normal info.
Stitch generator on cloth mesh, adjust stitch type to single and immediately add an anchor point ontop of a generator, name it single stitch, next add a tile generator above the anchor point and change to custom image input and change image input to the anchor point to tile the single stitch design, then adjust parameters, duplicate the generator and swap its rotation, changing the second's blend mode to Lgt (lighten) to match the below value range, add another anchor point to the two tile gens that creates the pattern. you can add a transform filter to the anchor point to adjust parameters for both. You can add an anchor point to this transform layer. With 3 different anchor points, one for the tiled image, two for the pattern generated from its tiling, 3rd for transformation, you have an effective blanket texture.
Make a new fill layer with colour and add a black mask with height info, add a fill layer in the black mask and apply the transform anchor point to the new fill layers grayscale. You can adjust your new material with the anchor points applied by editing the anchor points themselves.
Put all of this data into a new folder, right click and make a smart material for easy reuse!
To save the smart mat, right click and export resource.
For the base pole of the flood light, I used a cylinder primitive, adding loops where it can retract into. I extruded those areas and chamfered their edges for a slightly rounded appearance to indicate its rubber material. I also scaled the longer parts down slightly each time to show how the pole collapses for easy transport.
I deleted the middle row of faces from this rectangle, capping the empty insides and curved the edges to get the parts that allow the legs to bend.
The legs themselves were a similar process to the main pole, along with an added cylinder to the new green areas to represent screws bolted to the legs.
I duplicated and rotated the legs to check it works and for reference in modelling the holders.
Lots of cylinders were used here, so I prevented ngons on their end faces with collapsing the verts.
lalala
I created a cube with a few loops, deleting the outer faces and capping them for something of a cross shape. From here, I chamfered the edges which gave me a rubber leg holder that accounts for all 4 of them with its shape.
lalala
To give it a softer curve, I selected the harsh corner's edge and selected "Set Flow" which automatically made it curve.
It's not perfectly centered, but acts as a good representation of how it'll look after instancing
lalala
"C-Ext" in extended primitives for the base.
On the corner's edge loop, I used a chamfer to create a curve.
The chamfer caused open edges, so I rectified this with target welding.
Finally for the light itself, I used a cube and extruded/scaled to emulate an area holding its inner wiring, doing the same for the inverted area with the light.
I used the array modifier on the repurposed light upholder for bars but decided they'd obstruct the beam in the engine scene so I scrapped them.
Starting on the scaffolding rails, I applied the bend modifier to a dense cylinder at 90 degrees and selected the loops with "dot ring", deleting them to eliminate half of the loops while maintaining the silhouette.
I extruded the end faces out to match the low poly version, followed by using the symmetry modifier to mirror the shape over. Finally, I filled the gap with the bridge tool on the selected borders.
With this complete shape, I added another cylinder to create the lower horizontal bar using the modular building method.
I decided it was too thin in the end, so I applied the shell modifier to improve that. Now it seems like it'd actually prevent falls!
My current priority is to finish modelling my meshes in Max so I can reach the unwrap stage as soon as possible - this will consist of creating any missing assets, and improving the detail of the previous ones from the block out that are primitive at the moment so they all reach the same standard of quality.
Lecture Notes - Designer & Vertex Painting:
Vertex painting is useful for blending two textures.
POM (Parallax Occlusion Map) is good for building height referring to your height map and changing geometry within engine, it's what I did last block with the fluffy rug!
Making Tileable Cobblestone:
Press ctrl + shift to move the light source in the material preview window.
Hold ctrl to duplicate a connection line so one node can go to two areas.
In creating a cobblestone pattern, apply a noise pattern for the base, using voronoi.
Plug it into the base colour output, changeing the parameters by increasing scale, increasing distance scale to increase lightness, increase rounded curve for extra brightness.
Create an edge detect node and plug the voronoi into its input, its output to base colour, click random seed in base params to change the pattern, adjust edge roundness to curve off edges and edge width to adjust the areas between the rock spaces.
Add a flood fill node, it works with edge detect to automatically shade each shape in the pattern, make sure the shapes aren't too close together because it causes difficulty in flood fill's ability to distinguish each space.
Add a random grayscale node to get varied values in each shape, click random seed until you're content.
Use a gradient map node to add colour, plug into random grayscale and make your gradient. You can use the pick gradient tool to pull directly from your references. make sure to drag instead of click to grab multiple colours at once. Plug this sequence into base colour.
Create a HSL node (hue, saturation, lightness) and plug into the gradient map's output and then into base colour input. This allows you to adjust each parameter shown in the node's name.
Working on normals next, get a bevel node and put it into the edge detect node's output and into the normal input. Scale distance to negative value ~2 for rockiness, adjust smoothing to get a softer bevel.
Work on the grout between stones next by plugging an invert grayscale to the edge detect node to invert the mask and focus on the area between the rocks, next a blur HQ grayscale node to soften the mask selection.
Find a multidirectional warp grayscale node, and append to the blur HQ output and plug a fractal sum noise into the other input of the warp node. It distorts the edges in a rough way to achieve the look of grout. Plug the output of this sequence into base colour.
Plug base colour into background and the new grout mask to opacity, make a new uniform colour node into the foreground channel of a blend node to add colour to the grout.
Adjust the mask if necessary with a levels node to change the values.
With a normal combine node, take the end sequence of the grout mask and plug a bevel and normal node into a normal combine node, changing it to detail oriented technique for a higher quality.
Attach a flood fill to a blur HQ grayscale and then multidirectional warp grayscsale followed by fractal sum noise map into the other multidirectional warp grayscale node input. This roughs up rock edges.
Normal sobel plugged from multidirect. warp for immediate effective result w/o adjusting params.
Create another normal combine into sobel and the initial bevel.
Convert the normal map to a height map with a normal to height HQ node, plug it into the end of the normal bevel sequence.
Next, use a height to ambient occlusion node (HBAO).
Reduce the relief balance of height for a less intense AO result, reduce height depth in HBAO node so that's also less intense.
For roughness, add noise with grunge map 11 node. Make a blend node and add the warp grayscale node with a new noise map with a multiply blend mode.
Place an invert grayscale node into the blend to change the values and get it much rougher.
Plug a flood fill grayscale node into the height map to get an idea of the height. Click materials, default, and edit to increase height scale for more extreme mesh deformation. Make a blur between grayscale and height for softer edges that fixes the extremity on mesh deforms.
Start channel packing for AORM. Add an RGBA merge node to plug each channel into one node, AO into red, roughness to green, pack height into the alpha channel and no need for metallic in blue as there is none.
Finally, take this node into an output node. Label this node AORM. Rename the normal outcome to N, base colour to BC, etc.
Next, you can use frames to organise the sequence.
Finally save the file!
Mossy Stone Variation:
Right click on the packaged file and create a new graph labelled T_cobblestone_mossy, metallic roughness selected again.
Drag the original graph into the scene.
Make a moss generator on top of the original tile. Plug previous packed sequences into everything as it's all contained in the graph node. Remember to readjust the height scale for the new file.
In the old file, make the output file for the edge detect sequence and add it to the new file to make a mask for moss. Edge detect ontop of this new output and make it thicker so the moss is super integrated, use an invert grayscale node so it's in the right areas between stones.
Add a fractal sum 2 noise map fot its grainy texture similar to moss and add a gradient map to it, using the pick gradient tool from reference for colour.
Add a blend node between the mask and noise colour, plug those both into the blend and plug output's base colour into blend, blend into base colour of new file.
Too clean at this rate so utilise the warp node on the mask. Add a multidirect warp grayscale node in the edge detect node with a noise map like grunge rust fine in the other channel of the warp node, turn intensity way up for the grain, and plug this warp into invert grayscale.
Reduce normal intensity with a new normal node. Add a normal blend node to blend the base normals and new flat normal node, then place the mask in the opacity part. Plug the normal blend into the normal outcome so it's much more transitioned now.
There's less AO so plug its base colour into the AO map. Rely on normals for that since moss obscures AO.
Use grunge map 007 and grunge rust fine with a blend node and the moss mask in the opacity input of the blend node. Add ANOTHER blend node with the new noisy blend mask into B, the original cleaner mask into alpha channel. Adjust opacity of this blend node to adjust its intensity and get a better grainy transition for moss in crevices.
Rework roughness. Add the new mossy blend into the opacity input of the new blend, original roughness into background and then fractal sum 1 into foreground. Plug this blend node to roughness for more consistent roughness. If values are too light, add levels between blend and roughness and turn down the white value.
Finally channel pack with RGBA merge and output. Label AORMH. Label each channel accordingly as before.
Export these tileables as a targa!!
Engine Vertex Painting:
Make sure to disbale sRGB, as it flattens your textures.
Make mats for your textures, M_stone_vertex. Make it an instance too, labelled MI_stone and drag onto the mesh. Add a POM in the material editor. Convert a duplicated height map to a texture object and set to heightmap texture. Parallax UVs in POM into original textures. Already shows some parallax occlusion occuring. add value 0.08 to height ratio and then create a param labelled height ratio. Plug param into height ratio and remove the original value.
Right click the input and convert to param to do this quicker, hovering over it tells you the value. Add the min and max steps values as params.
Add texture coord node, create a multiply node, and then param labelled tiling scale. Default set to 4 in multply B, textcoord into A, multiply into UVs.
In the material instance, tick global scalar params and now you can adjust everything you made in the mat editor.
Dupe everything in the mat editor and plug in the mossy version's maps into the textures as replacements - now you have two tilings.
Grab a vertex colour node in the mat editor. LERP (linear interpolate) node, red of vertex colour into alpha of LERP. Put base colour into B of normal stone, then mossy stone BC into A. Original normal to B, left shift to dupe connection into alpha and mossy normal to A, put into end normal. Repeat this for everything, essentially vert colour into alpha, mossy into A, and normal into B.
Go to mesh paint mode. Click on paint tool, select just red in channels to paint just red. Change paint colour to black to apply moss to normal stone.
Cheapcontrast node in mat editor, reconnect all red channel of vertex colour connection into result, red into input of cheap contrast. Param called contrast red into contrast of cheap contrast, and now select it on material instance and increase or decrease to change the edges of the paint, can also invert it to control it.
Make a new mat instance and drag it onto new mesh, change its scaling to fit the mesh as the tri count can affect it and cause inconsistency.
The cheaper the mesh, the less customisation available.
Jesse Feedback:
Give the fish NAMES!!!! (Jan 20th update: the big one is Ursula, the little one is Myrtle)
I wanted clarification on snow clumps, so I was advised to make separate meshes and do a painter workflow since it's not in the scene that much and having separate meshes will help them feel distinct and easy to repeat.
Make sure to do the rock walls' high poly versions!
I just have to finish modelling this week and doing the rock high poly. Try to bake by end of this week or start of next week ready for formative feedback.
For the stairs, only the front face got such heavy chamfers as the most observed edge.
The back edges got no chamfers as they're entirely hidden, saving me budget.
For the rails, I just extruded the ends and scaled them up to create rubber ends with slight chamfers on the edges.
Next, I worked on the scaffolding platform itself; I started by chamfering the edges rather strongly as a relatively faceted object, but its large scale calls for subtly smoothed edges. After this, I worked on the area with the grid walkways by creating an inset on the top faces, scaling them down, and then extruding them backwards until the face was removed, followed by a smaller chamfer as less visible edges.
To make the grid, I added a super thin rectangle and applied the "Array" modifier at the centre, with a count of 8 and set to a few cm apart which gave me an evenly spaced vertical row of grates. I repeated this process with some shorter rectangles to represent the horizontal collection of grates.
The bucket didn't require much attention in adding detail, so I emulated a traditional metal bucket using swift loops with chamfers applied that have extrusions to get the rings on the midsection.
Beginning on the mop's high poly, I crafted the handle with a cylinder and extrusions/scales at either end to represent the rubber end and outwardly expanding opposite end that holds the mop itself. From here, I worked on the mop using Gabriele's method he showed me earlier in the project with applying a twist modifier to a dense cylinder's vertical loops. I then chamfered those loops and extruded them for some height variation.
The image above shows the Arnold render test, and the right shows the ropes assembled with the array modifier set to radial distribution.
lalala
lalala
My next step was to scale down the mop head and position it beneath the mop handle. From here, I adjusted it to appear as if leaning on the floor and its uniform shape bending. I carried this out with the FFD4x4x4 modifier to scale down the top part and fit the handle better, followed by moving the middle section back to show how it's pushed back on the floor, followed by scaling the bottom out to demonstrate how the ropes splay and spread on the floor.
As a focal asset in this environment, I ensured the desk was smoothly chamfered with detail. However, I didn't need to concern myself with complex shapes ontop given how equipment will be placed across it and covering the surface area.
I used the inset tool with extrusions to get draws and cabinets, using a modular technique to place some handles.
In developing the visual narrative, I modelled a mug with a cylinder, followed by adding a teapot with only the handle ticked, placing it on the mug.
Finally, I reused the cylinders from the first set of rails for the same scale and modularly placed them in a supportive scaffolding frame, repurposing the flood light's leg holder for the diagonal beam holders.
Dev Log Evaluation:
I made a lot of progress today in terms of developing my models, but I still have my work cut out for me; entering the 5th week means we need to wrap up modelling and unwrapping to start texturing and I'm really cutting it close. I'm not proud of my work pace, as I believe I underestimated the amount I needed to do in the modelling stage. However, I will simply have to compensate for it by working harder to catch up properly. I have 13k of my budget left which I can dedicate to completing the equipment on the desk such as the monitors, cables, geiger counter, and the environmental aspect like the rocky walls, icicles and snow. As long as I lay out my tasks and plan my priorities I can catch up.
Reflecting upon my usual course of action, I believe I need to learn to leave the blockout/idea generation stage earlier. It's important to have a solid plan, but also to give yourself ample time to develop the work itself.
This session marked the conclusion of my modelling, I was aware of how late into the project we were and really wanted to be unwrapped by next week so I set the concrete goal of finishing modelling this session with only icicles, high poly walls' creation, the chair, and smaller desk details like the TV and mug for narrative detail.
I desired a freeform shape for the icicle, using the FFD modifier in conjunction with soft selection on a dense cylinder to achieve the smooth, but jagged shape of it.
I increased the detail of the ice holding the smaller fish using swift loops to build its density, along with using these to further sculpt the organic shape of the ice; I used the shift tool to adjust the silhouette, and the relax tool where the topology warped in adding loops.
I specifically chose to add multiple loops near the bottom for smoother vertex painting if I choose to add frost at the bottom for a smoother transition to the floor.
lalalaa
lalalaa
Progress Check:
I've crafted some icicles to decorate the scene that will reinforce the idea of this icy cave, resembling stalagmites and continuing the visual motif of ice so the two major areas of ice encapsulating the fish don't stand out in an odd way.
I'm at around 23k for the budget at the moment, so I have 7k left to dedicate to creating high poly versions of the walls, snow, a chair, TV, and mug.
I started the chair with a primitive block out to attain the general silhouette and proportions.
I used a chamfer on the edge separating the major sides to curve the chair, making for a comfortable seat.
I did the same with the edges slightly, followed by the ends so it's all relatively soft.
Next, I used an inset on the large faces to create the impression of cushions.
I used a cylinder with the scale and extrude method to get the pump(?) section underneath the chair.
For the arms, I repurposed the handle of a teapot model from the primitive selection, and built the legs with a cylinder like the pump, adding ANOTHER cylinder on its side to act as the wheel.
Using a box primitive, I added an inset for the screen and extruded the back face for where the hardware is stored.
I deleted the screen area altogether, going for a modular build instead - I then added chamfers subtly on the edges to get my high poly model.
For the screen, I added a plane separately.
To achieve the subtle curve of retro TV glass screens, I applied an FFD modifier and pulled the central control points forward.
Moving onto the high poly improvements of the walls of rock and ice, I started with a shell modifier on the smaller block of ice as I realised it'd need physical density in a thick layer.
For the ice, I added swift loops to build its density and specifically collected them at the edges to work in accordance with a frost tiling texture in the vertex painting stage.
I applied an FFD modifier and gave it a similar warp as the TV screen to establish the general shape of the ice before customising it.
To get the blockier shape of ice, I used freeform tools such as shift, push/pull, and soft selection.
A similar approach was taken for the walls and floor.
I used the cut tool for the rocky door to get its organic silhouette, using the tool once again to prevent ngons by connecting verts to the pre-established loops of the wall.
Dev Log Evaluation:
At this point, the modelling was finally complete so I went straight to checking for ngons using the "By Numeric" tab, letting it search for any faces over a count of 4, then manually rectifying it. This wasn't much of a problem as they only appeared where the chamfer's program couldn't automatically prevent it, requiring just a few vert connections.
From here, I checked all my meshes had appropriate names and sorted them into layers, ready to begin the unwrap process.
Now that all facets of modelling were complete, ngons were accounted for, and smoothing groups were applied, I was able to move onto the unwrap stage, starting with the fish.
For the fish bodies, they required one large seam around their whole bodies at the best angle to not be seen. The smaller fish needed an equal amount of space on the UV sheet as both sides are visible, but the large fish's back could be scaled way down as it isn't seen at all.
In unwrapping the fins, I added a seam along the whole of it to split the two major faces. With the strip in between, I made sure to straighten it.
Each wall was relatively simple, essentially being a glorified rectangle. Most of the seams were already there as the unwrap modifier could work them out from their original primitive shape. The only one that needed manual work was the wall with the doorway, adding a seam for those edges too.
None of these need to be packed as tiling textures will be applied to them.
Formative Feedback:
The main focus of my feedback meeting was to fully polish my models before I finish my unwrap and bake. Effective smoothing groups with a lack of shading errors will help my scene feel immersive.
We started with fixing the chair's topology, removing unnecessary loops and redoing the chamfer with the modifier instead of the tool in the UI for better effects. From here, I was advised to create the cushions in a modular fashion. It's easier and also helps when using smooth/weighted normals as the chair and cushions are recognised as separate objects instead of merging them.
I was also advised to add in splined cables as I desired them in my scene, and they were a quick task to meet my needs and bring my project further with little time investment.
The left shows my model with shading errors above the cushion, and the right shows my lecturers' approach to modelling the chair, welding the verts of the cushion to chair when reattached. In the bottom image, you can see my previous attempt and my new version that I adapted from advice I was given.
Attention was also given to the desk which, as a focal point, required smooth surfaces and dense topology to be clean and detailed. However in trying to create a divot in the sides, I compromised the asset's appearance as the collapsed verts causing a shading error. This required the central vert to be welded back to a corner and reduced to one large edge. The divot detail may be gone, but the asset is cleaner and has sensible topology now.
Following this feedback, I returned to my unwrap with effective models. My action plan from here was to spline some cables in, ensure no smoothing issues remained, and finish the unwrap and pack everything. From here, it'd just be a case of creating my textures in Painter and Designer, followed by creating my scene in Engine.
When it comes to unwrapping a collection of assets, I find it easier to pre-pack them in their own spaces and then pack everything properly once it's all unwrapped. This helps making the packed version easier as everything is neatly sorted already, and I can make any changes and move small parts around if I'm left with extra space. It's especially due to making decisions on which assets go on what sheets, which can change over the course of a project.
Assets like the platform here are relatively easy, as they're pretty uniform already and you can intuitively place seams.
The TV is another asset that felt simple to approach, with seams placed on the sharp corners and distinct faces between them peeled. One piece of feedback I received last block was to straighten my UVs more - I knew that they weren't absolutely perfect but I believed they were pretty vertical or horizontal but I never realised until a recent lecture that the "straighten" tool existed.. this made assets like this much more effective once unwrapped as they were uniform and neat.
I made sure to use this tool wherever necessary going forward.
The large ice chunk was another simple unwrap, only needing seams on the bottom faces and a large one across the whole object vertically to split it in two. I scaled the inner faces down as they weren't at the forefront.
I made sure to place the splitting seam of the handle on the inner side as that could barely be seen, using the straighten tool once again.
lalalala
lalalala
The desk is where I tried to be very conscious of texel density based on UV space distribution, ensuring the top surface was the largest, the undersides were scaled way down as they're obscured, along with making sure the curved edges matched the length of their respective countertop area.
I placed seams to separate the thin sides of the chair, along with the top and end. The cushions also received seams to separate them on the UV sheet which will help in texturing, along with two seams where the curve occurs on the chair to prevent any distortion in texturing.
An important part in unwrapping the stairs was giving each one's exposed face a unique space in the unwrap sheet. It may be more efficient to stack them, but this way I can customise their texture and show edgewear and age where people have walked. I also made sure to shrink the unseen faces way down and stack all of those as they won't be seen.
The rails were done quicker as I unwrapped one, collapsed the modifier to save the info, and then used the mirror modifier with copy toggled to duplicate the rail and keep the UV.
I had multiple icicles in my scene and unwrapping them all would be tedious so I elected to delete most of them, leaving a small and stumpy one, a tall and slender one, and a more proportional one.
I left myself just one icicle, adding loops for a super smooth model, and duplicated it to shift it to the appearance previously mentioned. From here, the unwrap was quick and was only done thrice.
Packed Sheets:
Fish & Ice:
More organic forms were contained in this sheet, like the icicles and both fish and their fins. Despite being obscured by ice, the larger fish still needed a decent amount of texel density as a generally large asset.
Focal Assets:
The desk, scaffolding platform, and flood light featured on this sheet as major man-made objects within the scene. The platform accounts for the stairs and handrails, too.
Small Props:
This final sheet is dedicated to smaller props that litter the scene and don't need as much texel density thanks to their magnitude and importance within the scene.
Dev Log Evaluation:
(Image shows evidence of final budget, 28k tri's).
With the unwrap complete, I began to prepare for importing assets to Painter for texturing. This began with separating assets by their respective sheet using materials and colour coding as seen in the leftmost screenshot.
After this, I used the script provided by the lecturers to present my models in an asset zoo format which helps for presentation, also convenience in baking as it's evenly spaced, and texturing as it's all clearly lined up and distinct.
Finally, I lined up the pre-existing high polys with their respective low poly asset and duplicated each one without a high poly version to serve as one when baking so no errors occur. Onto texturing!
As everything was prepared in Max to be imported to Painter, the baking process was smooth sailing and only had one issue which I touch upon later, so my main goal for the session was to progress as much as possible with the texturing in Painter.
Beginning with the snow, I started with an off-white base colour, applying a fractal sum noise onto a new height layer to achieve some grain and noise much like the granular build of snow.
Next, I applied a clouds map to get noise that appears clumpier and organic.
Increasing the balance scale masked out random areas to variate the smoothness.
Next, I worked on the roughness map by adding this gradient map with random dots and increased the tiling effect to match it to the height. I also adjusted the contrast to make the map generally darker, which will help the snow glitter.
With the roughness map complete, this is the end result of the snow!
The metal bar of the flood light is the same as the handrails, so I approached them with the same workflow.
I started with a yellow base colour, applying a dirt scratches generator to the roughness for some wear.
I made a new colour layer with a darker orange, painted on the ends with more roughness.
Finally, I adjusted the base colour to have a positive metallic scale to achieve that final polish and material read.
To start the scaffolding, I applied a dirty metal smart material.
Next, I painted in the impression of rust with a maroon brown in the corners of the bars and removed the central combining case from the mask due to its different material.
Finally, I added a new colour of a deep green to add to the rust effect, but I was able to bring it together properly with the addition of a height map to these layers.
The bucket was a similar case, applying a matte black layer to the handle on a separate mask.
For the platform, I started with a grey base colour with metallic properties.
Next, I added a metal edgewear generator to fill in the edges with roughness, and painted some roughness in manually to show where footsteps haven't maintained the sheen through wear.
Finally, I used some normal brushes to apply decal details like screws and plates to the platform.
I applied a similar base metal to the stairs to show cohesion between them and the platform, followed by a fill layer of maroon with negative height selected and extra roughness to achieve the dullness where people have walked, painting it in at the centre of each step.
alalall
My only baking issue was with the grate which was to be baked onto a plane, however I couldn't get the shader to cooperate even with the opacity channel applied. Jesse came over to help by showing a different way of creating a grate without needing to bake. We started with a layer of opacity masked over the plane, followed by a texture pattern of stripes duplicated diagonally to create the right grate pattern. This gave me my new grate by using an alpha workflow, which I independently adjusted by adding a metallic texture and added some screws in the corners.
To create the rubber material that would be applied to the flood light, mop handle, scaffolding, and cables, I started with a matte navy blue base.
Next, I applied a fractal sum height map to get the grainy texture of rubber necessary for effective grip, turning down the global opacity and muting the colour for a very neutral rubber.
alalall
Painter Conclusion:
In the screenshot, it doesn't appear very progressed.. but it's due to the snow being white and most of the textured assets being black and blending into the background.
Either way, I've made decent progress in Painter texturing today. When I continue this, I need to complete the chair, TV, mop base, desk, tape, light, and the fish.
At this point, I got to work on my tiling textures with Jesse's help, finding effective references for cave rock that's gravelly, and not too extreme in height.
To build the tiling texture, we started off with a voronoi noise map to establish the shapes we wish to attain, followed by an edge detect node to get some thin outlines. From here, we achieved some normals using a bevel node in conjunction with some noise so it didn't appear too neat when building the rock's separation. Next, I achieved the ambient occlusion using a grayscale gradient node with some levels so the value change wasn't too extreme, finally blurring it to finalise this map. The roughness was a mix of multiple noise maps to find the ideal shape and variation in value, with a slight blue gradient with a HSL node to desaturate the colour, giving the grey rock blue undertones which will unify the scene thanks to the ice's blue light influence. After combing lots of noise maps and fixing the base colour, I finished the roughness map and plugged all final maps into an RGBA merge node, with an output node to allow myself to export this finalised tiling texture.
To create a variant, I just had to create a new graph within the original texture's file and add the merge node from the original sequence to carry over the information to reuse.
Achieving the wetness of the rock was a case of changing the roughness values so it appeared glossy instead, along with using a levels node on the base colour to gain a darker value that shows how water dampening the rock deepened its colour.
We then created a variant of flattened rock to represent how people had repeatedly walked the same path and degraded the rock beneath their feet.
To do this, we adjusted the levels of the height with a tame noise map with lots of grey, blending it with the height to bring down its bumpy extremities.
Master Version
Wet Variant
Flattened Variant
Dev Log Evaluation:
With my tileables complete, I just need to finish off texturing in Painter so I can begin setting up in Engine. What's left to do is the texturing in Substance Painter (TV, mop base, flood light, desk, mug, chair, fish), set up my scene in Engine and prepare the materials, establish lighting, and create the ice shader within Engine. My plan for a decal is relatively simple, a "wet floor"/"caution" poster, or coffee mug stain, especially since I'm very familiar with setting up a decal atlas shader now.
I possibly have stretch goals in mind of a frosty tiling texture to help vertex paint some cohesion in the scene, and add some dust specks with Niagara, but otherwise I just need to keep it up and work hard to complete this project!
Not much was left to do for the props I was texturing in Painter, so I dedicated my self-directed session to completing this which included the TV, chair, and fish.
For the TV, I started with a mask on the screen. I added a color and roughness fill layer with a murky green and negative roughness for some sheen that portrays retro TV glass screens. After this, I added another layer with a lighter green colour and more matte roughness, painting this in on the edges to show some age.
alalal
I used a deep grey for the rest of the TV, painting in some edgewear with a light grey and a noisy brush, turning the opacity of this layer down for a subtle effect.
Finally, I added tertiary detail like hardware pieces and buttons with a mix of colour paint layers and Painter's collection of alpha patterns to complete this prop.
To begin with the chair, I separated the base and cushions using masks and add a leather smart material as a foundation for the base. For the cushions, I started with a smooth light grey base to depict a softer form of leather on the cushions which I got closer to the material read with by using a roughness map (clouds), levels applied with just white selected to show how the roughness differs from the smooth base.
I developed the chair with some tertiary by adding stitches using a patterned brush that adds delayed lines which brought a little more detail to this prop.
Creating the desk's texture was pretty difficult given the sci-fi nature of the prop which had built-in hardware and would be mixed in with a practical work surface - this needed to be sturdy, and smooth but I wanted it to be distinct from the scaffolding platform, so less metallic. I achieved the base using positive roughness, and positive metal for a matte surface with subtle sheen.
I added detail with Painter's alphas to depict the hardware built-in.
When it came to the fish, I looked how different colours on the light spectrum pass through water with refraction and diffusion, seeing that red is ultimately the weakest and blue is the strongest. Given that, I stayed faithful to my concept art and kept the fish green for a strong balance between compelling colours and visible ones through the ice. With that, I created my green base with blue undertones.
Next, I added secondary details through extra colours such as yellow on the underbelly and fins, a deep orange for the eyes overlaid with some yellow pupils so that the eyes still felt strongly visible through the ice. I added blue to the top for extra hue variation and to show some influence of the ice itself.
With the textures all complete, I exported them and got to preparing my Engine scene. I started by using the provided script to set all asset's positions to zero for a good export.
Once I'd imported all assets and textures into Engine, I started compiling the scene and setting up the materials. Important things to note are that I unchecked sRGB in the AORM texture maps to maintain the correct values, turned off auto exposure on the level I created within the file so I could dictate my own lighting, and changed the default level to the scene's presentation.
Decals & Deferred Atlas Shader:
Beginning the decals, I used Photoshop to hand-paint some documents, diagrams, graphs, and letters. I also pulled some copyright-free images online. From here, I set up the decal atlas shader using texture coords, multiply and add nodes, and parameters to represent each scaling section such as moving/scaling X/Y. Finally, I plugged this into the targa decal sheet and plugged that into base colour, beginning to apply this to the scene.
I imported planes from 3Ds Max to apply the decals to, with the graph requiring some adjustment using the FFD modifier.
alalal
alalal
For the maps of the ice shader, I entered designer and plugged a variety of noise maps into the RGBA merge node to export all of these at once, separated into different channels.
This way, I can experiment with different maps to find the right one without having to switch between software.
I had given my own attempt at building the ice shader using a reference I'd found on artstation, previously linked in my posts from week 1 and it almost worked, but one of the nodes was custom-made by the artist, so I wasn't able to bring it to fruition. At this point, Jesse came over to help out given his past experience creating ice shaders which used an abundance of fresnel nodes which adapt to the camera's position to render the maps of the material. This node can manipulate our perspective and position to change the appearance of the shader and imitate depth and volume.
In using these nodes with the noise maps from Designer to act as roughness/normals, we were able to get the illusion and appearance of ice, finally connecting parameters and multiply/add nodes to each of these sections in the material editor to be able to adjust them through material instances. This will allow me to experiment with the material itself and suit it to whichever ice-based asset it's applied to, the wall will need much larger and noticeable details, where icicles won't need it so much.
As seen in the screenshot, Jesse demonstrated how I can use point lights in Engine with matching channels to illuminate the ice.
Applying the shader demonstrated on the ice cell onto the wall shows how the parameters and instances were a necessary inclusion as this looks like a basic blue wall.
From here, I used instances and adjusted the parameters to fit each ice asset better, adding much less opacity so the big fish was emphasised.
I instanced the icicles so the scene felt more cohesive and adjusted the lighting, with a large spot light for the flood light acting as the primary light source.
Vertex Painting:
lalala
This screenshot shows how I set up the vertex painting system in the material editor, with one set of maps plugged into the first set of LERP nodes, and the second plugged into the other, with the first colour plugged into the alpha section. I repeated this with the second set of LERP nodes, switching the maps around and adding the second colour to the alpha channels. Finally, I used a split components node for the AORM maps so I could un-merge the RGB section, and plug each colour channel into the respective material property. I then repeated this again for the third tiling texture offscreen and began the vertex painting process.
Here, the vertex painting is demonstrated through the RGB mode (it looks more CMYK??). The white represents the base tiling texture, the blue is the wet variant, and the pink the flattened variant. I painted in the blue where wetness would occur, such as where the ice melted which ties into the visual storytelling, with the mop and buckets scattered around the baby's ice cell. The pink path represents where humans have eroded the rock floor with their steps.
This screenshot showcases the tiling texture's variables in action, as the dampness of the floor is reflected through the lighting. This was the last step before taking screenshots and completion!
Final Outcome:
Overall Views
Player Perspective
Low View
Ursula and Myrtle
Desk/Prop View
This project definitely felt like a BIG one, I'm unsure if it's because I work easier doing character projects, but this one was a big challenge. From the beginning, I knew this one would be tough and would need lots of attention to bring to effective fruition. I don't associate the challenge and difficulty with negativity, I certainly learned a lot throughout the block and have come out gaining an abundance of new techniques and knowledge. Environment art isn't my forte but I feel as though I've succeeded in creating a decent outcome despite my bias towards character art and I feel assured finishing all environment based projects with a sense of merit, knowing I'm not a one-trick pony. If I had to do more of this kind of project, I'd feel ambitious to reapply everything I've learned here to produce something effective.
Primarily, I believe I succeeded in being faithful to the concept art and not neglecting any areas, or failing to translate anything to 3D. Both the art and 3D scene are very similar and visually intertwined. It helps that we had the previous block to plan out this environment and create it digitally as we had to consider composition and visual narrative, as this seeped into the 3D project too, and left me feeling as though the arrangement of the assets are interesting enough to allure the player and naturally guide them through the room. Starting at the desk and observing the documents and diagram studies of the fish, followed by the sight of the cordoned off infantile fish surrounded by a prison of ice and hazard tape, gradually melting. This is followed by walking down the trodden path, flattened by past humans' feet as evidence of life here, towards the scaffolding which you climb to view the large fish, Ursula, in full view.
I've also observed my improvements in the Substance Painter workflow, knowing better how to combine each map (roughness/base colour/metallic/etc) to create a believable material read and evidence of age within a prop. I previously turned to time-consuming handpainting to add details such as edgewear and manually adding layers to build up the impression of a material, where I now take advantage of the smart materials provided to gain a solid foundation that I then work upon with customisations and generators to achieve my own effective textures in half the time. It was barely a span of two days, completing the texturing in Painter overall.
With this said, I believe I have a heavy amount of room for improvement. This project was definitely a success, but I reckon my time management was poor once again. I feel as though a lot of people struggle in block 2 because of the 3-week Christmas period, taking it easy beforehand and having the opportunity over Christmas to catch up, but not feeling compelled to as you don't want to experience burnout. I'm not sure if this is how others see it, but I find it to be this way; I think I just need to be more proactive in the practical parts of class, and just put something down in the software even if not much. This is better than sitting on my ideas and letting them brew for too long, leaving me with less time to work on it overall. I believe the modelling stage is something that can be done much quicker and I don't need to dwell on a block-out for 2 whole weeks as that is something that can be done in 10 minutes in the very first lesson, especially since all the compositional experiments were complete in the previous block in digital. The action plan was a solid idea and I believe when I make one next block, I need to fully commit to it and ensure I'm reaching the right goals weekly.
I'm proud that I was able to delve into Engine shaders this block to create ice with the illusion of depth, but I think it stands out a little too much in the scene and appears almost mystical in its luminescence which sets it apart too much from the rest of the scene. I did light each rock wall so they weren't too heavily obscured but in the end it wasn't enough as it's still too dark for my liking, I believe this could've been fixed by just turning up their intensity a little more so that each area was decently lit and visible.
The largest part that I believe could've improved this project is creating a fourth tiling texture that depicts frost, along with using the Sampler software to apply decals of frost/snow adaptable to the meshes surrounding it. Using these in conjunction would've helped to build cohesion in the scene and soften the transition between areas such as the rock and ice wall, or the cave floor and cell of ice holding the creature. Unifying those areas would've enhanced the immersion of this scene and improved it much further.
Overall, I put in a lot of work and am proud of the result of this project. I was greatly pushed out of my comfort zone and have learned so many new things that I believe I've come further as a 3D artist - I can still definitely see areas which need improvement but I appreciate that I know how these parts could be improved if I returned to this project. In my eyes, this was a good send-off for environment art and I've left it appreciating it more than I did before.
#JusticeForMyrtle #FreeMyBoy #HeDidNothingWrong