tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
0
ZUGRIFFE
282
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    derPate21 derPate21 ist offline Grünschnabel
    Registriert seit
    Sep 2008
    Beiträge
    1
    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 :
    1
    
    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 :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    
    //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 :
    1
    
     mesh.optimize()

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

    Mfg
    Andi
    Miniaturansicht angehängter Grafiken Miniaturansicht angehängter Grafiken Mesh Clipping (Darstellungsproblem)-sceenshot.jpg  
    Geändert von derPate21 (09.09.08 um 18:13 Uhr)
     

Ähnliche Themen

  1. Clipping mit Graphics ?
    Von vrcat im Forum Java
    Antworten: 0
    Letzter Beitrag: 21.11.05, 14:58
  2. Explosionsteile + Clipping?
    Von Chucky2910 im Forum Cinema 4D
    Antworten: 14
    Letzter Beitrag: 08.10.05, 14:39
  3. [DirectX C++] Clipping?
    Von ThE pRiSoN iN mInD im Forum C/C++
    Antworten: 2
    Letzter Beitrag: 07.07.05, 10:28
  4. Viewport clipping?
    Von ikon im Forum 3D Studio Max
    Antworten: 9
    Letzter Beitrag: 17.12.04, 14:45
  5. Clipping für Objekte...
    Von Astovidatu im Forum Flash Plattform
    Antworten: 2
    Letzter Beitrag: 07.09.04, 17:40