3D-Grafik mit VPython

Das Kapitel 8 der 3ten Auflage des Buches beschreibt die Erstellung von 3D-Grafik-Szenen mit dem Erweiterungspaket VPython. Die beschriebene Software-Version ist VPython 7. Ab Python 3.5 steht die neuere Software-Version VPython 7 zur Verfügung. Wenn Sie also diese neueste VPython-Version verwenden wollen, müssen Sie eine neuere Python-Variante (3.5, 3.6 oder 3.7) installieren.

Hier die wichtigsten Unterschiede zwischen VPython 6 und VPython 7 in Kurzform.

Wichtiger Hinweis:
Sie finden die Lösungen der Aufgaben zu Kapitel 8 (VPython) sowohl in der Version 6 als auch in der Version 7 vor!


Erster wichtiger Unterschied
Die Import-Anweisung ist in der Version 7 verändert worden. Die Erzeugung eines Quaders mit box() sieht nun so aus:

from vpython import *
box()

In VPython 6 wurde dies so geschrieben:

from visual import *
box()

Zweiter wichtiger Unterschied
VPython basiert nun auf WebGL. Deswegen werden die 3D-Szenen nicht in einem separaten Fenster angezeigt, sondern im Web-Browser. Sie müssen nichts unternehmen: sobald die Szene erzeugt wird, startet VPython den Web-Browser oder öffnet notfalls einen neuen Tab. Dies kann beim ersten Programmlauf einige Sekunden dauern!


Dritter wichtiger Unterschied
Die Material-Definition ist nicht mehr vorhanden. Bei der Erzeugung der Grafik-Objekte konnten in VPython 6 die visuellen Eigenschaften der Oberflächen mit der Option material festgelegt werden. Um zum Beispiel einen Quader mit einer Oberfläche aus Holz zu erzeugen, wurde dann geschrieben:

from visual import *
box(material=materials.wood)

Dies entfällt nun in der Software-Version VPython 7. Stattdessen ist es erheblich einfacher geworden eine Textur auf alle oder einzelne Körperoberflächen zu projizieren. Hierzu verwendet man beliebige Bilddateien im JPG-Format (JPEG). Sie können Fotos von Digitalkameras und von Mobiltelefonen verwenden. Damit kann der Benutzer praktisch beliebige  Oberflächenstrukturen erzeugen. Hier ist ein Beispiel, wie das Bild einer Holzoberfläche auf einen Quader projiziert werden kann:

from vpython import *
box(texture='wood_texture.jpg')

Die Fotos bzw. Bilddateien müssen für Anaconda-User in dem Verzeichnis

C:\Users\Benutzername\Anaconda3\Lib\site-packages\vpython\vpython_data

liegen. WinPython-Nutzer finden das Verzeichnis z.B. unter

C:\Users\Benutzername\WinPython_3661\python-3.6.6.amd64\Lib\site-packages\vpython\vpython_data

Dort können Sie auch Ihre eigenen Fotos ablegen, um diese dann als Texturen zu verwenden. Einige Bilddateien wurden von den Autoren von VPython dort schon hinterlegt.


Vierter wichtiger Unterschied
Die Event-Programmierung zur Gestaltung interaktiver Szenen wurde neu gestaltet. Hier ergeben sich die bedeutsamsten Änderungen. Sie können die Lösungen der Aufgaben in den Versionen 6 und 7 vergleichen. Beide Versionen finden Sie im Downloadbereich. Weitere Informationen erhalten Sie durch die Dokumentation von VPython 7:

http://www.glowscript.org/docs/VPythonDocs/mouse.html

Wählen Sie aus  dem  Menüpunkt „Canvases/Events“ entweder „Mouse Events“ oder „Keyboard Events“ aus.