ano*_*n01 5 python 3d matplotlib mayavi mayavi.mlab
我在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()
Run Code Online (Sandbox Code Playgroud)
该图的默认视图会根据摄影机位置(较小的球体较小)增加失真。我想通过一些命令将其设置为平行投影(其他球体大小相同),以便它自动呈现。
我没有找到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()
Run Code Online (Sandbox Code Playgroud)
当我们设置正交投影时:
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()
Run Code Online (Sandbox Code Playgroud)
除了已接受的答案之外,我发现当我们使用该figure.scene.parallel_projection = True模式时,返回的参数mlab.view()不再足以完整地描述相机视图。还有另一个参数起作用:
figure.scene.camera.parallel_scale\nRun Code Online (Sandbox Code Playgroud)\n\n因此,如果希望每次都将视图设置为相同,则必须进行 (1) 设置mlab.view(..)和 (2) 设置figure.scene.camera.parallel_scale = 5.0。
(背景故事:我的脚本绘制了一个曲面,然后我仅使用 来设置相机mlab.view(..),并发现渲染的图像缩放不一致。原因是:当我绘制时,TVTK 会更新相机的参数,因此如果绘图不相同。这些参数包括parallel_scale,它影响投影 \xe2\x80\x94 它基本上是缩放 \xe2\x80\x94 但独立于mlab.view()。)
| 归档时间: |
|
| 查看次数: |
920 次 |
| 最近记录: |