0

我正在尝试使用trimesh. 在每次迭代中,我都会绘制网格。在某些迭代中,我还会更改相机位置方向等。但是相机在绘图后会重置。我希望相机位置在进一步的迭代中保持固定。我怎样才能做到这一点?

4

1 回答 1

1

如果您执行 aclfcla任何地方,那也会清除轴的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 回答