在 mlab/mayavi/python 中设置平行预期
Setting parallel prospective in mlab/mayavi/python
我在 python 中有一段代码可以在 python 中渲染一些球体,如下所示:
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
import random
import mayavi
from mayavi import mlab
N = 4;
diams = .4*np.ones([N]);
xvals = np.arange(N);
yvals = np.zeros(N);
zvals = np.zeros(N);
pts = mlab.points3d(xvals, yvals, zvals, diams, scale_factor=1,transparent=True)
mlab.show()
图形的默认视图会根据相机位置添加失真(球体越远越小)。我想通过一些命令将投影设置为平行投影(更远的球体大小相同),以便它自动呈现这样。
我没有找到 google 或文档的直接解决方案。谢谢!
根据您的情况尝试设置 fig.scene.parallel_projection = True
或 mlab.gcf().scene.parallel_projection = True
。
作为一个简单的例子,比较(放大以放大差异):
import numpy as np
from mayavi import mlab
np.random.seed(1977)
x, y, z = np.random.random((3, 10))
mlab.points3d(x, y, z)
mlab.show()
当我们设置正交投影时:
import numpy as np
from mayavi import mlab
np.random.seed(1977)
x, y, z = np.random.random((3, 10))
mlab.points3d(x, y, z)
mlab.gcf().scene.parallel_projection = True
mlab.show()
除了接受的答案,我发现当我们使用figure.scene.parallel_projection = True
模式时,mlab.view()
返回的参数已经不足以完全描述相机视图。还有另一个参数起作用:
figure.scene.camera.parallel_scale
因此,如果希望每次都将视图设置为相同,则必须 (1) 设置 mlab.view(..)
以及 (2) 例如设置 figure.scene.camera.parallel_scale = 5.0
。
(背景故事:我的脚本绘制了一个表面,然后我只使用 mlab.view(..)
设置了相机,发现渲染图像缩放比例不一致。原因是:当我绘制时,TVTK 更新了相机的参数,因此如果绘图不相同,它们可能会有所不同。这些参数包括 parallel_scale
,它会影响投影 — 它基本上是缩放 — 但独立于 mlab.view()
。)
我在 python 中有一段代码可以在 python 中渲染一些球体,如下所示:
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
import random
import mayavi
from mayavi import mlab
N = 4;
diams = .4*np.ones([N]);
xvals = np.arange(N);
yvals = np.zeros(N);
zvals = np.zeros(N);
pts = mlab.points3d(xvals, yvals, zvals, diams, scale_factor=1,transparent=True)
mlab.show()
图形的默认视图会根据相机位置添加失真(球体越远越小)。我想通过一些命令将投影设置为平行投影(更远的球体大小相同),以便它自动呈现这样。
我没有找到 google 或文档的直接解决方案。谢谢!
根据您的情况尝试设置 fig.scene.parallel_projection = True
或 mlab.gcf().scene.parallel_projection = True
。
作为一个简单的例子,比较(放大以放大差异):
import numpy as np
from mayavi import mlab
np.random.seed(1977)
x, y, z = np.random.random((3, 10))
mlab.points3d(x, y, z)
mlab.show()
当我们设置正交投影时:
import numpy as np
from mayavi import mlab
np.random.seed(1977)
x, y, z = np.random.random((3, 10))
mlab.points3d(x, y, z)
mlab.gcf().scene.parallel_projection = True
mlab.show()
除了接受的答案,我发现当我们使用figure.scene.parallel_projection = True
模式时,mlab.view()
返回的参数已经不足以完全描述相机视图。还有另一个参数起作用:
figure.scene.camera.parallel_scale
因此,如果希望每次都将视图设置为相同,则必须 (1) 设置 mlab.view(..)
以及 (2) 例如设置 figure.scene.camera.parallel_scale = 5.0
。
(背景故事:我的脚本绘制了一个表面,然后我只使用 mlab.view(..)
设置了相机,发现渲染图像缩放比例不一致。原因是:当我绘制时,TVTK 更新了相机的参数,因此如果绘图不相同,它们可能会有所不同。这些参数包括 parallel_scale
,它会影响投影 — 它基本上是缩放 — 但独立于 mlab.view()
。)