C # 3D Helix Toolkit Фигуры прозрачны только с определенных направлений

Я пытаюсь заставить работать анимацию, в которой я плавно меняю материал различных форм, чтобы они были прозрачными / разных цветов.

Проблема:

Если я смотрю на фигуру сверху, я могу видеть ее внутренние углы (скажем, если это куб, я могу видеть его внутреннюю поверхность), но все, что находится за пределами / за периметром фигуры, закрыто .

Пока я делаю следующее, что отлично работает, помимо этой проблемы:

Color c = new Color()
{
    A = 16,
    R = Colors.Transparent.R,
    G = Colors.Transparent.G,
    B = Colors.Transparent.B
};

(model as GeometryModel3D).Material = new DiffuseMaterial(new SolidColorBrush(c));
(model as GeometryModel3D).BackMaterial = new DiffuseMaterial(new SolidColorBrush(c));

Если я уменьшу альфа-канал до 0, форма станет непрозрачной, по-видимому, потому, что форма невидима, но все еще закрывает все, что находится за ней.

Информация, которую я нашел до сих пор, предполагает, что использование излучающих или отражающих материалов будет работать, потому что они не были записаны в Z-буфер, но либо диффузные материалы не работают так же, либо я реализовал это неправильно.

Редактировать:

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


person The Whether Man    schedule 25.08.2017    source источник


Ответы (1)


Похоже, ваши поверхности могут быть неправильно ориентированы. Если это так, вы можете исправить это, изменив порядок вершин для каждого элемента куба.

Стандартный конвейер растеризации обычно рисует «односторонние» примитивы, то есть рисует только треугольники, которые, по его мнению, обращены к камере. Таким образом, например, вам даже не нужно будет пытаться нарисовать обратные стороны вашего куба.

person comingstorm    schedule 26.08.2017