1
$\begingroup$

I'm able to import an object into Blender which was created in MagicaVoxel. The object keeps the desired texture in Blender and looks like this in Edit Mode.

enter image description here

I want to add a "Rounded Edges" or "Rounded Grids" effect onto this object so it looks similar to this:enter image description here

The result should be useable in Unity as well.

Other solutions from this site like How to create a "Rounded Grids" effect like in MagicaVoxel sadly don't work.

I've tried to work with Normal Maps and UV Mapping but these approaches apparently didn't work due to the shape of the object and due to the fact that it comes with material.

$\endgroup$
5
  • 2
    $\begingroup$ Are all cubes their own objects? Bevel modifier as noted in the answer to the linked question would be the simplest way if so. $\endgroup$
    – Timaroberts
    Jan 2, 2021 at 22:22
  • $\begingroup$ It's one big object with multiple faces. I've tested Bevel before to round the edges but it didn't work. $\endgroup$ Jan 2, 2021 at 22:44
  • $\begingroup$ Consider sharing your file so that users can take a look. Please add all new information to the body of your question as an edit. $\endgroup$
    – Timaroberts
    Jan 2, 2021 at 22:45
  • $\begingroup$ if it's made of "blocks" (= just square faces oriented along 3 main axis) you can probably write a script that will subdivide all faces in 5 (like bevel: 1 big square in middle and join them with 4 parallelograms), then move the 4 border edges along negative normal. You may have to do it in 2 passes so that you subdivide and collect border edges first, then translate them (so that edges that are used in corner/edge of your mesh will be moved in 3/2 directions and those that are shared by parallel faces will only be moved once). $\endgroup$ Jan 2, 2021 at 23:03
  • $\begingroup$ edit: you can also probably do that in a shader (It's probably the solution used in the picture you showed since you can see car's corners are very sharp). 1) pass local (to model's space) vertex position and normal from vertex shader to fragment shader. In fragment shader if local vertex position is close enough to an edge of a 3d-grid, you change the normal to create this bevel effect. (doing so you don't even need to have very complex geometry anymore (aka a big plane would work too), as long as all edges of your models are along this virtual grid it will look exactly like in the picture ;) $\endgroup$ Jan 2, 2021 at 23:20

1 Answer 1

0
$\begingroup$

If you create a new default UV map for an object, each quad face is given the entire UV canvas.

enter image description here

Disclaimer here, I think this only happens if you have first deleted every other UV map on the object, otherwise the previous UV map just gets duplicated to the new slot. So if you are confident that you can unwrap your object again, it should be easy at this point to find or create a normal map that will give us this effect. I just grabbed one from image search results for educational purposes.

You can create a second UV map to do a full unwrap if needed, so for argument's sake I'm using the UV Map node to draw from a specific UV map for this.

enter image description here

enter image description here

Hopefully this works for the Unity workflow, or at least gives you some ideas.

$\endgroup$

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