При изменении кода материалы становятся чисто белыми без затенения | Годо C#C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Гость
 При изменении кода материалы становятся чисто белыми без затенения | Годо C#

Сообщение Гость »


У меня есть PackedScene, экземпляр которого я создаю с помощью кода. Все, что есть в этой сцене, — это один MeshInstance3D со стандартным StandardMaterial3D.
Из кода после создания экземпляра я пытаюсь изменить AlbedoColor MeshInstance3D. Однако, что бы я ни делал, материал получается чисто белым без каких-либо оттенков.
[img]https://i .stack.imgur.com/0KJeg.png[/img]
Если я добавляю материал вручную либо в MeshInstance3D напрямую, либо через переопределение материала поверхности или Geometry.MaterialOvrride в инспекторе все работает как положено и материалы имеют правильное затенение. Однако, как только я добавляю или изменяю материал с помощью кода, он сразу же ломается и выглядит, как на изображении выше.
Я пробовал различные подходы с помощью кода, все они описаны ниже:
< p>Прямой доступ к материалу сетки

Код: Выделить всё

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;
I've tried various combinations of the above. It doesn't change even if I directly set the material again after modifying it. No matter what though, if I modify the AlbedoColor, it always turns to full white with no shading. I've authenticated the colors as well. I'm seriously at a loss as to what could be happening but I feel like it's something simple I just overlooked.
I'm new to Godot so it's probably some engine-specific thing I missed.


Источник: https://stackoverflow.com/questions/781 ... de-godot-c
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»