Вы находитесь на странице: 1из 40

AAA game environment production

AA3S09_2018_v1: Game Project Part 2_Personal (2018/19)


Soma Wheelhouse
16014820
Bhutanese Village Environment.

In the previous module, I completed a block out and asset list for a AAA Bhutanese village
environment(shown above). In this module, I aim to produce these assets, and polish the
environment.
Texture Creation: Stoney ground
Firstly, I sculpted some stones in Z-brush. I then baked the high-poly Stones to a plane in Marmoset, in order to convert
the high poly mesh to a texture. The colour map was made in Photoshop; I
used the ID map from the marmoset texture bake, to separate the dirt from
the stones, and also to variate the colour of each stone.

I decimated these stones, and imported them into 3Ds max. I then
duplicated and placed the stones, starting with the larger stones, and
finishing with the smaller ones.
Texture Creation: Grass ground
I modelled grass blades/clumps in 3DS max, and
duplicated these to make a section of grassy
ground.

The high poly grass ground was then baked


to a plane in marmoset, to produce the
tiling texture. I used the height and ambient
occlusion maps from this bake to create a
color map in photoshop.
Landscape Material
The ground needs to blend between mud, earth, and grass.
In order to achieve this in a convincing fashion, I made a material function which takes two input layers, and blends them based on a
mask. This mask is created by getting the Max value between two heightmaps.
Landscape Material
Landscape material node graph
I used material function on the previous page to blend
landscape layers in my landscape shader.
Landscape Material

This video shows the Landscape material system in action


Texture Creation: Mud Path
Firstly I created these alphas using photographs/photoshop. I Paths have a directional pattern to them, because people and vehicles travel along them in a direction. I could not
used these to sculpted a tiling mud texture in Z-brush. create this directionality using the landscape texturing system, So I used decal meshes to lay down the path.

The path mesh is composed of


two layers. The edges of each
layer curl downwards, in order to
ensure the path’s edges always
meet the ground, and do not
float in mid-air.

The first layer of the path has this opaque, parallax mud material.
Mud Paths
The second layer has a
transparent decal material
applied, which creates a
smooth blend between the
path edges and the
landscape.
Mud Paths

This video shows the Path system in action


Stone Wall

I knew the stone walls would cover a lot of screen space, so I took extra care making these.

Firstly, I sculpted stones in z-brush, and placed them into a tiling stone I then used Z-Brush's noise generator to create a I then put the heightmap into substance designer,
wall pattern in 3ds max. grout which fills the gaps between the stones. where I added detail and created a colour map.
Stone Wall

Stone wall detail texturing - Substance designer graph.


Stone Wall: Mesh
I wanted to give my stone walls some 3D depth. This with could be done with a dynamic tessellation shader. However, dynamic tessellation is significantly more expensive than manual
tessellation, and is very inefficient in terms of poly-count. So I created a decimated mesh which I used for the wall’s LOD 0.

I created a pre-tessellated, decimated version of the wall


mesh, for my LOD0. The mesh has planar mapping, and This video shows the LOD0-LOD1 transition in UE4
planar normal. This means It can use exact the same
tiling texture that I created previously.
Stone Wall: Corner
Currently, the stone walls do not So I made a stone wall corner texture, using the Instead of baking the highpoly model onto a
meet seamlessly at corners. same workflow that was used to make the stone plane mesh, I baked it onto a low-poly
Baked to 1024x2048
walls. corner mesh, modelled in 3Dsmax.
Texturemap
Stone Wall Corner

Without corner mesh With corner mesh


Tilling wood texture
Because there are many wooden elements within my scene, I decided to make one tiling wood texture to help me
texture all these elements.

I used one of Substance designers Finally, I made the base colour map in
I then flattened it, and added knots in z- substance designer, based on the height
grunge maps as a base brush. map.
Tilling wood texture
I made a basic wood material by combining this tiling wood texture with a grunge texture. I also added vertex colour controlled weathering/desaturation.

This is what the tiling wood texture looks like, when applied to the rabsel.
Roof
The wood roofing I made in pre-production was not ideal; The wood was generic and not accurate to the
reference.
Looking at the reference, I now realize the planks are split (not cut), and have a ridged texture to them.

So I sculpted split wooden planks in Z-brush. ref

Baked them to a low-poly mesh (created in 3DS max)


and textured them in substance painter.
Roof
Using 3Ds Max, I assembled the low-poly planks into a modular roof meshes.

2048X2048 roof planks texture set


Door and window
I made the medium-poly base meshes in 3Ds max, I then added details such as wood grain, and damage, by sculpting the base meshes in Z-Brush.
Door
I modelled and UV mapped low poly door and window meshes I then baked the high poly sculpted models onto the low poly models, using marmoset.
in 3Ds Max.
Door
I then textured the door in substance painter. I used the tiling wood texture I made earlier, but also used various other
texture resources from substance painter’s default library.
Rope
I made a rope base mesh by twisting cylinders together in I used this rope texture on billboard meshes, to add rope
3dsmax. I then manually frayed the rope, using Zbrush. around the building rafters.

