2015-02-18 16 views
5

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

    1. 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

    enter image description here

    , ben wirefrime görüntülenen alabilirsiniz orijinal nesne sanki ama yine de kenarlardaki kenarları eksik.

  • cevap

    5

    MeshElement3D.Tesselate() numaralı telefonu arayarak MeshGeometry3D (mesh) alabilirsiniz.

    Sonraki LinesVisual3D nesnesini oluşturun.

    Kafesin noktalarını LinesVisual3D'un Noktalarına kopyalayın. Eğer LinesVisual3D kalınlığını ayarlamak ve sahnenin eklemek emin olun

    Son olarak:

    Bu iç örgü yaratacaktır (LinesVisual3D.cs in helix toolkit kaynakları bakınız).

    +0

    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

    +0

    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. –

    +0

    @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 –

    İlgili konular