0

を使用して、時間とともに変化する 3D メッシュをアニメーション化しようとしていtrimeshます。反復ごとにメッシュを描画します。いくつかの繰り返しで、カメラの位置の向きなども変更します。ただし、プロット後にカメラがリセットされます。今後の反復でカメラの位置を固定したままにしたいと思います。どうやってやるの?

4

1 に答える 1

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

または、作成したすべてのオブジェクトのハンドルを保存し、反復ごとに削除することもできます。私の知る限り、これは軸のプロパティを保持します:

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 に答える