私にとってバグと思われる問題に遭遇しました。結晶内の原子を視覚化するアプリを作成しています。その問題は、透明なオブジェクトを描画し、オブジェクトを背後に隠すことです。
コードは次のとおりです。
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 などに変更すると、「カット」アトムはありません。この投稿をグーグル検索しましたが、与えられたアドバイスはこのケースには当てはまりません。
これは 3D に適用された 2D ブラシのバグですか?
完全なソース コードは、 http ://alloysvisualisation.codeplex.comの dll とテスト ファイルhttp://alloysvisualisation.codeplex.com/releasesベータ リンクにあります。
再現する手順:
- ランチアプリ
- ファイルを開くボタンをクリック
- テスト ファイル (xyzT2000.chmc) を開く
- マスクボタンをクリック
- チェック11(原子の並びがほぼ透明)
- クリック再描画