Inspiration
The inspiration for UV Wizard came from the need to optimize 3D models for better performance in various applications. Many creators, especially in communities like VRChat, design avatars and models without extensive knowledge of game optimization techniques. I wanted to create a tool that simplifies the process of combining multiple materials and textures on a 3D model into a single material with a unified texture atlas.
What it does
UV Wizard automatically optimizes 3D models by combining multiple materials into a single material, repacking UVs to correspond with a new texture atlas, and merging multiple textures into one texture atlas. This helps reduce draw calls and improve performance in games and applications that use complex models with multiple materials.
How I built it
I built UV Wizard as a Unity add-on. The development process involved creating a script that performs the following steps:
- Mesh and Material Retrieval: Accesses the mesh and materials from the selected GameObject.
- UV Repacking: Adjusts the UV coordinates to fit within designated regions of a new texture atlas.
- Texture Atlas Creation: Combines individual textures from each material into a single texture atlas.
- Material Creation: Generates a new material that uses the combined texture atlas.
- Application: Applies the new UVs and material back to the mesh, replacing the original materials.
Challenges I ran into
One of the main challenges I faced was getting the GitHub repository website and the VRChat Creator Companion (VCC) template to work properly. Ensuring that the repository was correctly set up and accessible through VCC required careful configuration- it was all brand new to me!
Accomplishments that I'm proud of
I am proud of reaching out to the creator of the Polytool addon, Markcreator, who is one of the VRChat game developers. They agreed to mentor me through the process of this project, which I think is the coolest thing ever! Their guidance and support have been invaluable in overcoming challenges and refining the tool and I'm looking forward to working with them more in the future to bring this project over the finish line!
What I learned
Throughout the development of UV Wizard, I learned a lot about the actual development process of maintaining and creating my own GitHub repo, something I had never really done before. I also gained a bunch of experience in developing plugins within Unity. The project taught me the importance of efficient resource management and how to prioritize time and resources.
What's next for UV Wizard
In the future, I plan to implement more advanced UV packing algorithms, support additional texture maps (e.g., normal maps, specular maps), and develop a custom Unity Editor window for a more user-friendly interface. Ultimately this will be an ongoing project for months to come, as was intended!
Log in or sign up for Devpost to join the conversation.