我正在尝试使用trimesh
. 在每次迭代中,我都会绘制网格。在某些迭代中,我还会更改相机位置方向等。但是相机在绘图后会重置。我希望相机位置在进一步的迭代中保持固定。我怎样才能做到这一点?
问问题
356 次
1 回答
1
如果您执行 aclf
或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
虽然还没有测试过最后一个,所以你可能想先做一些实验。
于 2012-09-22T08:45:32.397 回答