GodotФорумВопросы

Импорт карты нормалей

#0
12:26, 21 сен 2025

Всем привет
Не получается использовать карту нормалей (png 1500x1500)
При использовании только albedo карты все норм, при добавлении нормалей серый однотонный квадрат
Настройка импорта
1 | Импорт карты нормалей
Код:
Свет (пробовал разный, высоту, яркость)
            var sun = new OmniLight3D();
            sun.LightColor = new Color(1, 1, 1);
            sun.LightEnergy = 5.0f;
            sun.Position = new Vector3(1, 5, 1);

Импорт текстуры
                const int textureScale = 1;

                var GravelColorfulTexture = new StandardMaterial3D()
                {
                    NormalEnabled = true,
                    ShadingMode = BaseMaterial3D.ShadingModeEnum.PerPixel,
                    AlbedoColor = new Color(1, 1, 1)
                };

                GravelColorfulTexture.AlbedoTexture = GD.Load<Texture2D>("res://Resources/gravel_albedo.jpg");
                GravelColorfulTexture.NormalTexture = GD.Load<Texture2D>("res://Resources/gravel_normal.png");
                GravelColorfulTexture.Uv1Scale = new Vector3(textureScale, textureScale, 1);

Отрисовка
            var st = new SurfaceTool();
            st.Begin(Mesh.PrimitiveType.Triangles);
            ... отрисовка по треугольникам в цикле...

                    st.SetUV(uv0); st.AddVertex(c0);
                    st.SetUV(uv1); st.AddVertex(c1);
                    st.SetUV(uv2); st.AddVertex(c2);
            ... готовый меш
          st.GenerateNormals();
          var arrayMesh = st.Commit();
          arrayMesh.RegenNormalMaps();

          var mesh = new MeshInstance3D();
          mesh.Mesh = arrayMesh;
          mesh.MaterialOverride = Resources.Textures.GravelColorfulTexture; // текстура см выше

#1
17:19, 21 сен 2025

Надо в импорте поменять Mode Lossless на что то другое.
Тогда появится NormalMap, который можно включить.

#2
19:56, 27 сен 2025

Вопрос решился?
Ну так чтобы понимать суть поста.

GodotФорумВопросы