三次元グラフのZ軸を中心に回転させたい

29 ビュー (過去 30 日間)
Takanori Kawashima
Takanori Kawashima 2020 年 6 月 16 日
回答済み: Naoya 2020 年 6 月 17 日
三次元プロットをパワーポイント上で動かして説明を行いたいと考えております。
三次元プロットいずれかの軸を回転させたムービーを作成し、それを添付する形になるのだと思います。
軸を回転させ、パワーポイントに使用する流れが説明されているサイト、資料はございますでしょうか?
お忙しいところ恐縮ですがどうぞよろしくお願いいたします。

採用された回答

Naoya
Naoya 2020 年 6 月 17 日
動画像ファイルの作成と 動画像をパワーポイントに張り付ける 2点については以下例となります。
〇 動画像ファイルの作成
動画像ファイルの保存については、 VideoWriter 関数を使います。
例えば、figファイルから 方位角を 1 度~ 360度まで 3度刻みでフレームを保存する場合は、以下の様な形で保存します。
h = openfig('All vessel structure (cross point).fig');
% 動画ファイルの保存
v = VideoWriter('newfile.mp4','MPEG-4');
open(v);
for n = 1:3:360
view([n, 30]);
drawnow; % 描画更新(※)
frame = getframe(h);
writeVideo(v,frame);
end
close(v);
※ drawnow コマンドを追加しないと、各ループにおいて描画が更新されない可能性もありますので、確実に更新されるように挿入します。
〇 動画像ファイルをパワーポイントに張り付ける機能
パワーポイントに動画を挿入する直接的な機能はMATLABでは提供されていませんが、COM経由でパワーポイントのオブジェクトモデルを操作すれば可能です。COMのインターフェースは、actxserver にて使用出来ます。
MATLABではCOMのインターフェースを提供しているのみとなります。
(マイクロソフト製品側で提供される動画像を埋め込むAPIについては AddMediaObject2 メソッドになると思われます。)
あくまでも一例ですが、COMインタフェース経由で、上で作成した newfile.mp4 を新規パワーポイントに張り付ける例となります。
% COMでPowerpointハンドル取得
h=actxserver('powerpoint.application');
% 表示
h.Visible=1;
% プレゼンテーションの追加
Presentation = h.Presentation.Add;
% スライドの追加
blankSlide = Presentation.SlideMaster.CustomLayouts.Item(1);
Slide1 = Presentation.Slides.AddSlide(1,blankSlide);
% 動画ファイルの追加
file_path=which('newfile.mp4');
% パワーポイントへの埋め込み
Slide1.Shapes.AddMediaObject2(file_path);
% プレゼンテーションを保存して、終了
Presentation.SaveAs([pwd,'\test.pptx']);
h.Quit;
delete(h)

その他の回答 (0 件)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!