Я рисую трехмерную сетку, используя метод Mayavi's triangular_mesh
. Данные описывают человеческий силуэт, лежащий лицом вниз в трехмерном пространстве (так что cmap
можно использовать для обозначения расстояния от камеры).Mayavi: вращать вокруг оси y
Вот код, который используется для создания участка (грани и вершины идут от внешнего объекта, и есть слишком много, чтобы показать здесь):
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])
без перемещения камеры, силуэт лежит лицом -вниз. Для просмотра модели лицом к лицу я изменяю азимут и высоту камеры, чтобы посмотреть на график сверху вниз. Это показывает силуэт по назначению.
mlab.view(azimuth=0, elevation=180)
mlab.show()
Моя следующая задача состоит в том, чтобы создать серию снимков, где камера поворачивается вокруг участка, начиная с силуэтом, обращенной вправо, и заканчивая его обращенным влево.
Усложнение состоит в том, что для получения цветовой карты для информации о глубине я уже перемещаю азимут и высоту представления (как показано в приведенном выше коде). У Mayavi есть больше возможностей для перемещения камеры, чем matplotlib, но у него, похоже, нет возможности вращаться вокруг оси Y, поэтому я предполагаю, что мне нужно выполнить некоторые сложные вычисления по азимуту и высоте, чтобы достичь тот же результат - но я не понимаю, с чего начать (я новичок в работе в 3D-пространстве, и мой мозг так не думает).
Может ли кто-нибудь указать мне правильное направление?
Большое спасибо, это выглядит полезным. Я попробую в понедельник, чтобы посмотреть, как это работает. – MassivePenguin
Хммм, не совсем там (он вращается по неправильной оси). Возможно, мне придется попробовать совершенно другой подход ... – MassivePenguin