Website powered by

Jr Tech Art Journal - Vehicle Rig Tool (Part I)

Work In Progress / 16 January 2024

Quest 1: Creating Base Initial Setup for a Shared Project

Hey there, fellow tech art peeps! 👋🎮 As part of a class project during my second Term at BCIT, we are going to be developing an Automatic Vehicle Rigging Tool, and I'd like to take you through the process! First of, starting with preparing the initial mesh setup in Maya for a shared project.

Main Challenge: Dumpster Optimization

As a team we decided on using a Dumpster model given by the teacher, which was purposely broken in various aspects, meaning it was our job as Technical Artists to clean it up as best as possible! We collectively brainstormed, delving deep into the planning process to decide how to break down the model - Movable versus not movable parts became the guiding principle. It's crucial to consider how the pieces fit together and understand the object's movement during this planning phase.

I had the responsibility of leading the charge in setting up the initial file. Here's a breakdown of my journey:

🧹 Clean Slate: Source Folder Cleanup

It all starts by creating a root project folder in Maya, so when working with others it's a matter of updating certain folders like 'scenes', while still sharing all important project aspects like images. Afterwards I decluttered the source folder, bidding farewell to unnecessary files, and I moved all texture images to the 'sourceimages' project folder in Maya.

File Before
File After

✨ File Optimization: Maya Magic

I then Optimized the scene in Maya,making sure to check the 'Unknown Nodes' tab to get rid of any unwanted extra data. Afterwards, I deleted all unnecessary geometry and lights, as the project being worked on deals with rigging and scripting, but not rendering.

You can find it in File > Optimize Scene Size 
File Before Clean-up

📏👀 Scaling and Visibility: Adjusting Properly

I noticed the object wasn't sized properly, and when I set it to 1 it became to big for the camera clipping planes, meaning I had to adjust all clipping plane settings for the object to be visible from all angles. 

Object badly sized
Camera Near and Far clip plane settings

💾 Saving Grace: .ma vs. .mb
I saved the file as .ma, given .mb files are much more complex to edit as they are binary.

📂 Full Organization: Layers among Layers
 I grouped the rest of the meshes as best as possible, aiming to provide a clean canvas for my teammates. I also created Layers in the Display tab, labelling them as—'todo,' 'in process,' and 'done'—keeping everyone in the loop on optimization progress.

Maya Layers

Main Process: Separation!

With the stage set, it was time for the main act—the actual separation process. I took charge of the doors:

  • 🚪✂️Selecting and Separating
    • I selected the faces of the mesh pertaining the doors, which proved a bit challenging as things were tangles together and many faces were broken apart in unusual ways. 
    • After selecting the faces, I would use the Mesh > Separate options in order to keep doors geometry apart from the rest.
    • When the doors were finally separated, freezing numbers and erasing history ensured a clean break.
Separation process - All meshes tangled up together while I sorted out everything
  • 🔄 Pivot Changes
    • With the pieces gathered, I set the pivot where it made the most sense for the truck setup. Imagine it as the point where the doors gracefully swing open and closed.
Change in pivot

And there you have it—our journey into the nitty-gritty of preparing the initial mesh setup for our vehicle rigging tool. Stay tuned for more tech tales, and feel free to share your thoughts or ask questions in the comments! 🚀🛠️

Jr Tech Art Journal - Vehicle Rig Tool (Part II)

Work In Progress / 07 February 2024

Quest 2: Cleaning up🧹

Hi once again! And welcome to the second part of this challenge. Let's jump right in! 

Setting up project preferences

Not completely related with the project but something that might help as a tip, before starting out with testing I set up my Maya to have specs that I prefer.

Starting out with my Background Options! I've never really paid much attention to Maya's background color, just changing it (with alt + 'b'), but once I actually changed it to a personalized color I realized the power in it. Or at least the fun! Either if it's for visualization issues when certain colors aren't quite helping while working, or just to have a different background color, is fun to test out new layouts!