I then grabbed
texture maps form
the Z-brush
viewport; an
ambient occlusion,
normal, and alpha
map.
Wood planks
To get an accurate wood Houdini
pattern, I made a procedural Node Graph
plank generator in Houdini. It
creates tree growth rings and
performs a Boolean cut
operation on them in order to
simulate the wood pattern
you would see in real lumber.
Reference:
How a log is cut into lumber
Wood planks
I wasn’t sure I could justify
the time it would take to
make the Houdini wood
generator add damage
and knots, so I sculpted
these details in Z-Brush.

I then Baked the HighPoly plank model onto a lowpoly plank in Marmoset. And created the Albedo map in photoshop
Wood Fence
I used this one plank to make a modular fence asset, which I used to create a Spline Fence tool in UE4. This Video shows the Spline Fence tool in use.
More Wood
I used the same Houdini + Z-Brush Sculpting workflow for other wood assets. However, I textured them in substance painter, as I found Photoshop texturing to be too unflexible/destructive
when I used it to texture the plank fence.

High Poly Wood

High poly Z-brush sculpts


baked to low-poly models.
More Wood
Wood textured in substance painter.
Flags
In order to create the frayed fabric of prayer flags, I I screen grabbed normal and AO texture maps
first created a high-poly fabric weave in 3ds max. Each from the z-brush viewport. I overlaid Prayer flag
thread is made from a high-poly cylinder. A “wave” graphics (sourced from online photos) in
modifier is applied to each cylinder to simulate a I then manipulated the threads in Zbrush, using photoshop, to create the BaseColor map.
weave pattern. the grab, and groom brushes.

I used mesh vertex color to change the colour tint of each flag in
UE4. These flags can be applied to the scene as spline-meshes.
Flag

In order to make the roof I then decimated the I Applied a solid yellow
pole-flags, I simulated the flag geometry down to 171 material to the flag, with the
cloth in Marvelous designer. triangles. foliage shader model enabled.
Rocks and rock wall
I needed individual rocks to make rock
walls. These rocks also scattered about
the scene individually.

I used UE4’s physics simulation tools to places


the rocks into a rock wall, and then combined
the rocks into a single, modular mesh (for
efficiency and performance reasons).
FireWood
Bhutan is a cold, harsh environment, so
the more isolated villages burn a lot of
wood for heating.

I first sculpted the wood of the logs In Z-


brush.

In order to create tree bark around the logs, I needed alpha brushes, which I obtained through photo scanning trees, and depth-grabbing the scans from the Z-brush viewport.
FireWood
Using my bark alphas, I sculpted a separate bark layer for each piece of firewood.

I UV mapped and re-topologized the logs in 3DS max, baked them in Marmoset, and
created the colour + roughness map in photoshop.
FireWood: Twigs
Since there is so much firewood in the village, it makes sense to have some twigs and
sticks in the scene.

I modelled twigs, ontop of photographs of twigs, in I then combined these into larger Which I baked to low-poly twig
3DS max. assemblies of twigs planes.

Twigs attached to firewood


FireWood: Stack

I stacked the firewood into a pile, using UE4’s physics simulation system, and merged it onto a modular
wood stack mesh.
Moss
You may have noticed moss in some of my previous screenshots. This page illustrates how this moss was made.

I took photos of moss


And combined these in photoshop, to make a tiling moss texture.
I used Knald to create a normal map for the texture.

This moss was applied to the sky-facing parts of various assets in the UE4.
Scene Development
Some screenshots showing how my scene developed during this project.
Performance

On a laptop with a GTX 1060 GPU, the scene is generally performing at 60 FPS or more – See video bellow. Considering the small size of
the scene, this is not Ideal. In a real production, I would need to do an LOD and performance optimization pass on the scene.
Final Renders

Please see the “Renders” folder. (Uploaded separately to this document)


Post Mortem

This project did not go entirely according to plan due to time constraints and other commitments. However,
based on feedback, I view this project as a success.

Good points about the project:


• Assets were re-used and combined a lot. This technique proved to be very efficient; it is what made the
project possible within the time frame I gave it.
• I'm glad I began to use Substance painter and designer over Photoshop. It is difficult to commit to making
things in Photoshop, due to it’s destructive nature.
• The time spent on the landscape material proved to be worth it. The height blending eliminated
repeating patterns, and gave the Stoney ground textures more depth.
• The style is not entirely realistic, but is still aesthetically pleasing.
• This project was finished (to a reasonable degree) within the planned timeframe outlined in part-one of
this project/module.

Bad points about the project:


• Wasted more time than necessary on Z-brush sculpts. The sculpts don’t need to be that high detail.
However, it was good practice.
• Making the decimated stone wall mesh tileable was very time consuming. It is technically far more
efficient than tessellation, but very inefficient in terms of time consumption.
• I had planned to explore UE4’s Hierarchical LOD system, and it’s more advanced LOD tools. However, I did
not have the time.

Вам также может понравиться