Ошибка непрозрачности в VS 2015 с использованием Helix Toolkit

Я пытался создать метод для изменения непрозрачности объекта, когда я выбираю его в поле со списком, чтобы я мог видеть другой объект за ним. Это делается перед изменением положения/направления камеры, чтобы следовать за 2-м объектом из положения 1-го объекта. Это делается путем клонирования материала объекта по умолчанию с помощью

this.DefaultMaterial = this.DefaultMaterial.Clone();

а затем вызов

MaterialHelper.ChangeOpacity(DefaultMaterial,0.1);

метод, как я написал его там.

Непрозрачность, кажется, работает правильно по большей части, но для некоторых объектов в порту просмотра я не вижу их через свой первоначальный непрозрачный объект. Например, когда я поворачиваю камеру к конкретному рассматриваемому объекту (глючному), вместо того, чтобы видеть его позади моего начального объекта, я вижу сквозь свой первоначальный объект и за вторым (глючным) объектом, как если бы багги там даже не было. Я просто вижу, что за этим стоит.

Я понятия не имею, почему это происходит.

Кто-нибудь знает, что может быть причиной этого? Или, может быть, есть другой способ сделать что-то прозрачным, а не устанавливать его непрозрачность?

Я видел, как некоторые люди ссылались на свойство TRANSPARENCY, но не был уверен, относится ли это к объекту FileModelVisual3D, который является исходным объектом.

Глючный объект — это UIElement3D, непрозрачный — FileModelVisual3D, есть и другие объекты класса Point3DCollection, у которых тоже есть ошибка, как и у UIElement3D.


person a_here_and_now    schedule 25.10.2018    source источник


Ответы (1)


Из-за RenderOrder и буфера глубины. Вы должны переместить свой прозрачный объект в конец рендеринга. Это не ошибка, это то, как работает рендеринг.

Или переключитесь на использование Helix-toolkit sharpdx и используйте прозрачный проход рендеринга.

person Lance H    schedule 01.11.2018