Ich zeichne ein 3D-Mesh mit Mayavis triangular_mesh
Methode. Die Daten beschreiben eine menschliche Silhouette, die verdeckt im 3D-Raum liegt (so kann die cmap
zur Bezeichnung der Entfernung von der Kamera verwendet werden).Mayavi: rotieren um die y-Achse
Hier ist der Code verwendet, um den Plot zu erzeugen (die Flächen und Ecken von einem externen Objekt kommen, und es gibt viel zu viele hier zu zeigen):
from mayavi import mlab
import math
import numpy as np
import sys
import os
fig = mlab.figure(fgcolor=(0, 0, 0), bgcolor=(1, 1, 1), size=(1920, 980))
a = np.array(this_mesh.vertices - refC.conj().transpose()) # this_mesh is an object created from external data files
this_mesh.faces = this_mesh.faces.astype(int) -1 # mesh data is generated by matlab, which is 1-indexed
m = mlab.triangular_mesh(x, y, z, this_mesh.faces, opacity=0.75)
mlab.axes(extent=[-1100, 1100, -1100, 1100, -1100, 1100])
ohne die Kamera zu bewegen, legt die Silhouette Gesicht -Nieder. Um das Modell frontal zu betrachten, verändere ich den Azimut und die Höhe der Kamera, um das Diagramm von oben nach unten zu betrachten. Dies zeigt die Silhouette wie vorgesehen.
mlab.view(azimuth=0, elevation=180)
mlab.show()
Meine nächste Aufgabe ist es, eine Reihe von Bildern zu schaffen, wo die Kamera schwenkt um die Handlung, mit der Silhouette ausgehend nach rechts gerichtet, und endend mit nach links gegenüber.
Die Komplikation ist, dass, um die Colormap für die Tiefeninformationen zu erhalten, ich bereits den Azimut und die Höhe der Ansicht verschieben (wie im obigen Code gezeigt). Mayavi hat mehr Möglichkeiten, die Kamera als matplotlib zu bewegen, aber es scheint keine Möglichkeit zu geben, sich um die Y - Achse zu drehen, also muss ich wohl einige komplexe Berechnungen im Azimut und in der Höhe durchführen, um das zu erreichen Das gleiche Ergebnis - aber ich weiß nicht, wo ich anfangen soll (ich bin neu im 3D-Raum zu arbeiten, und mein Gehirn denkt noch nicht so).
Kann mir jemand in die richtige Richtung?
Vielen Dank, das sieht nützlich aus. Ich werde es am Montag ausprobieren, um zu sehen, wie es funktioniert. – MassivePenguin
Hmmm, nicht ganz da (es dreht sich auf der falschen Achse). Ich muss vielleicht einen völlig anderen Ansatz ausprobieren ... – MassivePenguin