Sunday, April 25, 2021

3D Art II: Module Four Week Fifteen

 Game Resolution, UVs, First Bake

I had to play catch-up this week, since I was going to pivot from the water shader and tech art stuff to make a custom fish for the fish school, so that the model fit the art style better. I used some concept art for World of Warcraft to work from. I did the catfish, bottom right.

I took a rough box-modeled mesh I made in Maya to establish shape and scale and brought it into ZBrush. Since we're aiming for Michael Vicente/Orb/Blizzard style assets, I used his brush pack, mostly Orb_Cracks2 and the Flatten_EdgeProtect brush. I tried to use the flatten brush on edges on the surface, since a lot of Michael Vicente's work looks like it has this really thin bevel along any area that would come to a really sharp edge.




For retopology, I got it to around 5.2k tris. I may add a few more around the fins, since I ran into some issues in the first bake in those areas.





First bake:





Initial textures:




In engine:



I'd like to keep working on the textures and make a few more masks for the fins to see what kind of movement I can get. I'd also like to try to make some color variations for the fish school, which I may be able to do through the material instead of making a unique map.

Friday, April 23, 2021

VR Immersive Experience: Sprint Seven

 Team Three: Individual Contributions V

For this final sprint, I adjusted a few existing elements in the scene and added a few models and blueprints:

- adjusted collision on the nightstand and dresser drawers

- created a pillow rig and skeletal mesh so that they're floppy instead of rigid squares



- modeled bible and made simple textures

- imported the bible and Eric's cigarette pack, and added them as pick-up items into the scene




- added light switch blueprint that's linked to a closet light blueprint; when the player overlaps the switch and grabs, it flips the switch's mesh and changes the intensity of the closet light

- scaled down waterdrop effect on the window




Light switch blueprint:



Monday, April 19, 2021

3D Art II: Module Four Week Fourteen

 Part II: Adding Stuff Underwater



For this part of the module, I took some ideas from Ghislain Girardot's video that Nick showed us, and tried to add some underwater elements and give them a little life. 

Fish

For the fish, I found a really helpful tutorial on Youtube about how to get a static mesh to follow along a spline. It uses a Timeline to make a float track, and uses that to map the length of the spline from 0 to 1, and update the location and rotation of the fish along the spline.



I also wanted the fish to move up/down/side to side, but I wasn't sure how to get that to happen while still having the fish follow the spline, since their location is updated every tick to be on the spline. Instead, I used the World Position offset channel in the fish material to give the appearance of movement. It uses Time, a Sine node, and a vector parameter, which is then multiplied by either red, green, or blue to assign it to the x, y, or z axis respectively.

RotateAboutWorldAxis_cheap node to make the fins flap a little, masking the front of the fish's body and leaving the back half to be rotated along the z-axis.











Seaweed

The seaweed also uses its material to simulate movement. It uses two nodes, a RadialGradientExponential node and a SimpleGrassWind node. The RadialGradientExponential node is used to mask the very bottom of the blades of seaweed so that it's not moving at its root. The SimpleGrassWind node actually moves the seaweed.


The meshes for the fish and the seaweed aren't mine, and came from Sketchfab.

Edge Foam

I updated the edge foam to also try to mimic what Ghislain did, but I'm not sure I like it better than the old edge foam.

Instead of using a Noise node, it uses a tileable texture map, and uses the DistanceFieldGradient node and the DistanceToNearestSurface node like the old set-up did, but in this case it uses it to pan the texture.



I think I might revert it to the old edge foam set-up, but I'm not sure.

Monday, April 5, 2021

3D Art II: Module Four Week Twelve

 Part I: Water Shader Set-Up



There ended up being tons of really helpful resources for making stylized or simple water shaders. I did bring Adam Homoki's really complicated cartoon shader into the project and took some elements from his set-up, including his math for the Gerstner waves/world displacement, plus a few texture maps and material functions.



World Displacement

This uses the Cartoon water shader's Gerstner waves to calculate world displacement. It's a lot of math and cosine stuff that I don't fully understand, but I think it adds a lot of dynamism to the shore since it creates a more radically different surface than just a sine function.





Base Color with Depth Fade

I watched a YouTube video that used depth fade, and thought it would be useful in transitioning the ocean and the shore. It uses a blend overlay node and lerps using a depth fade node as a mask.



Fresnel Color Transition

This creates a change in color for distant water based on the viewing angle and makes the water a little less flat-looking.

Normals

Something else I took from Adam Homoki's shader: his normal blend material functions and normal maps. I could probably honestly do without them and use a simpler normal set-up if I needed to.



Edge Foam

This I got from a nice and simple YouTube video Nick shared. It needs Distance Fields turned on in the Project settings, since it uses those to judge where to generate noise.



Roughness

Played around with this quality, just trying to make the sun shining on the water surface a little less weird-looking. It uses a fresnel, and I'd like to work on the transition a little, although the hard edges might contribute to the stylized look since it makes it look a little cel-shaded.

Edge Fade

Uses the same node as the edge foam to soften the transition between the island and water. The issue is that it also does it for any objects that may be floating in the water, and you can see down below the water plane.



Sea Foam

These maps were taken from Adam Homoki's shader. It looks at the world position to tell the height of a wave, and if the wave is high enough, it applies the sea foam mask.



Foam Sparklies

This is an emissive quality that uses the same mask the sea foam uses to limit the location of the shiny bits. The two maps pan, and whenever their pure-white spots overlap, the If node lets it through and it comes out as an emissive spot.





Friday, April 2, 2021

VR Immersive Experience: Sprint Six

 Team Three: Individual Contributions IV

I cleaned out all our old geometry that was hanging around in our persistent level, so now the level that loads from Hez's menu should match what we've been working on.

I also worked on collision, since I know the last couple times Chris tested the level, the bed collision was just a big square encompassing the whole volume. I fixed the collision on the bed, and also fixed the collision for the closet shelf and hangers.

I implemented a clock, since I really liked Chris' idea of a sort of "diegetic" timer, since it would be more immersive than the HUD element. Right now it's just set to start at 1:55 AM, and getting it to keep two digits in the minutes display (ie. show 00-09 instead of 0-9) was actually more complicated than I was expecting, or at least I couldn't come up with a more concise way of doing it. My gif example has the delay sped up, in-game it's accurate and a minute elapses.




Another piece of feedback we got was to work on interactive elements, since in VR people want to immediately start throwing things around. I made the pillow a pick-up object, along with the cigarette tray. The smoke emits from the mesh, so it follows it around as the tray gets moved. I'd like to add individual cigarettes at some point, too.