Я пытался создать метод для изменения непрозрачности объекта, когда я выбираю его в поле со списком, чтобы я мог видеть другой объект позади него. Это делается до изменения положения / направления камеры, чтобы она следовала за 2-м объектом из положения 1-го объекта. Это делается путем клонирования материала по умолчанию объекта с помощью
this.DefaultMaterial = this.DefaultMaterial.Clone ();
а затем позвонив в
MaterialHelper.ChangeOpacity (DefaultMaterial, 0,1);
метод, как я написал там.
Похоже, что непрозрачность по большей части работает правильно, но для некоторых объектов в окне просмотра я не могу видеть их через свой исходный непрозрачный объект. Например, когда я поворачиваю камеру к конкретному рассматриваемому объекту (ошибочному), вместо того, чтобы видеть его позади моего исходного объекта, я вижу сквозь свой исходный объект и мимо второго (ошибочного), как если бы глючного даже не было. Я просто вижу, что за этим стоит.
Понятия не имею, почему это происходит.
Кто-нибудь знает, что может быть причиной этого? Или, может быть, есть другой способ сделать что-то прозрачным, а не установить его непрозрачность?
Я видел, как некоторые люди ссылались на свойство TRANSPARENCY, но не был уверен, применимо ли это к объекту FileModelVisual3D, который является исходным объектом.
Объект с ошибкой - это UIElement3D, непрозрачный - это FileModelVisual3D, есть другие объекты класса Point3DCollection, которые также имеют ошибку, как и UIElement3D.
Из-за RenderOrder и буфера глубины. Вам нужно переместить прозрачный объект в конец рендеринга. Это не ошибка, это принцип работы рендеринга.
Или используйте Helix-toolkit sharpdx и используйте прозрачный проход рендеринга.