我遇到了一个对我来说似乎是错误的问题。我正在制作一个可视化晶体中原子的应用程序。那个问题是它绘制了一个透明对象并将对象隐藏在后面。
这是代码:
foreach (var atom in filteredAtoms)
{
var color = new Color();
color.ScR = (float)atom.AluminiumProbability;
//color.G = 50;
color.ScB = (float)atom.MagnesiumProbability;
//setting alpha channel but Opacity doens't work as well
color.ScA = (float)(1.0 - atom.VacancyProbability); //(float)1.0;//
DiffuseMaterial material = new DiffuseMaterial(new SolidColorBrush(color));
//material.Brush.Opacity = 1.0 - atom.VacancyProbability;
// make visuals and add them to
atomBuldier.Add(new Point3D(atom.X * Atom.ToAngstrom, atom.Y * Atom.ToAngstrom, atom.Z * Atom.ToAngstrom), material);
}
当我将材料更改为例如 EmissiveMaterial 时,没有“切割”原子。我用谷歌搜索了这篇文章,但给出的建议不适用于这种情况。
这是将 2D 画笔应用于 3D 的错误吗?
完整的源代码可以在这里找到http://alloysvisualisation.codeplex.com的 dll 和一个测试文件http://alloysvisualisation.codeplex.com/releases beta 链接。
重现步骤:
- 午餐应用
- 单击打开文件按钮
- 打开测试文件(xyzT2000.chmc)
- 单击蒙版按钮
- 检查11(一系列原子几乎是透明的)
- 重新绘制