More Related Content
Similar to 3d mit Python (PythonCamp) (20)
More from Martin Christen (13)
3d mit Python (PythonCamp)
- 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. 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
- 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. PythonCamp 2015 Köln© 2015 M. Christen, IVGI/FHNW 5
Blender
Die aktuelle Version von Blender ist 2.73 (20. Januar 2015).
- 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. 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. PythonCamp 2015 Köln© 2015 M. Christen, IVGI/FHNW 8
WeiterfĂĽhrende Infos
Python API-Referenz
(auch im Help-Menu zu finden)
- 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. 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. 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. 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. 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. PythonCamp 2015 Köln© 2015 M. Christen, IVGI/FHNW 16
Anwendung 1: OpenWebGlobe
MapData © OpenStreetMap contributors
- 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. 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. 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. 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. 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
- 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/ )
- 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.