Mesh Clipping (Darstellungsproblem)

derPate21

Grünschnabel
Hallo Leute!
Ich habe folgendes praktisches Problem:
Aus einem Baumstamm (stumpfer Kegel) sollen im Sägewerk n Bretter mit unterschiedlichen Breiten und Höhen ausgeschnitten werden.
Da der Baumstamm leider kein idealer Zylinder ist, sondern konisch geformt ist, kann es sein, dass nicht auf die gesamte Länge des Brettes eine scharfe Kante vorhanden ist. Daher sollte eine 3D Ansicht erstellt werden, bei der man sieht ab wann, die Kante gebrochen wird.

Das erstellen des Kegelstumpfes habe ich mit folgendem Befehl realisiert:
Code:
cylinder = Mesh.Cylinder(dev, 1.0f, 1.5f, 5.0f, 50, 20);
...also einfach vorne einen kleineren Durchmesser wie hinten

Diesen Kegel habe ich dann einfach mal mit 4 Clip-Ebenen geschnitten
Code:
//ClipPlanes 1 (links)
            ClipPlane plane0 = device.ClipPlanes[0] as ClipPlane;
            plane0.Enabled = true;
            Vector4 v = new Vector4(0.9f, 0.0f, 0.0f, 1.0f);
            v.Transform(device.Transform.World);
            plane0.SetSingleArray(new float[] { v.X, v.Y, v.Z, v.W });

//ClipPlanes 2 (rechts)
            ClipPlane plane1 = device.ClipPlanes[1] as ClipPlane;
            plane1.Enabled = true;
            Vector4 v1 = new Vector4(-0.9f, 0.0f, 0.0f, 1.0f);
            v1.Transform(device.Transform.World);
            plane1.SetSingleArray(new float[] { v1.X, v1.Y, v1.Z, v1.W });

//ClipPlanes 3 (oben)
            ClipPlane plane2 = device.ClipPlanes[2] as ClipPlane;
            plane2.Enabled = true;
            Vector4 v2 = new Vector4(0.0f, 1.5f, 0.0f, 1.0f);
            v2.Transform(device.Transform.World);
            plane2.SetSingleArray(new float[] { v2.X, v2.Y, v2.Z, v2.W });

//ClipPlanes 4 (unten)
            ClipPlane plane3 = device.ClipPlanes[3] as ClipPlane;
            plane3.Enabled = true;
            Vector4 v3 = new Vector4(0.0f, -1.5f, 0.0f, 1.0f);
            v3.Transform(device.Transform.World);
            plane3.SetSingleArray(new float[] { v3.X, v3.Y, v3.Z, v3.W });

Jetzt habe ich natürlich einfach die Vertices außerhalb dieser Clip-Ebenen weg-geschnitten und somit ist das Gitternetz nicht mehr geschlossen, was aber der Fall sein muss, damit das Brett vollständig und korrekt angezeigt wird.
D.h. ich müsste eigentlich nur mehr pro Clip-Ebene einen Punkt einsetzten und den mit den anderen Vertices verknüpfen, doch leider hab ich keine Ahnung mit welchen Befehlen ich das realisieren soll.
Eventuell mit:
Code:
 mesh.optimize()

Zur besseren Vorstellung hab ich noch ein kleines Bild hinzugefügt.

Mfg
Andi
 

Anhänge

  • Sceenshot.jpg
    Sceenshot.jpg
    133,4 KB · Aufrufe: 17
Zuletzt bearbeitet:

Neue Beiträge

Zurück