2012-06-12 2 views
1

Мне нужно создать прозрачный GeometryModel3D.
Как это:
Like this:Прозрачная геометрияModel3D


Я попробовал этот код:

var m = new Model3DGroup(); 
var panelsGeometry = MyMeshGeometry3D; 
     Brush br = new SolidColorBrush(Colors.Red); 
     br.Opacity = 0.5; 
     m.Children.Add(new GeometryModel3D(panelsGeometry, new DiffuseMaterial(br)) { BackMaterial= new DiffuseMaterial(br) }); 


Но в результате я получаю это:
enter image description here


Что я делаю неправильно? Благодарю.

+0

Похоже, что непрозрачность просто смешивает цвет с внешним видом, но не влияет на непрозрачность полигонов ... –

ответ

0

Вы можете использовать прозрачное изображение с ImageBrush, одного пикселя будет достаточно, но вам нужно будет установить TextureCoordinates на объект сетки.

+0

Не могли бы вы привести пример? Я не могу понять –

+0

@ user1159999: Просто создайте образ «png» с пикселем, который имеет желаемый цвет, но с прозрачностью, которую вы хотите, сделайте из него ImageBrush, сделайте материал из этого, назначьте его свойствам. Для координат вы, вероятно, можете использовать что-то простое, например '' 0 1 1 1 0 0 1 0 "'. –

0

Вам необходимо использовать TextureCoordinates, и вам нужно будет заказать стороны, которые будут нарисованы назад, чтобы они смешались правильно. WPF этого не делает.

См this article

0

Убедитесь, что геометрия коробки сетки содержит 24 точек. Если в вашем ящике указано минимальное количество точек (8), то обратные лица не будут отображаться.

Например, см. here.

Вы можете загрузить Normals3D.zip и изменить непрозрачность кисти полных ячеек сетки, чтобы получить желаемый эффект.

Смежные вопросы