2
\$\begingroup\$

I am very new to Godot. I am using version 3.4 stable on Windows 10.

I made a building in Blender and I wanted to make interior mapping instead of poor 2d windows textures. I found a material for that, and just assigned it to windows faces.

Unfortunately that model failed to be imported as .escn, so I decided to import it with one whole material, and then do the same last steps in Godot. I am going to use this shader for that.

I imported it, created new ShaderMaterial, then VisualShader and setup as you can see in screenshot.

What is next? How do I select windows faces and set to them interior mapping shader? Is that possible in Godot at all?

enter image description here

Mesh:

enter image description here


@Theraot solution is working:

enter image description here

\$\endgroup\$

1 Answer 1

1
\$\begingroup\$

If you are editing the Mesh resource, you should see in the Inspector Panel a series of properties named "Surface 1", "Surface 2" and so on. Each one has a material assigned. There you can replace the material with your new ShaderMaterial (alternatively you could edit the materials that were imported along with the model).

Similarly, if you are editing a MeshIntance, you should se a series of material properties which are overrides for the materials of the Mesh resource, and you can also se the ShaderMaterial.

If you don't see multiple surfaces/materials, then your model got a single surface. And no, Godot does not have the means to divide surfaces.


Addendum post edit: Yep, that is a signle material in your MeshInstance. Multiple look like this:

MeshInstance with multiple materials

And in the Mesh they look like this:

Mesh with multiple surfaces

You can open the Mesh resource from the MeshInstance by clicking on its Mesh property, it should be an ArrayMesh.


As you have certainly found out, you are not going going to get complex Blender materials on Godot. Both parts have a bit of blame here, because Blender materials are not standard, and only the simplest can be encoded in standard formats. If you are using a Godot exporter addon in Blender, it might try its best to translate the materials, but some just cannot be recreated, and that part has to do with Godot limitations.

Thus, my advice is to set simple materials for the different surfaces you need. And then if you need more complex materials, override them in Godot with materials that work on engine.

\$\endgroup\$
11
  • \$\begingroup\$ Thanks for feedback. Okay, so because I don't have multiple materials, what is the solution? Assign new materials in Blender, but just make them like empty? And then I will see them in that window in Godot? \$\endgroup\$ Dec 5, 2021 at 21:32
  • \$\begingroup\$ @АртурКлочко They don't have to be empty, just simple enough. PBR materials should import fine. In fact, I would recommend exporting and importing gltf (v2). Anything that can be encoded in gltf both Godot and Blender will agree on. \$\endgroup\$
    – Theraot
    Dec 5, 2021 at 21:39
  • \$\begingroup\$ Ok, I will test it today, but it is sad, that I can't handle model`s geometry as in Blender or another editor. Hope there is a Godot addon or plugin for this \$\endgroup\$ Dec 6, 2021 at 9:06
  • \$\begingroup\$ @АртурКлочко It should be possible as an addon. However, I believe the Godot core developers don't want to replicate something you can do in other free software. Instead what they are working on - in communication with the Blender foundation - is better integration with Blender, for Godot 4.0 or 4.1. Part of this effort is the current rework of the animation system. We should get to the point where you will be able to save a .blend file in a Godot project folder, and Godot will notice it and (re)import it, with minimum breakage, and reapplying any edits done on the Godot side. \$\endgroup\$
    – Theraot
    Dec 6, 2021 at 9:31
  • \$\begingroup\$ Yeah I've heard about 4.0 version, especially for new Vulcan API, but when it all will be.. I think I rather move to Unreal Engine 5 \$\endgroup\$ Dec 6, 2021 at 9:39

You must log in to answer this question.

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