3
$\begingroup$

So, i have made this map model in a program called MagicaVoxel. I exported it to Unity and noticed that the mesh had an absurd amount of polygons. What the program does is that it creates a polygon for each voxel color in the mesh, as shown here:

enter image description here

So what i want to do is use BLENDER to reduce the amount of vertices (or polygons), without screwing up the texture. Is there a way i can do that? This is the texture that came out with the model (to see the colors, open the image an zoom in to the right part of the line. You can see the colors):

enter image description here

$\endgroup$
6
  • $\begingroup$ Are you sure it is a texture or material colors? $\endgroup$
    – Denis
    Commented Aug 30, 2016 at 14:48
  • $\begingroup$ Yes, it's a texture, i'll put it in the question. $\endgroup$ Commented Aug 30, 2016 at 14:59
  • $\begingroup$ Do you want to keep the same texture? reducing polygons may destroy the uvmap $\endgroup$
    – Denis
    Commented Aug 30, 2016 at 15:06
  • $\begingroup$ Have you tried limited dissolve? $\endgroup$
    – Striar
    Commented Aug 30, 2016 at 15:19
  • $\begingroup$ Limited dissolve did remove almost all of the useless vertices. But, it destroyed the texture. Though, i can do something about it. I'm gonna check if i can retexture the object. $\endgroup$ Commented Aug 30, 2016 at 15:29

2 Answers 2

5
$\begingroup$

Just tried MagicaVoxel out of pure curiosity and this is what I found out.

While MagicaVoxel at first glance seems to produce decent game-friendly triangle-based geometry, it actually does the complete opposite.

The software uses a "texture" but it does so in an unusual way. There is absolutely no UV in a traditional way. What MagicaVoxel does is overlaying all vertices of the faces with the same color and putting them on the same uv coordinate onto a colormap like image.

vertices centered on texture

That means that the vertices of all faces which share the same color also share the same UV coordinate and it also means that every change in color produces more faces and of course more vertices

Furthermore, not all of the vertices are connected to one another so all of Blender's simple semi-automatic methods (dissolve edges, decimate modifier) of reducing polycount will ultimately fail, because dissolving an edge of a triangle simply destroys said triangle.

Reducing the polygons is only half the battle and the overall topology of voxel-like meshes normally is decent enough. The disconnected vertices on the other hand produce a high unnecessary vertex count that needs to be reduced, because they produce unnecessary normals.

IMHO the best method to deal with your mesh is

  1. Creating a copy of it and reducing polycount by using a remesh modifier and a collapse decimate modifier with triangulate on top of it.
    remesh and decimate
  2. Unwrapping the new mesh using smart uv project
    uv unwrap
  3. Baking a new texture for the decimated mesh from the original by using the "Selected to active" bake method.
    baking
  4. Creating a new material for the new mesh and assign the texture
    new material
$\endgroup$
0
0
$\begingroup$

Note that in order to bake from one mesh to another, the two need to be superposed in your scene. Took me countless hours to figure it out.

$\endgroup$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .