【发布时间】:2016-12-11 22:58:20
【问题描述】:
我正在使用 mayavi 的 triangular_mesh 方法绘制 3D 网格。该数据描述了在 3D 空间中面朝下放置的人体轮廓(因此cmap 可用于表示与相机的距离)。
这是用于生成绘图的代码(面和顶点来自外部对象,这里显示的太多了):
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 空间工作的新手,我的大脑还不这么认为)。
谁能指出我正确的方向?
【问题讨论】: