Hello everyone, this is my University third-year work thread. I am an aspiring 3D environment artist in a group of 7 students aiming to create a Cyberpunk 2077 / Detroit: Become Human inspired game demo. Thank you for taking the time to check out my work. Any and all feedback is immensely appreciated!
Replies
At the moment, we plan to make 2 types of environments that are both in the same building - Chromo HQ, home of the world's industry-leading clone company. The first will be a luxurious client consultation / lobby area, and the second will be the underground cloning laboratory. These two environments are intended to contrast each other in colour and atmosphere but share some neo-futuristic principles.
We've decided to start production of the laboratory environment first, so here are some of the references I've been given by my Art Director.
https://www.artstation.com/artwork/dyoELK
So I started researching examples of this kind of quarantine tunnel. I couldn't find many real world examples but i did find a couple in films like ET (1982) and 12 Monkeys (1995). There were a couple references of air purifying tubes and machines connected to the tunnels which would be cool to make too afterwards. All of the film screenshots I got from the website shotdeck.com, it's one of my favourites other than pinterest for collecting references!
So I started by blocking out a segment in UE and importing it into Maya. Then I used a lattice on a cylinder and torus to deform it into this shape. Originally the "plastic" wasn't a plane and had some thickness, but this caused me problems down the line when doing the transparent material. The polycount is quite high because i knew that i wanted to turn this into a spline tool and didn't want any visible polygons.
The metal material was nothing special, but for the clear plastic, I followed a transparent glass material on yt. For some reason in the tutorial, his material seems to cast its own shadow while mine doesn't, so that's on my list of things to investigate. Tutorial:
I wanted to experiment with displacement but for now using normal maps was easier. The segments aren't UVed so i wanted to try using tri-planar projection for the first time. I took the normal and roughness map from a tarp fabric material from Quixel Megascans (https://www.fab.com/listings/ca2bcb13-13c3-4fcc-8bfc-4ba863fd2de6) projected those onto the plastic material following this tutorial. Tutorial:
I was really happy with the results! I think I might try to do a lot more triplanar projections in our game environments especially for the spacious and clean client areas. This is what the tube segments looked like now, pus the material setup.
So next job was to make it into a spline tool which wasn't as easy as i thought it would be. I went through 3 tutorials before i found one which worked for me, but it still isn't perfect. Sometimes some weird artifacts or collapsing in on itself happens if the spline is an odd length. The tutorial that worked for me was this one. Tutorial:
and the final result was pretty good! i still have some issues i need to iron out like why the plastic doesnt cast a shadow and how come when playing as a third-person character the camera has no collision with the tube when the character walking through does. There's also other things like how to put an end piece at the back of the spline regardless of its length, and also I was advised by my lecturer that it should have some kind of connecting mechanism at both or one end where in the real world it would connect to a doorway or wall so it could create an airtight vacuum-seal. For now, here are some more screenshots and lighting experiments.
I exported the greybox into Maya and tidied it up a little bit so i could see what was going on more clearly. Then I started taking screenshots and working out the different dimensions. This probably isn't necessary but it makes me feel like i understand the 3D space better. Tomorrow I'm gonna start planning out the different modular pieces.
anyway, realised i was being silly and came up with these modular pieces instead. They snap to a 1m grid (mostly, 2 window pieces snap to 0.5) and I've tried putting vertices at 0.25m intervals, because I'm hoping to use vertex painting with this kit.
I started blocking out the smaller windows but ran out of time today. Here's the reference i was given for the windows and also I'll include a screenshot of how it's looking in unreal so far.
But I've been really struggling to texture them. I've been trying to combine triplanar projection and vertex painting in one master material and it works on the default unreal content meshes but not on my own modular pieces which is very frustrating. The only thing i can think is that I'm not exporting them from maya with vertex colour data? I'm getting the feeling I've spent too much time bashing my head against this issue so I might move onto modeling the props for this room today while I wait for the answer to present itself.
I've cleaned up the topology and made a few shape changes.
here it is in unreal
I also modeled the computer station, I used a third-party asset of a keyboard though from sketchfab (https://skfb.ly/o9SRJ) maybe I'll go back and model my own keyboard but i wasn't in the mood at the time. I was given these reference images which were retro-futuristic.
Next was the desk chair. My art director liked the look of this one so thats what i went with. My final model is quite highpoly with some funky geometry going on. I'm experimenting with a midpoly workflow so im not too worried by tricount but i might go back and fix that funny geometry.
I also modeled a medical locker, nothing fancy.
one of the props in the clone room is an overhead crane that theoretically moves the clone around or something like that. I have yet to make it modular so it can fit in any size room but here it is so far.
boy am i glad it works now
I also modeled the shelf and started the sink / cabinet which will be in the X14 room. We went through a couple iterations of the shelf before we reached one we liked.
the sink / cabinet I havent finished yet but I'm almost there, the mechanical / adjustable arms on the smaller mirror and lightbulb were giving me a bit of trouble.
And today I focused on starting on some of the medical props like surgical instruments. I'm sharing some of the workload with another games group in my class whose game is based in a hospital so hopefully that'll make both our lives easier. The scissors took a horrendously long time to do I kinda wish I'd just downloaded them instead.
So it looked like i could make a shader that used triplanar projection, vertex painting, displacement, and nanite all in one go nut it seems to have a destructive workflow. It also doesnt work for instances of meshes so every instance would have to have the same vertex data meaning there'd be no variation between my modular pieces. Kind of defeats the point. This shader would be great for big landscapes where the landscape is technically one mesh but it wont work for my modular room kit so i decided to ditch the vertex painting and go down the route of focusing on displacement instead.
I decided to give the layered blend material technique a go and have been following these 2 tutorials: https://youtu.be/3nHDulvTBb8 https://youtu.be/gsxh-J2rOgA
while pursueing the layered material pipeline I've learnt how to repack the quixel megascans textures in substance 3d designer to optimize them, I've made this material with 2 textures at 2k (normal, displacement, roughness, metallic, AO, gradient for basecolour, and an extra mask) once i start using blend layers then hopefully i can apply a colour curve atlas to the gradient and give it colour.
as for the layered material, it's kicking my butt a little bit but I'm slowly getting there. I've tried everything i can think of but i cant get the triplanar projection to work with the layered material, so i think I'm gonna have to go back and re-evaluate my modular pieces and have a think about how I'm gonna do their UVs to get them to tile the texture seamlessly. I also need to have a think about whether i want each asset to have multiple material slots for them to each have their own rbg mask.
Okay, my layered material is working somewhat so I'm gonna post how it's looking so far and how I've done it. It still has a lot of issues that need fixing but I'm gonna move onto other things now like actually texturing. So here's how it's looking so far in the setdressed X14 room with everything I've made for it so far. Also I'll point out that the displacement here isn't working the same as when I tested it with the UE default cubes, plus there's some weird lighting going on that I'm going to address later:
This is how it should look with the displacement working properly:
I'm not happy with how the plaster layer's displacement is being affected by the bricks but i can't seem to find a way of fixing it.
here's how it works atm. It works witha system where you create a material layer (from which you can create material layer instances), a material layer blend, and then a master material. The 3 work together to create the above. I only have 1 material layer and it looks like this. Also Since I've learnt about the reroute node my material setups have been looking a lot cleaner.
Master material layer:
I followed this tutorial to make the material layer a triplanar projection. I've basically copies the first third of the video exactly, although he then goes on to make some changes for optimization and correcting normal issues so I want to follow up with those at some point in the future: https://youtu.be/Cq5H59G-DHI
Also going to add here that it's v important that in the InvLerp node that you check the clamped option or UE will crash on you.
Reminder that I'm using a type of map that I saw CGCrucible (yt) call a GRAH map, which has the colour gradient (greyscale albedo basically) in the red channel, roughness in the green, AO in the blue, and height in the alpha. He also said that the level of compression that happens in the colour channels ranging from highest quality to lowest goes int he order of alpha, green, red, and blue - which is pretty interesting. I'm wondering if I'll even be able to swap out the AO mask for something else, like a noise texture.
I did the same calculation for what CGCrucible calls the MNMN texture. He repacked it so that the metallness was in the red channel, the normal x axis was in the green, normal y axis in the alpha, and a generic noise mask was in the blue. Then he had a system of recalculating the normal with the z axis value being just 1, but when I tried to do the same thing it made the normals looks really bad so I just packed that z axis in the generic mask slot instead.
I did the same thing for these 2 noise textures. Now I know that's isn't optimized at all but I just wanted to get it working so I'm gonna do something about it another time. I have a noise texture for the dirt colour and also for the dirt mask.
Then here is how the base colour is calculated. Basically I'm just applying the colour gradient to the UVs of my chosen colour curve atlas. Here is also the colour curve and the curve atlas that is applied here.
This is what this material layer looks like in the preview at this point:
Next is the material layer BLEND (not material layer). This I also copied as best as I could from CGCrucible's layered material video, which is linked somewhere above. I have the exact same triplanar projection logic running here too and it's applied to another noise texture that I'm calling the Blend Noise Mask.
Then there's just the generic blending of the bottom and top layer. My opacity controls section doesnt work very well though so need to fix that.
The blend mask is calculated here using a material function that is half me copying CGCrucible and half me experimenting
I'm not quite sure how this function works but the softness parameter will blur the white and black values of the blend mask making a smoother transition between the 2 materials. I did the height area parameter bit becuase I wanted the plaster area to be a soimilar shape to the mortar but smaller so you can see that mortar peaking out.
And finally here's what I have in the master material, which is very simple. I have nanite tessalation enabled with magnitude 3 and center 0.5. I wish there was a way to do all the triplanar projection calculations here instead of in the material layer so it is only computed once per material instance, but I don't think it's possible at least from my research.
Now let's have a look at the material instance. I created a material layer instance for bricks, mortar, and plaster and put them in the new material instance each with the same material layer blend.
Final result:
And that's all there is to it. I'm looking forward to making a layered material that uses rbg masks instead of triplanar next. Hope it goes more smoothly than this one did.
It's been a good opportunity to test all of the parameters and controls anyway, I've added quite a lot of new features, although the one i really want is to control the normal map strength, which however i do it seems to make the material surface either really bright or dark. I think it might be to do with how i imported the normal map (i've packed the metallic map into it's blue channel) and my material breaks down unless the texture sample is linear colour. But maybe I'll come back to it at another point.
I've textured the ceiling and slanted wall too just to get a feel of how it's coming together, I know they're a bit ugly especially with that weird lighting. I scaled down the crane and dumbwaiter column (for lack of a better name) too to make the room feel a bit less cramped.