Из кода после создания экземпляра я пытаюсь изменить AlbedoColor MeshInstance3D. Однако, что бы я ни делал, материал получается чисто белым без каких-либо оттенков.
[img]https://i .stack.imgur.com/0KJeg.png[/img]
Если я добавляю материал вручную либо в MeshInstance3D напрямую, либо через переопределение материала поверхности или Geometry.MaterialOvrride в инспекторе все работает как положено и материалы имеют правильное затенение. Однако, как только я добавляю или изменяю материал с помощью кода, он сразу же ломается и выглядит, как на изображении выше.
Я пробовал различные подходы с помощью кода, все они описаны ниже:
Прямой доступ к материалу сетки
Код: Выделить всё
var orb = _orbResource.Instantiate();
if (orb.Mesh.SurfaceGetMaterial(0) is StandardMaterial3D material)
{
material.AlbedoColor = _color;
orb.Mesh.SurfaceSetMaterial(0, material);
}
Код: Выделить всё
var orb = _orbResource.Instantiate();
if (orb.MaterialOverride is not StandardMaterial3D material)
{
throw new NullReferenceException("The orb did not have a material override");
}
material.AlbedoColor = _color;
orb.MaterialOverride = material;
Код: Выделить всё
var orb = _orbResource.Instantiate();
var material = new StandardMaterial3D();
material.AlbedoColor = _color;
orb.MaterialOverride = material;
Я новичок в Godot, так что, вероятно, это какая-то специфичная для движка вещь. пропустил.
Редактировать 1
Как упомянул @Theraot, я пытался сделать то же самое в новом проекте и это привело к той же проблеме. Взгляните на изображение ниже.

Все эти шары являются MeshInstance3D со своим уникальным экземпляром сферы. Сфера внизу в центре — это та сфера, которую я изменяю с помощью кода. Как бы я это ни делал, он всегда оказывается неосвещенным и чисто белым. Сетка слева имеет материал непосредственно на сетке. Сфера справа не имеет материала. А сфера вверху имеет переопределение материала. Все они работают нормально, если я не изменяю их с помощью кода. Странно.
Моя установка освещения представляет собой рамку вокруг сфер с точечным источником света.
Важно также сказать, что я могу создавать и назначать материалы. и они, кажется, работают нормально. Однако, как только я изменяю какое-либо свойство, оно ломается.
Подробнее здесь: https://stackoverflow.com/questions/781 ... de-godot-c