我遇到了一個對我來說似乎是個bug的問題。我正在製作一個應用程序,用於顯示水晶中的原子。這個問題是它繪製了一個透明的對象並隱藏了對象。帶有DiffuseMaterial的ModelVisual3D的透明度
下面是代碼:
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沒有「剪切」原子。我搜索了this post,但給出的建議不適用於這種情況。
這是2D刷子應用於3D的錯誤嗎?
完整的源代碼可以在這裏找到http://alloysvisualisation.codeplex.com該DLL和一個測試文件http://alloysvisualisation.codeplex.com/releases beta鏈接。
重現步驟:
- 午餐應用
- 點擊打開文件按鈕
- 打開測試文件(xyzT2000.chmc)
- 點擊蒙板按鈕
- 檢查11(系列原子是幾乎透明)
- Ckick Redraw
我似乎記得一些有關前端材質和後端材質的WPF 3D對象,你們是否設置了它們? – WildCrustacean 2012-04-13 23:48:56
在類Sphere3D:ModelVisual3D中,我添加了集 {this.Content as GeometryModel3D).Material = value; (this.Content as GeometryModel3D).BackMaterial = value; }但效果是一樣的 – 2012-04-13 23:56:29
看來它們在相交時是不呈現的,而其中一個是透明的。 – 2012-04-14 00:09:00