Herhangi bir MeshElement3D (örneğin BoxVisual3d) helix-toolkit'te tel kafes olarak görüntülemek istiyorum. Bu nasıl yapılabilir?MeshElement3D, tel kafes olarak nasıl görüntülenir?
DÜZENLEME: Erno de Weerd cevabı
sayesinde ben kutunun örneğini ekleyin aşağıdaki kodu BoxVisual3D
public class GeometryBoxVisual3D : BoxVisual3D
{
public MeshGeometry3D Geometry()
{
return Tessellate();
}
}
uzanır
Class yazabiliyordu Viewport'a:
GeometryBoxVisual3D box = new GeometryBoxVisual3D(); box.Fill = new SolidColorBrush(Colors.Red); Viewport3D.Children.Add(box); MeshGeometry3D geometry3 = box.Geometry(); LinesVisual3D lines = new LinesVisual3D(); lines.Thickness = 3; lines.Points = geometry3.Positions; lines.Transform = new TranslateTransform3D(3,1,1); Viewport3D.Children.Add(lines);
Bu aşağıdaki görünüme neden olur: Ben orijinal kutusunu gizlemek ve kutunun üstünde LinesVisual3D yerleştirirseniz
, ben wirefrime görüntülenen alabilirsiniz orijinal nesne sanki ama yine de kenarlardaki kenarları eksik.
Teşekkürler. Birkaç soru: 1. TessElate yöntemi, MeshElement'te korunur, bu, BoxVisual3d'yi uzatmam gerekmiyor mu? 2. BoxVisual3d'yi uzattığımda ve bunu TessVisual3D için konumlar elde etmek için üzerine Tesselate'i kullandığımda ve onu görüntülediğimde, yalnızca en üstteki kareleri görüntüledim, ancak tüm tel kafesleri göremiyorum. Yandaki çizgiler dahil olmak üzere tüm tel çerçeveyi nasıl oluşturabilirim? – Dan
1. Evet, ağı almanın tek yolu görünüyor. 2.Yatırım kodunda hatalar veya backface culling için algoritma hesapları olabilir. Sadece noktaları yazdırın ve el ile kontrol edin. –
@Dan - Yüzlerin sadece bir bölümünü görmenizin nedeni, Genel olarak konumlar koleksiyonunun her noktayı sadece bir kez içermesidir. Endeksler koleksiyonu, üçgenler oluşturmak için bu noktalar arasındaki ilişkiyi içerir. Bu yüzden, indisleri (ilk üçgenin ilk üçgenin indeksleri) ilk döngüden geçirmeniz ve tüm üçgenlerin tüm taraflarını Noktalar koleksiyonuna eklemeniz gerekir. Yardıma ihtiyacınız olursa bana bildirin –