我正在尝试使用trimesh
为随时间变化的3d网格设置动画效果。在每次迭代中,我绘制网格。在一些迭代中,我也改变了相机的位置方向等。但是在绘图后相机会重置。我希望相机位置能够在进一步的迭代中保持固定。我怎么能这样做?
答案 0 :(得分:1)
如果您在任何地方执行clf
或cla
,那么也会清除轴的camera*
属性。您必须保存这些并在每次迭代时重新设置它们:
g = [];
while ~done
clf;
... %# generate mesh and other elements
%# set previous Camera* properties
if ~isempty(g)
set(gca, g); end
%# possibly adjust them for the current frame
...
%# save all Camera* properties
g.CameraPosition = get(gca, 'CameraPosition');
g.CameraTarget = get(gca, 'CameraTarget');
g.CameraUpVector = get(gca, 'CameraUpVector');
g.CameraUpVectorMode = get(gca, 'CameraUpVectorMode');
g.CameraViewAngle = get(gca, 'CameraViewAngle');
%# Grab the current frame
...
end
或者,您可以将句柄保存到您创建的所有对象,并在每次迭代时删除它们。 AFAIK,这将保留轴的属性:
while ~done
h(1) = trimesh(...)
h(2) = patch(...)
...
%# grab the frame
...
%# delete all plot elements instead of clf/cla
delete(h)
end
虽然没有测试过最后一个,所以你可能想先做一些实验。