To access this menu go to Windows > Setting Preferences > Color Settings

Maya Color settings

And this Menu is not only related with the background, there's lots of things you can change if you properly take the time to check it out, like your actual wireframe! 

Next thing I did in the same menu was to navigate to the Inactive tab > Objects > Polygon Surfaces in order to access the line opacity. I've always found it harsh when inactive, so going into the color picker and changing the alpha channel gave it a much more smoother appearance that also proved to be less distracting while modeling. To look more into this checkout Autodesk's documentation.

Inactive tab in color settings

Changing Alpha channel for opacity

Wireframe final look

Uh-oh! Flipped Normals

When exporting the truck mesh and taking into Unreal I discovered a horrible problem: Flipped Normals

Flipped normals is when the normal on a polygon face switches direction. Because of that the truck was looking like this in Unreal:

Unreal fbx import

I re-imported the fbx in Maya and discovered the truck had general problems with the normals, making us reach the next step.

Flipped normals of re-imported mesh

Flipping Normals and Good topology 

The process of flipping normals is pretty quick, as it's mostly done with just one button in Mesh Display > Reverse

Reverse option in Maya
Result after Reverse

I also tried flipping when possible using the Mesh > Cleanup, going into its options and making sure to remove Nonmanifold geometry. That seemed to get rid of flipped faces without me having to manually select each face, making the process quicker.

