3d mit Python (PythonCamp)

3.931 Aufrufe

Veröffentlicht am

Präsentation vom PythonCamp 28.3.2015
Python 3D: Skripting, Realtime, Prozessierung

Veröffentlicht in: Technologie
0 Kommentare
3 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

Keine Downloads
Aufrufe
Aufrufe insgesamt
3.931
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
2.237
Aktionen
Geteilt
0
Downloads
12
Kommentare
0
Gefällt mir
3
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

3d mit Python (PythonCamp)

  1. 1. PythonCamp 2015 Köln© 2015 M. Christen, IVGI/FHNW 1 3D Computergrafik mit Python Martin Christen, martin.christen@fhnw.ch Fachhochschule Nordwestschweiz Hochschule für Architektur, Bau und Geomatik Institut Vermessung und Geoinformation
  2. 2. PythonCamp 2015 Köln© 2015 M. Christen, IVGI/FHNW 2 3D Computergrafik mit Python Ich zeige 3 Fallbeispiele wie Python für die 3D Computerfgrafik verwendet werden kann: 1. Teil: Python als Scriptsprache 2. Teil: Python für die Echtzeit-Darstellung von 3D 3. Teil: Python für die Prozessierung von Daten
  3. 3. PythonCamp 2015 Köln© 2015 M. Christen, IVGI/FHNW 3 1. Teil Python als Scriptsprache
  4. 4. PythonCamp 2015 Köln© 2015 M. Christen, IVGI/FHNW 4 Blender Blender ist eine freie 3D-Grafiksoftware. Hauptanwendung ist die 3D-Modellierung, d.h. modellieren, texturieren, animieren, rendern. Blender verwendet Python als Skriptsprache. Download-Link: https://www.blender.org/download/
  5. 5. PythonCamp 2015 Köln© 2015 M. Christen, IVGI/FHNW 5 Blender Die aktuelle Version von Blender ist 2.73 (20. Januar 2015).
  6. 6. PythonCamp 2015 Köln© 2015 M. Christen, IVGI/FHNW 6 Duch alle Objekte der Szene iterieren for obj in bpy.data.objects: print(obj)
  7. 7. PythonCamp 2015 Köln© 2015 M. Christen, IVGI/FHNW 7 Objekte verändern import bpy scene = bpy.context.scene for object in scene.objects: obj.location.x += 1.0
  8. 8. PythonCamp 2015 Köln© 2015 M. Christen, IVGI/FHNW 8 Weiterführende Infos Python API-Referenz (auch im Help-Menu zu finden)
  9. 9. PythonCamp 2015 Köln© 2015 M. Christen, IVGI/FHNW 9 Blender: Python API Referenz
  10. 10. PythonCamp 2015 Köln© 2015 M. Christen, IVGI/FHNW 10 2. Teil: Python für die Echtzeit-Darstellung von 3D
  11. 11. PythonCamp 2015 Köln© 2015 M. Christen, IVGI/FHNW 11 Low Level 3D Programmierung mit Python Low-level 3D-Programmierung hat den Vorteil, dass sehr hardwarenah programmiert werden kann. Die Low-Level Programmierung sollte nur dann verwendet werden, wenn eine eigene Python-3D-Bibliothek erstellt werden soll.
  12. 12. PythonCamp 2015 Köln© 2015 M. Christen, IVGI/FHNW 12 OpenGL • OpenGL = Open Graphics Library • Version 1.0 erschien 1992. (als Weiterentwicklung von IrisGL) • Die aktuelle Version ist OpenGL 4.5 und erschien am 11. August 2014. • OpenGL ist eine High-Performance Grafikprogrammierschnittstelle (Grafik-API) die – unabhängig ist von der (Grafik-)hardware – Unabhängig von GUI (Fenstersystem) und Input-Geräten – einen Sprachumfang von ~200 Befehlen hat. – prinzipiell unabhängig von der Programmiersprache, also auch Python!
  13. 13. PythonCamp 2015 Köln© 2015 M. Christen, IVGI/FHNW 13 OpenGL in Python nutzen Es gibt verschiedene Möglichkeiten • Verwendung von OpenGL in PySide und PyOpenGL • Verwendung von OpenGL mit pyglet • Verwendung von OpenGL mit pygame Pyglet http://www.pyglet.org/ Windows: http://www.lfd.uci.edu/~gohlke/pythonlibs/#pygle PyOpenGL: http://pyopengl.sourceforge.net/ Windows: http://www.lfd.uci.edu/~gohlke/pythonlibs/#pyopengl PyGame: http://pygame.org/tags/opengl
  14. 14. PythonCamp 2015 Köln© 2015 M. Christen, IVGI/FHNW 14 High Level 3D Es gibt zahlreiche 3D-Bibliothken für Python, unter anderem: Pygame: http://pygame.org/news.html Cgkit: http://cgkit.sourceforge.net/ Vispy: http://vispy.org/ VPython: http://vpython.org/ VTK: http://www.vtk.org/ 3D Game Engines für Python: Blender: http://www.blender.org Panda3D: http://www.panda3d.org/ CrystalSpace: http://www.crystalspace3d.org/main/PyCrystal
  15. 15. PythonCamp 2015 Köln© 2015 M. Christen, IVGI/FHNW 15 3.Teil Python für die Prozessierung von Daten • Python kann auch für die (Vor-)Prozessierung von Daten verwendet werden. Die effektive 3D-Darstellung erfolgt in einer anderen Sprache. • Zum Beispiel mit JavaScript/WebGL im Webbrowser.
  16. 16. PythonCamp 2015 Köln© 2015 M. Christen, IVGI/FHNW 16 Anwendung 1: OpenWebGlobe MapData © OpenStreetMap contributors
  17. 17. PythonCamp 2015 Köln© 2015 M. Christen, IVGI/FHNW 17 Funktionsweise eines 3D-Globus (und 2D-Karten) Tile System (global) Kombination: Pyramide + Mosaik Räumliche Aufteilung mittels Quadtree
  18. 18. PythonCamp 2015 Köln© 2015 M. Christen, IVGI/FHNW 18 Prozessierung von Tiles? 2D Image Tile RGB(A) 256x256 Pixels (meistens...) LOD Beschränkung: Anzahl Pixel 2D Vector Tile Enthält 2D Geometrie, aufgrund Performance wird es aber oft auch als Bild gerastert (oder Kombination) LOD Beschränkung: Anzahl Vektoren (oder Pixel) 2D Elevation Tile (-> für 2.5D Tiles) Höhenwerte z.B. 17x17 Werte im Raster LOD Beschränkung: Anzahl Höhenwerte
  19. 19. PythonCamp 2015 Köln© 2015 M. Christen, IVGI/FHNW 19 – Transformation der (lokalen) Daten in die Mercator- Projektion (WGS-84) – Kachelung der Original-Bilddaten für einen schnellen Zugriff (räumliche Unterteilung in Quadtree) – Kachelgrösse z.B. 256x256 Pixel – Berechnung der Auflösungsstufen (Bildpyramide) 1 2 Bilddatenaufbereitung
  20. 20. PythonCamp 2015 Köln© 2015 M. Christen, IVGI/FHNW 20 Daten-Prozessierung mit Cloud Download der sichtbaren Datenfragmente Bilddaten, Höhendaten, 3D-Modelle, Punktwolken, POI Web Viewer • HTML5 • WebGL • JavaScript Prozessierung und Caching von Tiles (u.a. Python) 256 256 256 Upload Rohdaten in Cloud
  21. 21. PythonCamp 2015 Köln© 2015 M. Christen, IVGI/FHNW 21 Proj.4 Bibliothek • https://trac.osgeo.org/proj/ • Umgang / Konversion von geographischen Projektionen • Python Version: pyproj
  22. 22. PythonCamp 2015 Köln© 2015 M. Christen, IVGI/FHNW 22 Rasterbilder mit gdal (http://www.gdal.org)
  23. 23. PythonCamp 2015 Köln© 2015 M. Christen, IVGI/FHNW 23 Anwendung 2: 3dmaps.ch (Release geplant im April 2015) Webanwendung mit Flask (http://flask.pocoo.org/ )
  24. 24. PythonCamp 2015 Köln© 2015 M. Christen, IVGI/FHNW 24 Client: Scenes overview
  25. 25. PythonCamp 2015 Köln© 2015 M. Christen, IVGI/FHNW 25 Beispiel 1:
  26. 26. PythonCamp 2015 Köln© 2015 M. Christen, IVGI/FHNW 26 Beispiel 2:
  27. 27. PythonCamp 2015 Köln© 2015 M. Christen, IVGI/FHNW 27 Beispiel 3:
  28. 28. PythonCamp 2015 Köln© 2015 M. Christen, IVGI/FHNW 28 Funktionsweise
  29. 29. PythonCamp 2015 Köln© 2015 M. Christen, IVGI/FHNW 29 Fazit Es gibt verschiedene Möglichkeiten Python für 3D- Grafikanwendungen zu nutzen Besondes gut eignet sich Python als Skriptsprache und für die Datenprozessierung in der Cloud. Für gewisse Echtzeitanwendungen, insbesondere in Kombination mit PySide kann Python durchaus auch verwendet werden.
  30. 30. PythonCamp 2015 Köln© 2015 M. Christen, IVGI/FHNW 30 Fragen

×