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 行列を作成してプロットしますか? どんな入力でも役に立ちます。
私の目標は、上記のアプローチを使用してアニメーション化された線で表されるスティック フィギュアを作成することですが、他の方法を試してもかまいません。棒人間を作成してアニメートするためのより効率的な方法は他にありますか?
貢献してくれたすべての人に感謝します。