Как установить материал, который не отражает свет, в Helix Toolkit ViewPort?

Я создаю и отображаю список с 20 SpotLight точками в Helix ViewPort, которые имеют определенные позиции. С помощью таймера я всегда меняю цвет SpotLight. Свет ViewPort настроен на: <helix:DirectionalHeadLight Position="2,3,0" Brightness="0.30"></helix:DirectionalHeadLight>

Затем я также создаю список и отображаю список из 20 сфер SphereVisual3D. SpotLights и SphereVisual3Ds имеют схожие позиции. Затем я установил материал для сфер (в данном случае индиго). Смотрите картинку:

Рисунок 1: SphereVisual3D позиций

введите здесь описание изображения

Рисунок 2: SpotLight позиций (с разными цветами на SpotLight)

введите здесь описание изображения

Я хочу оставить сферы Material одинаковыми, не отражая light от SpotLights. Я пробовал со всеми тремя типами Material:

1: sphere.Material = new DiffuseMaterial(new SolidColorBrush(Colors.Indigo));

Рисунок 1.1: Сферы с DiffuseMaterial и SpotLights введите здесь описание изображения

2: sphere.Material = new SpecularMaterial(new SolidColorBrush(Colors.Indigo),1);

Рисунок 2.1: Сферы с SpecularMaterial и SpotLights введите здесь описание изображения

3: sphere.Material = new EmissiveMaterial(new SolidColorBrush(Colors.Indigo));

Рисунок 3.1: Сферы с SpecularMaterial и SpotLights введите здесь описание изображения

Можно ли установить Material, который не отражает свет и сохраняет свой цвет? Есть ли возможность установить простой цвет?


person Georgiana M    schedule 23.05.2016    source источник


Ответы (1)


Я не думаю, что вы можете сделать это только с помощью материала.

Я предлагаю заменить SphereVisual3Ds двумерными плоскостями (кругами) (например, используя MeshBuilder.AddEllipse() в Helix), ориентированными на камеру, и использовать DiffuseMaterial на них.

Конечно, при изменении положения камеры или направления взгляда вам придется реагировать и соответствующим образом изменять ориентацию 2d-элементов.

person wkl    schedule 19.01.2017