After the end of the alpha
stage, things continued on just as before for me. It was apparent at
this stage that the help which was suggested to aid with the
modelling and texturing duties wasn't going to materialise. This
meant I had a lot of work to do and I would need to save time where
ever possible. This was the point where I was glad that the VR game
would require low poly assets and also glad that our previous
decision to include mostly tiling textures using Substance Designer.
We continued as a group
the same pattern, Maciej would design, I would model and UV then
Alessio would implement into the engine and do the coding. I went
through all the designs as they arrived on Trello. For all assets,
except characters, enemies and plants we would be using the tiling
textures with vertex blending in Unity to give them their variation.
This was important because the scale of most things in the scene are
very large, so had to treat almost everything like it was terrain in
any regular game.
At first, I overlooked the
importance of consistent texel density. There are many large models,
and for the first few models I made, I didn't UV to the correct scale
which meant going back to make sure they all had the same texel
density. This was so we could apply a texture to any object and it
wouldn't look stretched or pixelated. After unwrapping each UV
section of any object I would rescale the UV's well above the 0-1
space so they naturally tile. I would also make sure that the grid
squares always matched to the texture density so if two separate
objects were adjacent with the same texture, they would appear the
same resolution.
After these technical
parts were decided, the next part was to model many low poly assets
and create a large enough library of tiling textures in Designer to
give Alessio enough variation when painting objects with the vertex
painter.
First it was buildings and
statues. Pretty straight forward. Make sure they don't have many
straight lines, add variation and random kinks to the corners, bevel
only when necessary to change the silhouette enough. Keeping in mind
that this will be a very large level in VR so overall poly-count will
need to be low.
Next was all the random
additional items to add to buildings and streets to populate them
(market stalls, flags, destructible walls, railings etc). I had
decided to do all these props separately so they could be copied and
placed in engine to customise as they went, hopefully saving time for
us all in the long run. These were designed so that any texture could
be applied to them and it would look fine.
Most of these smaller
objects were easy and didn't take more than one iteration in most
cases. The ones that took the most time was the actual terrain. The
main city platform, the huge cave model with branching mines, beach
cave, bridges all had to keep being constantly re-moved and updated
through the development process. For instance I had already created
the cave and completely UV'd it and basically had to do all of it
again which was a huge amount of time lost. So at that point, all
large objects that may need multiple iterations I decided not to UV
right until they were definitely not going to change anymore. This
had the benefit of not wasting more time, but also was hard to
visualise in engine because all the textures were messed up on them.
In the end though I made the right decision, because I had to change
some of these models countless times. Some were even removed
entirely.
The images are hard to see
in Maya because of the scale of the level. A much better
demonstration can be experienced when playing through the level.
After the smaller objects
were done, and while simultaneously making changes to the
environments, I spent my time creating (probably too many) textures.
My reasoning behind making a lot was because I was a little paranoid
that the environment wouldn't have the required variation when left
with only a few textures in such a large space. I started with many
rock variations as pretty much everything is made of rock! I thought
it would be useful to have a few quite different types so every
object doesn't look like it's made of the exact same material.
I already had a few
textures done from the alpha, which after some texture testing in
Unity I thought were a bit too dark and oversaturated. The Substance
Designer viewport is nice quality but often is more washed out than
in Unity for some reason. I also edited the older ones as well as
made a bunch of new ones. When I tested out all the current rocks
extensively in my tester Unity project with the substance painter, I
discovered that many were very harsh, so I decided to make a soft
version of all the biggest offenders. It wasn't very hard, a bit of
desaturating, toning down the height maps and making the normal maps
less harsh. The good this about these is that they blend very nicely
with their originals. Adds a nice bit of variety to the level.
Next was to make the more
specific textures for objects. I found some particularly hard when
trying to keep a more chunky, simplistic style to not become too
realistic. Metal, and rusty metal were prime offenders. Also I found
leather quite hard to not make too detailed, and in the end it's
probably my weakest one.
The great thing about
Designer is that you can have Unity set the resolution of the
textures on the fly. I've put a soft limit of 256x256 on them, so
that is what they import at. I believe Alessio stuck with that
because they look surprisingly good still even at this lower
resolution. The good thing is that if he ever has the need to just
increase the resolution of the textures, he just has to change a
couple of parameters in engine, and they will all update. A very nice
compatibility feature of Unity and Substance.
After these were all done,
I cleaned up the Substance graphs to cause as little computation as
possible in engine, and only had output nodes that were strictly
necessary: Albedo (with height map as the alpha of albedo because the
vertex painter reads the height in this way for the blending), Normal
and Metallic (with Roughness as it's alpha).
My next task was to
finalise all the character and enemy models. I had to go back and fix
them up and UV them properly so they could be implemented into the
engine. Easy enough task, just time consuming.
Then the player 'arms'
needed to be implemented properly so I had to fully model them out,
as they would be in front of the users vision the whole time when
playing, and also would have UI elements attached to them so needed
to be implemented sooner rather than later. Because of their
prevalence in the scene, and proximity to the camera, these would
need to be slightly higher poly-count that most other things in the
scene.
I initially had a lot of
trouble trying to model these out in Maya. Even with decent model
sheets, it was hard to properly visualise the shape, and they were
just high enough resolution for it to become a confusing and
inaccurate mess. After a few attempts at doing some different methods
I ended up going into zBrush to do them. It was really easy in zBrush
and wish I had done it sooner. I'm much better at sculpting the more
complex shapes in there, I find it easier to visualise. When I got
the shapes correct, I simply dyna-meshed the poly count down to an
acceptable amount then did a few decimates until the poly count was
really low and the geometry was all triangulated and chunky. I then
imported them back into Maya to do the UV'ing.
Next was the character who
will guide the player in the form of tutorial messages: The
Shadeling. Now, this guy doesn't have traditional textures but was
going to be particles effects all done by Maciej. He was new to doing
particles and I was new to setting out UV's for them so this took a
few iterations and back and forth to get the UV's in a shape where
the particles and scrolling textures he was using looked normal. This
ended up with the model being very basic with essentially just
floating planes, but appeared the best way of making it look ok when
animated.
At this point, I was
pretty swamped with quite a few models and textures to finish up and
so I had to source some of the model making to Maciej. He said he
could do the plants because they hadn't even been started. So the
only modelling I didn't do for the project was the plants. He would
model and UV them and I would texture them. Probably should've been
the other way round considering he's the artist! But, he had trouble
using the painting programs so I said I would do that as I could
easily set things up my end, and then the textures may look more in
keeping with the rest of the level as well.
While he modelled the
plants, I started texturing all the villagers and enemies in
Substance Painter this time. Initial tests with only tiling textures
on the characters looked pretty bad in engine and needed additional
details to not look so flat. So I had to re-arrange the UV's (again),
the rock parts of their bodies would be one sheet and one material,
the clothes and accessories would be another sheet but various
materials. I had to make sure everything was given the correct
materials before importing into Painter.
For each character, I
imported the model (only low-poly because there is no high-poly for
baking) I would then bake the only maps I was able to in Painter. The
most important of these were the position map and curvature map.
These would help me add interesting dirt masks to gain that
additional detail the models were previously lacking. I first gave
the models one of the selection of my Designer textures I had
previously made. They are fully compatible between programs so this
was easy. I added different rocks or material for each part of each
model trying to keep to Maciej's original design as much as possible.
I then added ground dirt or edge wear type masks to give them a
slightly more 'real' feel than everything else in the scene.
I tried to keep these
details and minimalist and simple as I could without looking like
they were painted on and also without looking too realistic. Because
of just how low-poly the models are, they are in no danger of looking
overly complex with the level of detail I gave them.
I did that with all the
villagers, and also all the enemies too, with a very similar process.
Next, the plants were
modelled so I could texture them too. First I had to do a bit of UV
cleaning up, getting rid of distortion and maximising the space
available, and bit of adding smoothing groups too. Then I did the
same process in Substance Painter as with the characters and enemies,
but this time keeping the textures all on one sheet. Each character
is 2 sheets of 512x512. I kept the plants and trees the same, only
the smaller plants were 256x256 instead. I stayed as exact to
Maciej's original concepts for these plants as much as I could, I
think they turned out quite well, and quite accurate to the
originals.
After that was a bunch
more fixing random things: resizing platform elements; making
variants of railings; decreasing slope intensities; changing bridge
dimensions; adjusting the puzzle height on the door; changing and
resizing some of the cave and mine layouts etc. The list goes on...
Finally I had to model the
menu. In VR, the menu is often a physical space instead of a 2D
pop-up and so the menu would be a collection of objects to be
interacted with. In our case we have a smaller cave which the player
stands in, then plinths and shelves which have objects which can be
moved and placed in the necessary areas. Easy enough to build, and
using the same texturing technique as all the other geometry.
Only a few more fixes
occurred after that for me, little ones here and there. To be clear,
I pretty much stayed away from all engine responsibilities in this
project. I made the models and textures and made everything as easy
as possible for the other two to implement. All level design and
arrangement, even vertex painting has to be credited to the other two
who primarily worked within Unity. I think we found it developed
naturally this way, it is easier to organise and manage when there is
only 1 build being shared between two people rather than three. Even
though I would have liked to have a bigger input when it came to
placing all the objects and the level 'set-dressing' I had too many
other things to edit to be able to put in enough time when it was
required. I also would have liked to do more of the vertex painting
of the level. I mean I did all the preparatory parts like sourcing
the vertex blender and creating the textures and didn't get to do the
most fun part.
During the project I had a
solo 'texture tester' Unity project which I then transformed into a
bit of a demo scene to show some images for the portfolio and blog.
Because of their low-poly nature, they look much better in engine
than being shown off in a render compared to higher-poly models.
In this project I hadn't
really learned a whole lot compared to what I wanted. I originally
joined the team as a character modeller to specifically enhance my
ability to create higher-poly characters. As the project progressed,
the poly-count got lower and lower and my duties became further and
further from what I originally envisioned. These factors added up to
me not gaining much from what I wanted, but I did learn some skills
which I didn't think I would be needing, all useful skills when it
comes to setting up environments, especially in terms of texturing.
I did learn about texel
density, which doesn't apply as harshly when making characters
compared to huge tiling environments and terrain. I did it in a bit
of a 'home-made' way so I didn't discover a good 'universal' way of
using it in a project like I would need to if I was working alongside
other environment artists.
I learned a neat trick of
the transpose random variation in Maya. Nothing major, but very
useful to creating uneven surfaces and randomising the vertices of
objects a little to give them that 'wonky' look without having to
edit them all individually. I did actually discover that nearer the
end so the the majority of the level was done manually unfortunately.
Another small thing I
learned was how to UV with particle effect animators in mind. This
does apply to character and will be something I bear in mind in the
future. For instance this must happen a lot in action RPG's, MOBA's
etc. which have a lot of particle effects directly around, and on the
the characters clothing.
The most significant thing
I learned by far was how to use Substance Designer, as that will be
useful whatever I go on to do, especially environments. I had a bit
of trouble keeping the textures to a more simple style. Making
realistic textures in Designer is much easier than one would think
and trying to keep the variation just enough to not be boring, but
not enough to suddenly seem like it could be a real surface. The
smooth metal I made, and the rusty variant were the perfect
demonstrations of this. If you add small striations and a bit of
surface noise, put 'metallic' value to full you basically have a real
looking metal. They key was to limit the noise and reduce the
metallic amount. Even though it is pure metal, reducing it down to
60-70% or so makes it feel just 'off' enough so you can tell it's
metal but doesn't look realistic. The rust was by far the hardest and
I don't think I managed it. Rust will just look like dirt if it
doesn't have that speckled variety, but it was just way too easy to
make it realistic looking. I think the one I ended up with still
does. I tried reducing the noise and blurring the edges to keep the
colours and shape without all the tiny noise detail. I don't think it
works that well, and it probably just looks like weird blurry rust.
Most of the others I
managed to straddle the line enough to stay within the style and I'm
pleased with some of them and the way the environment turned out as a
whole. I think it looks quite good considering all the structures and
terrain are very low poly for their size and every environmental
texture is only 256x256. I think it looks way more detailed than it
actually is, which for me personally, was the entire goal of this
project. I tried to make a large level that would look quite detailed
and not too blurry close-up and still be able to run in VR. There is
definitely further testing and optimisation to do as it doesn't run
as well as we'd like. I'm fairly sure with further optimisations and
refinement this technique could make it a viable one to use on larger
VR levels like these.
Some more of the characters and plants in engine:
No comments:
Post a Comment
Note: only a member of this blog may post a comment.