Is 3D pixelart too much to ask?

Godot Version

v4.1.1.stable.official

Question

I am starting to test the waters in 3D, as I’d like to start working on a game that’s sorta similar to topdown 2D games like Stardew Valley, but is actually in 3D with an isometric perspective.

I tried to use a GridMap, following tutorials on how to make a mesh library etc, but when I tried to give the simple mesh a pixelated texture, it was anti-aliased, and no matter what I did, the blur did not go away. Several posts and pieces of advice even had information that straight up wasn’t true, like finding a “filter” field on the MeshInstance3D, which simply isn’t there.

I found out that is was possible to disable anti-aliasing on a Sprite3D so I tried making a cube out of six of them, but there, I couldn’t apply a normal map, which I also need. I found a post online saying that if you want a normal map, you should use a MeshInstance3D with a quad map, but I had already tried MeshInstance3D, and it didn’t allow me to use a pixelated texture as intended.

Moreover, the Node3D with Sprite3Ds as children didn’t even make it into the mesh library export. For some reason, it just wasn’t there.

Whatever I try to do, it seems as though Godot doesn’t have the tools I need.

All I’m asking is a sharp, pixelated texture on a MeshInstance3D, where I can also add a sharp, pixelated normal map. It would also be nice to be able to use an animated texture, but that’s secondary. I just need to somehow get the pixelart into my Mesh Library and I’m getting desperate.

One more thing I thought of just now is adding the texture and normal map in Blender and then importing the object into Godot? Since some file types, like .glb, can’t be used as the source of mesh geometry in a MeshInstance3D and can only be dragged straight into the space, I figured they might already come with things like textures? But I’m not sure. Either way, that seems like an extremely inconvenient way to do this, every time I’d want to change the texture, I’d have to do so in an external program, but it might be the only way? Godot has kinda disappointed me in this. I hope there is an elegant solution to this that I’m just unaware of. Please help me.

Can you show how your efforts look like? I just applied some Minecraft texture to a BoxMesh material in the MeshInstance3D and it looks sharp to me, not sure if this is what you wanted though.

I don’t know if this counts but I found this tutorial on how to make isometric pixel art from 3D meshes. It uses shaders and the SubViewportContainer’s stretch and stretch shrink properties, along with nearest interpolation to get the isometric, pixel art look all from 3D mesh objects. I tried replicating it and it looked so cool. As for the UV maps, I think you should use scaled-up, high resolution pixel art textures? Not sure though, I haven’t tried doing it.

sure! Here’s a screenshot of my editor:


The selected cube on the right is the MeshInstance3D that I can’t get to be pixelated, the unselected cube on the left are six Sprites3D that I can’t get a normal map onto, and also can’t get to show up in the mesh library (their parent was originally a Node3D, that didn’t work, so I tried changing it to a MeshInstance3D, that didn’t work either).

Did this pixelated texture of yours work for you by default, without having to change any settings or flags?

Also sorry if some important info isn’t in the screenshot, I don’t really know what is and isn’t relevant at this point, I tried everything I could think of…

And thank you for replying!

Thanks! I’ve already seen this tutorial before writing this, and it is not the effect I’m going for. I might implement something like this later, but either way, it’s not what I’m trying to accomplish here.

1 Like

Ohhh I see. Good luck on your project!

Yes, I downloaded a random texture from google and applied it to the albedo texture of the material.
But now I tried with the 8x8 texture like you have and I got the same result as you. But after changing uv1_triplanar to true and texture_filter to Nearest I achieved this effect, which seems to be what you’re looking for I suppose?

2 Likes

Thank you so much! This fixed it! I would’ve never figured this out on my own, thanks!

1 Like

Sometimes you just need to start clicking random buttons to see what happens :slight_smile: glad it worked out for your in the end.

1 Like

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.