Lösung: 3D Objektdatei zu einem 2D Bild

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Lösung: 3D Objektdatei zu einem 2D Bild

    Für alle Medieninformatiker des dritten Semester.

    Wir wollen uns Bilder der Größe 400x400 aus den eingelesenen Punkten1 anschauen. Bilder erzeugen Sie mit der Python Imaging Library (PIL) im Modul Image.

    Da Bilder nur zweidimensional sind, müssen wir uns auf zwei der drei Zahlen beschränken. Es gibt drei Möglichkeiten: x und y, x und z oder y und z. Schreiben Sie eine Funktion die eine Bilddatei bild_xy.png aus den Punkten in punkte erzeugt und speichert.

    Quellcode

    1. import Image, sys
    2. def objread(filename):
    3. "liest eine objekt datei ein"
    4. f=map(lambda x:x.split(), file(filename))
    5. f=map(lambda x:x[1:], filter(lambda x:len(x)>0 and x[0]=='v', f))
    6. l=[]
    7. for arr in f:
    8. l.append(tuple(map(float, arr)))
    9. return l
    10. def direction(x, mode):
    11. "reduziert drei punkte zu zweien"
    12. case = {"xz":(x[0],x[1]),"xy":(x[0],x[2]), "yz":(x[1],x[2])}
    13. return map(int, case[mode])
    14. def machebild(punkte, name = "bild", mode="xy"):
    15. "erstellt aus einer objekt datei ein Bild"
    16. im = Image.new('1',(400,400))
    17. punkte = map(lambda x:direction(x,mode), punkte)
    18. for t in punkte:
    19. im.putpixel(t,1)
    20. im.save(name)
    21. if len(sys.argv) > 4:
    22. lt = objread(sys.argv[1])
    23. mode = ["xy","xz","yz"]
    24. x=0
    25. for filename in sys.argv[2:]:
    26. machebild(lt, filename, mode[x])
    27. x+=1
    28. print "Bild(er) erstellt"
    29. else:
    30. print "Zu wenige Parameter\n"
    31. print "Beispiel zur richtigen Nutzung: a2.py aufg2.obj xy.png xz.png yz.png"
    Alles anzeigen
    Bilder
    • programmieren-rabbit-3d.png

      23,97 kB, 436×135, 840 mal angesehen
    Dateien
    • aufg2.txt

      (277,67 kB, 348 mal heruntergeladen, zuletzt: )