Where possible, I used Maya Mesh > Reduce option to decrease the poly count and clean up the mesh, ensuring no weird artifacts were present if the reduce percentage was too high. After reducing, and just to be safe, I made sure to select all vertices from my mesh, press delete once (this deletes vertices that aren't connected to anything, but watch out for corners of plane objects when doing this!), and finally merge vertices (selecting the vertices, press shift + Right-click and hold > Drag the cursor to the Merge Vertices option > Merge Vertices). It's important to merge vertices to ensure that even if there are vertices one on top of another, potentially breaking the mesh unnoticeably, they can become one and avoid having holes in the mesh.

Merge Vertices in Maya

Some pieces weren't really getting cleaned with some of the options, so I had to manually select edges, delete, and reconnect where needed in order to clean out the topology step by step. Due to the truck's dimensions, this took roughly 60 hours to complete, having to go piece by piece following these same steps. Even though it was fairly hard work, it was rewarding to see the results! And I can't wait for the next big step in the project.

Manually selecting Edges to re-route line-flow
Cleaned faces when edges are erased

Other tips when cleaning up a model! 

If the object is symetrical, in order to reduce time working on both sides you can either turn on symmetry in the axis that works best for you depending on how the model is setup, or make a vertical cut right at the half of the model, erase one half and just focused on the remaining one, and once done do a Mirror of the object. 

Mesh before clean-up
Deleting half the faces
Final piece mirrored

And the final tip! Sometimes, if everything is too messed up or the multi-cut tool isn't creating the cuts you need, what I do is completely erase the face and extrude the ones that I see fit. I usually take into consideration how the edge flow must be and what faces and vertices I might need to connect with others so that they effectively fit. Then, I try my best to connect the vertices from the new faces with the previous ones and make cuts when needed.

Mesh before clean-up

Erasing faces to re-fill hole with proper topology
Extruding inner faces
Re-connecting vertices to make proper line-flow
Mesh after clean-up

In some cases, instead of extruding faces you can select edges > click and hold the right mouse button > Bridge. This taking into account you already know more or less how the mesh should be reworked and how many faces you need to close out the hole. 

Bridge options

After some hours

The week went by and I was able to finish the truck! (Not before almost loosing the whole file but luckily I was saved by John Santana), and this is the final result:

Truck Front
Truck Back and Sheet
Truck Inside
Mesh before

And this was the final outcome in Unreal!

Cleaned Truck in Unreal Engine 5

Next week - UVs

And that was the process for the Dumptruck cleaning! I learned so much throughout it and, even though it got really challenging at times, I enjoyed the opportunity of testing out my skills and learning new methods to clean-up a mesh.

Next week I'll be dealing with the truck UVs and maybe texturing, hopefully with this new topology things will turn out ok!

Thaks for reading! If you have any other method for speeding up the cleaning process that you'd like to drop in the comments I'd be happy to learn. And don't forget to watch-out for new post!  

Jr Tech Art Journal - Optimization (Part III)

Work In Progress / 07 February 2024

Quest 3: Redoing UVs and Textures 

Big changes sometimes take baby steps

Hello artists! I hope you are having a good day! Let's start this post with last week's progress.

I went into the meshes from the Custom Pieces folder, which encompass those rarely repeated or uniquely shaped meshes, and I decided to address our two current arches. This cleanup turned out more complicated than anticipated, evolving into an adventure involving not only retopologizing but also creating new UVs and textures in Substance Painter. 

Let's dive into the process!:

I selected the first mesh to work with, our entrance arches for all levels

Selecting Arch mesh in Unity

I selected the first mesh to work with, our entrance arches for all levels. I brought it to Maya and initiated the cleanup process by navigating to Mesh > Cleanup and activating the options that best suited my case. The most crucial one for me was removing non-manifold geometry, as it tends to cause several issues in later processes.

Cleanup process using another arch

I then retopologized using Maya 2024's Retopologize option in the Mesh menu, ensuring not to preprocess my mesh to maintain the same shaping as best as possible.

Arch column topology after Retopo

I re-did the UVs, striving to follow best practices:

  • Arranging UVs efficiently to maximize texture resolution and minimize distortion.
  • Avoiding UV stretching by distributing texture space evenly across the UV layout.
  • Placing seams in areas that are less visible or where texture continuity won't be easily noticed.
  • Ensuring that UVs do not overlap.

This was the final result.

Retopologized arch and new UVs

The final result showcased the retopologized arch with new UVs. As the UVs were changed, it was necessary to equally adjust the textures. So, I re-did the texture work in Substance Painter as these arches are meant to be baked meshes.

Arch in Substance Painter

Unfortunately, I only managed to work on 2 meshes that day, with the other one being the remaining arch that we mostly use when the game is in Practice Mode.

Second arch new retopo and UVs

• • •

 Next on the list!

While I haven't been able to progress further, the plan is to finish working on the custom pieces folder before February 20, our big milestone where we are to showcase the game at Quiver Games game dev meetup! Hopefully, we'll achieve it!

Thanks for checking out my work! And don't hesitate to drop a comment if you like it and keep posted for the upcoming updates.
 

Jr Tech Art Journal - Optimization (Part II)

Work In Progress / 25 January 2024

Quest 2: Figuring out UV Overlap

What's UV overlapping? Let's dig in:

Reminder that this is all taken from Unity's documentation, so don't forget to check that out to understand better!

UV overlap generates as an artifact when creating lightmaps, and it's caused by how GPU sampling is working.
Lightmaps have tons of charts, and sometimes they can bleed into each other if they are too close, that's why there must be enough space between charts to avoid this issues.

How do we keep them separate? - Determining optimal chart placement! This is dependent of lots of parameters, so it's important to constantly check your model in Unity and try to understand what's causing the issue and how to fix it.

But how do we identify this overlapping quickly? Well Unity has tools for that! There's actually 3 ways to identify them:

  • Console message: It actually also lists all the affected GameObjects, so that takes away some time.

Console Message with number of objects with UV Overlap

  • UV Overlap draw mode: it highlights with red the texels that are too close to those of other charts. Mine wasn't there right away, I had to go: 
    • Scene View > Overlay Menu > Toggle on View Options
    • Draw Mode (The little bug) > UV Overlap
UV Overlap Draw Mode
  • Baked Lightmaps Preview:  It red colours problematic texels.
    • Go to: Lighting > Baked Lightmaps > Double-click the highlighted lightmap > Preview > Baked UV Overlap (see dropdown in upper right corner).

UV Overlap Lights baked

Time to fix it in the actual project!:

I went into the first folder I wanted to tackle - Floors! They are present in all levels and hold tiling textures, so optimizing this was a priority.
For the grass blocks, I erased all possible inner faces, and fixed UVs accordingly. We decided on having lots of detail in our texture, which is why we set our maps to 2048.

Selecting and deselecting faces in Maya 

Meshes with inner faces erased

To see changes in real-time, is important to export the .fbx mesh into the actual Unity folder, replacing the already existing one. Although scary, when working with a repository making those changes for testing isn't a problem, as you can always reverse any commited changes to a version that still works.

Maya fbx export options

I was still getting UV Overlap issues, but I found out from a former Unity professor that this is something usual with Unity, and as long as your actual level meshes aren't having any light issues, you are pretty much ok.
So... I went on to keep optimizing the rest of the meshes! 

I used Maya 2024 as, although a bit glitchy from time to time, it has really amazing retopology tools that made the whole process much more smoother.

Maya 2024 Reduce options

After altering the mesh, remember to Unlock normals and Soften/Harden your edges accordingly for the mesh to look proper, as affecting it with this tools might cause some normal issues. You can find both of this options in Mesh Display in the Modeling tab.

Soften Edge Options

• • •

Moving on for Next Week!

I managed to finish 2 folders from the level meshes projects, so let's move on to two more folders and see how it goes! Luckily it will all be a bit quicker this time.

Jr Tech Art Journal - Optimization (Part I)

Work In Progress / 13 January 2024

Quest 1: Optimizing Game Assets for Meowmentum

Hey fellow artists! 👋🎮 As a junior 3D game artist/technical artist working on "Meowmentum" (which now boasts a completely refreshed leaderboard! If you'd like to give it a go and set a new record), set to hit Steam soon, I've taken on the exciting challenge of optimizing assets. With my current technical art studies, the goal is to ensure a smooth gaming experience for a wide range of players. Today, I wanted to share some of the discoveries I've made in the world of asset optimization.

So, my quest for the next month involves:

  • Optimizing meshes
  • Fixing UV issues causing overlap problems
  • Researching LODs for our next big update

Let me walk you through today's adventure:

🔍 Identifying the Culprit:

The day kicked off with tackling a mesh that was causing major headaches during lightmap baking. After re-importing to Maya, I decided to take the plunge and completely redo the mesh. It was carrying a substantial load of vertices and faces. I meticulously restacked the UVs, ensuring the texel density aligned with our current tiling textures.

BeforeAfter

🔄 Remaking and Baking:

After recreating the mesh, I reuploaded it to Unity and baked lightmaps. Success! The model was fixed, and the lightings could be successfully baked. One problem down, more to go.

🌐 UV Overlap:

Next on the agenda was dealing with UV overlap issues. Consulting Unity's documentation, I started adjusting the padding mesh by mesh. While this did reduce UV overlap in some objects, it didn't fully solve the problem across all meshes.

Unity Game Object Lightmap options

• • •

Moving on for Next Week!

🔨 One Mesh at a Time:

My plan now is to focus on fixing floor meshes one by one. I'll be diving deep into geometry fixes and UV adjustments, re-importing, and rebaking lights to observe how things behave. It's a meticulous process, but attention to detail is key!

🚀 Level-Up Wisdom Stats:

To conquer the UV overlap challenge, I'll be intensifying my research on the issue within Unity. I'm also gearing up to implement LODs, ensuring our game remains visually stunning without compromising performance.The journey to optimize assets for Meowmentum is filled with twists and turns, but I'm loving every bit of it. 

Stay tuned for more updates! And feel free to share your own optimization adventures in the comments! 🕹️