Einführung
In diesem Lab werden die verschiedenen Kameraprojektionen für 3D-Darstellungen und die Auswirkungen der Veränderung der Brennweite für eine Perspektivprojektion mithilfe von Python Matplotlib demonstriert.
Tipps für die VM
Nachdem der VM-Start abgeschlossen ist, klicken Sie in der oberen linken Ecke, um zur Registerkarte Notebook zu wechseln und Jupyter Notebook für die Übung zu nutzen.
Manchmal müssen Sie einige Sekunden warten, bis Jupyter Notebook vollständig geladen ist. Die Validierung von Vorgängen kann aufgrund der Einschränkungen in Jupyter Notebook nicht automatisiert werden.
Wenn Sie bei der Lernphase Probleme haben, können Sie Labby gerne fragen. Geben Sie nach der Sitzung Feedback, und wir werden das Problem für Sie prompt beheben.
Bibliotheken importieren
Zunächst importieren Sie die erforderlichen Bibliotheken, einschließlich Matplotlib und Axes3D aus mpl_toolkits.mplot3d.
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import axes3d
Daten abrufen
Rufen Sie die Testdaten für die 3D-Darstellung ab.
X, Y, Z = axes3d.get_test_data(0.05)
Erstellen einer Figur mit Teilfiguren
Erstellen Sie eine Figur mit drei Teilfiguren mit plt.subplots.
fig, axs = plt.subplots(1, 3, subplot_kw={'projection': '3d'})
Die Daten darstellen
Stellen Sie die Daten auf jeder der drei Teilfiguren mit plot_wireframe dar.
for ax in axs:
ax.plot_wireframe(X, Y, Z, rstride=10, cstride=10)
Die orthogonale Projektion einstellen
Stellen Sie die erste Teilfigur so ein, dass sie eine orthogonale Projektion mit einem FOV von 0 Grad und einer Brennweite von unendlich verwendet.
axs[0].set_proj_type('ortho') ## FOV = 0 deg
axs[0].set_title("'ortho'\nfocal_length = ∞", fontsize=10)
Die perspektivischen Projektionen einstellen
Stellen Sie die zweite Teilfigur so ein, dass sie eine perspektivische Projektion mit der standardmäßigen FOV von 90 Grad und einer Brennweite von 1 verwendet.
axs[1].set_proj_type('persp') ## FOV = 90 deg
axs[1].set_title("'persp'\nfocal_length = 1 (default)", fontsize=10)
Stellen Sie die dritte Teilfigur so ein, dass sie eine perspektivische Projektion mit einer FOV von 157,4 Grad und einer Brennweite von 0,2 verwendet.
axs[2].set_proj_type('persp', focal_length=0.2) ## FOV = 157.4 deg
axs[2].set_title("'persp'\nfocal_length = 0.2", fontsize=10)
Zeige das Diagramm an
Zeige das Diagramm mit plt.show() an.
plt.show()
Zusammenfassung
In diesem Lab wurde gezeigt, wie man mit Python Matplotlib einen 3D-Diagramm erstellt und wie man den Projektionstyp und die Brennweite des Diagramms ändert. Die orthogonale Projektion verflacht das Bild, während die perspektivische Projektion die Perspektive übertreibt und dem Bild eine größere scheinbare Tiefe verleiht. Die standardmäßige Brennweite von 1 entspricht einem Blickwinkel (FOV) von 90 Grad.