【发布时间】:2018-02-15 09:24:12
【问题描述】:
我有一个网状截头金字塔堆叠在一起。
我的目标是反转它,把它变成一个球体近似值。为此,我画了完全相同的东西,但 Z 轴颠倒了。它可以工作,只是背面是半透明的。
这里我设置了brush.Opacity = .3;,让半透明问题更加明显。
不幸的是,我在该主题上所能找到的只是未能为单独的网格元素启用透明度,而不是删除它。什么可能导致问题,我该如何解决?这是我绘制网格的代码摘录:
public void Approximate()
{
group.Children.Clear();
SolidColorBrush brush = new SolidColorBrush(Colors.Blue);
DiffuseMaterial material = new DiffuseMaterial(brush);
[...]
for(int level = 0; level < level_number; level++)
{
GeometryModel3D model_front = new GeometryModel3D();
model_front.Material = material;
GeometryModel3D model_back = new GeometryModel3D();
model_back.Material = material;
[...]
TruncatedPyramid pyramid1 = new TruncatedPyramid(bottom_points, top_points);
pyramid1.Draw(model_front);
group.Children.Add(model_front);
TruncatedPyramid pyramid2 = new TruncatedPyramid(bottom_points, reverse_points);
pyramid2.Draw(model_back);
group.Children.Add(model_back);
}
}
我在其中设置了窗口:
<Viewport3D Name="myViewport" Margin="0,94,0,0" >
<Viewport3D.Camera>
<PerspectiveCamera Position="10,10,10" LookDirection="-2,-2,-2" UpDirection="0,1,0" />
</Viewport3D.Camera>
<ModelVisual3D>
<ModelVisual3D.Content>
<DirectionalLight x:Name = "dirLightMain" Direction = "-1,-1,-1">
</DirectionalLight>
</ModelVisual3D.Content>
</ModelVisual3D>
<ModelVisual3D x:Name = "Wedge">
<ModelVisual3D.Content>
<Model3DGroup x:Name="group">
</Model3DGroup>
</ModelVisual3D.Content>
<ModelVisual3D.Transform>
[...]
</ModelVisual3D.Transform>
</ModelVisual3D>
</Viewport3D>
我删除的代码确实可以正常工作,并且似乎与问题无关(计算网格点的函数和负责旋转组的类)
我的猜测是正面具有某种与透明度相关的质量,而背面仍然没有,尽管使用相同的画笔绘制,但我对 WPF 不够熟悉,无法找到它。
【问题讨论】:
标签: c# wpf graphics 3d transparency