Einfacher Python-Algorithmus, der beim Finden von Begrenzungskasten von Meshes aus einer obj-Datei benötigt wird

StackOverflow https://stackoverflow.com//questions/11660051

  •  11-12-2019
  •  | 
  •  

Frage

Ich versuche ein Packproblem mit Python- und obj-Dateien. Ich bin ein Neuling in Python und nicht sicher, wie Sie die obj-Datei-Scheitelpunkte manipulieren, um die optimale Begrenzungsbox zu finden. Jeder Beispiel-Python-Code, um mich zu beginnen? Hier ist eine einfache Kästchen OBJ-Datei, mit der ich in einen größeren Container passen muss. Kurz gesagt, kann das Objekt x in das Objekt y passen. Dann kann es letztendlich mit der optimalen Lösung in y passen, aber das ist später.

Hier sind die .obj-Dateien für die kleinen und größeren Boxen Klein: generasacodicetagpre.

v -5 -5 0 V -5 -5 5 v 0 -5 0 v 0 -5 5 vt 0 0. vt 0 1. vt 1 0. vt 1 1. VN 0 -1 0 VN 0 -1 0 VN 0 -1 0 VN 0 -1 0 F 4/4/4 23/2/2 1./1/1 3/3/3/3 v 0 -5 0 v 0 -5 5 v 0 0 0 V 0 0 5 vt 0 0. VT 0 1. vt 1 0. vt 1 1. VN 1 0 0 VN 1 0 0 VN 1 0 0 VN 1 0 0 F 8/8/8 6/6/6 5/5/5 7/7/7 v 0 0 0 V 0 0 5 V -5 0 0 V -5 0 5 vt 0 0. VT 0 1. vt 1 0. vt 1 1. Vn 0 1 0 Vn 0 1 0 VN 0 1 0 VN 0 1 0 F 12/12/12 10/10/10 9/9/9 11/11/11.11 V -5 0 0 V -5 0 5 V -5 -5 0 V -5 -5 5 vt 0 0. VT 0 1. vt 1 0. vt 1 1. VN -1 0 0 VN -1 0 0 VN -1 0 0 VN -1 0 0 F 16/16/16 14/14/14 13/13/13 15/15/15 V -5 -5 0 v 0 -5 0 V -5 0 0 v 0 0 0 vt 0 0. vt 0 1. vt 1 0. vt 1 1. vn 0 0 -1 vn 0 0 -1 vn 0 0 -1 vn 0 0 -1 F 20/20/20 18/18/18 17/17/17 19/19/19 V -5 -5 5 V -5 0 5 v 0 -5 5 V 0 0 5 vt 0 0. VT 0 1. vt 1 0. vt 1 1. VN 0 0 1 VN 0 0 1 VN 0 0 1 VN 0 0 1 F 24/24/24 22/22/22 21/21/21 23/23/23 23/23/23

Größerer Kästchen: generasacodicetagpre.

v 0 0 0 V 0 0 20 V 0 20 0 V 0 20 20 vt 0 0. vt 0 1. vt 1 0. vt 1 1. VN -1 -0 -0 VN -1 -0 -0 VN -1 -0 -0 VN -1 -0 -0 F 4/4/4 3/3/3 1./1/1 2/2/2/2/2 V 0 20 0 V 0 20 20 V 20 20 0 V 20 20 20 vt 0 0. vt 0 1. vt 1 0. vt 1 1. Vn 0 1 0 Vn 0 1 0 Vn 0 1 0 Vn 0 1 0 F 8/8/8 7/7/7 5/5/5 6/6/6 V 20 20 0 V 20 20 20 V 20 0 0 V 20 0 20 vt 0 0. VT 0 1. vt 1 0. vt 1 1. VN 1 0 0 VN 1 0 0 VN 1 0 0 VN 1 0 0 F 12/12/12 11/11/11 9/9/9 10/10/10/10 V 20 0 0 V 20 0 20 v 0 0 0 V 0 0 20 vt 0 0. VT 0 1. vt 1 0. vt 1 1. VN 0 -1 0 VN 0 -1 0 VN 0 -1 0 VN 0 -1 0 F 16/16/16 15/15/15 13/13/13 14/14/14 v 0 0 0 V 0 20 0 V 20 0 0 V 20 20 0 vt 0 0. VT 0 1. vt 1 0. vt 1 1. VN -0 -0 -1 VN -0 -0 -1 VN -0 -0 -1 VN -0 -0 -1 F 20/20/20 19/19/19 17/17/17 18/12/18 V 0 0 20 V 20 0 20 V 0 20 20 V 20 20 20 vt 0 0. vt 0 1. vt 1 0. vt 1 1. VN 0 0 1 VN 0 0 1 VN 0 0 1 VN 0 0 1 F 24/24/24 23/23/23 21/21/21 22/22/22 22/21/21 22/22/22 generasacodicetagpre.

War es hilfreich?

Lösung

Erstes, um die Frage in Ihrem Titel zu beantworten:

  • Jede Objektdatei laden als Liste der Scheitelpunkte, ich gehe davon aus, dass Sie bereits einen Code, um .OBJ-Dateien in Python zu laden (wenn nicht, können Sie dies loadobj () function Zum Beispiel schalten Sie die Verts-Variable zurück)
  • Für jedes Objekt, berechnen Sie den Begrenzungskasten, z. B.:
    generasacodicetagpre.

    Nun weiter zum Testen, wenn ein Objekt in den anderen passt.Grundsätzlich möchten Sie wissen, ob eine Box-Box in allen Dimensionen gleich oder kleiner als der andere ist, wie ich Sie verstehe. Also,

    • Berechnen Sie für jeden Begrenzungskasten seine Größe in X-, Y- und Z-Dimension, z. B.:
      generasacodicetagpre.

      Viel Glück!

Andere Tipps

Sie möchten über die OBJ-Daten suchen, die nach 'V suchen, und prüfen, ob das Folgende x y und z-Koordinaten den höchsten und niedrigsten Wert jedes Mal, wenn Sie auf sie stoßen, den höchsten und niedrigsten Wert aufnehmen.Der folgende Code druckt den höchsten und niedrigsten Wert für jede Dimension aus und gibt Ihnen den Begrenzungskasten von diesem generasacodicetagpre.

und heres die Ausgabe, die ich bekomme generasacodicetagpre.

hoffe das macht Sinn

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top