Planuję siatkę 3D za pomocą metody mayavi's triangular_mesh
. Dane opisują sylwetkę człowieka układaną twarzą w dół w przestrzeni 3D (w związku z tym można użyć cmap
do określenia odległości od kamery).Mayavi: obracanie wokół osi Y
Oto kod używany do generowania terenu (twarze i wierzchołki pochodzić z zewnętrznego obiektu, i nie są zbyt wiele, aby zobaczyć tutaj):
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])
bez poruszania aparatem, sylwetka kładzie twarz -na dół. Aby obejrzeć model face-on, zmieniam azymut i elewację kamery, aby spojrzeć na wykres z góry na dół. To pokazuje sylwetkę zgodnie z przeznaczeniem.
mlab.view(azimuth=0, elevation=180)
mlab.show()
Moim następnym zadaniem jest stworzenie serii obrazów, gdzie kamera obraca wokół działki, wychodząc z sylwetką skierowaną w prawo, a kończąc ona skierowana w lewo.
Powikłaniem jest to, że aby uzyskać mapę kolorów dla informacji o głębokości, już poruszam azymutem widoku i rzędną widoku (jak pokazano w powyższym kodzie). Mayavi ma więcej możliwości poruszania kamerą niż matplotlib, ale wydaje się, że nie ma możliwości obracania się wokół osi Y, więc zgaduję, że będę musiał przeprowadzić skomplikowane obliczenia na azymucie i elewacji, aby osiągnąć ten sam wynik - ale nie mam pojęcia, od czego zacząć (jestem nowy w pracy w przestrzeni 3D, a mój mózg jeszcze tak nie myśli).
Czy ktoś może wskazać mi właściwy kierunek?
Bardzo dziękuję, wygląda to na przydatne. Wypróbuję to w poniedziałek, aby zobaczyć, jak to działa. – MassivePenguin
Hmmm, niezupełnie tam (obraca się na niewłaściwej osi). Być może będę musiał spróbować zupełnie innego podejścia ... – MassivePenguin