0

Matlab のdrawow関数とライン プロットを使用して、モーション ファイルをアニメーション化しようとしています。モーション ファイルには 3x3 オイラー角 (ヨー ピッチ ロール) と XYZ 座標値の両方が含まれており、ライン プロットを使用して、各ボディ セグメントがスティック フィギュアとしてアニメーション化されるスティック フィギュア アニメーションを作成する予定です。

現在、私のコードは次のとおりです。

%% Import data from text file.
%% Perform Calculations on data

%% Draw initial figure
figure(1)
hold on

set(gcf,'Renderer','OpenGL')
lua = plot(luaX(1),luaY(1),luaZ(1),0,'o','MarkerSize',10,'MarkerFaceColor','b');
set(lua,'EraseMode','normal');

rua = plot(ruaX(1),ruaY(1),ruaZ(1),0,'o','MarkerSize',10,'MarkerFaceColor','r');
set(rua,'EraseMode','normal');

%% Animate the rest
i = 1; 

while i <= length(time)

    % Delete previous line
    if i > 1
        delete(l_lua);
        delete(l_rua);
    end

    % Set data and draw line
    set(lua,'XData',luaX(i));
    set(lua,'YData',luaY(i));
    set(lua,'ZData',luaZ(i));
    l_lua = line([-200 luaX(i)],[0 luaY(i)],[0 luaZ(i)],'LineWidth',2,'EraseMode','normal');
    set(rua,'XData',ruaX(i));
    set(rua,'YData',ruaY(i));
    set(rua,'ZData',ruaZ(i));
    l_rua = line([200 ruaX(i)],[0 ruaY(i)],[0 ruaZ(i)],'LineWidth',2,'EraseMode','normal');
    drawnow;

    % Draw Figure
    grid on
    axis([-1000 1000 -1000 1000 -1000 1000]);
    xlabel('X Axis');
    ylabel('Y Axis');
    zlabel('Z Axis');

    i = i + 1;

end

上記のコードには、ラインの X、Y、および Z 値のみが含まれており、オイラー角を使用した方向は含まれていません。

描画中の線に 3x3 オイラー角を追加するにはどうすればよいですか? 座標とオイラー角の両方の値をライン プロットに追加したいと思います。オイラー角を回転行列に変換し、(XYZ 値を含む) 4x4 行列を作成してプロットしますか? どんな入力でも役に立ちます。

私の目標は、上記のアプローチを使用してアニメーション化された線で表されるスティック フィギュアを作成することですが、他の方法を試してもかまいません。棒人間を作成してアニメートするためのより効率的な方法は他にありますか?

貢献してくれたすべての人に感謝します。

4

0 に答える 0