How can I do a frame-capture style video recording in "Simulink 3D Animation" using matlab?
显示 更早的评论
I'm trying to create video recording of a complicated (30+ nodes) system in "Simulink 3D Animation" that is driven by a matlab script (I don't have simulink). The system is complex enough that I can't simply use the video recording functionality that records what is displayed in the animation viewer because it is too slow and choppy.
Instead, I would prefer to approach the problem similarly to animations in standard matlab plots, in which I use "gcf" to capture the frame, and then when I use "movie2avi" I can dictate the frame rate, such that no matter how long my simulation takes to run each loop, I get an output video with the correct fps.
Alternatively, I'm open to any solution that allows a deterministic selection of frame rate that is not dependent on how fast the computer is able to churn through the model.
回答(3 个)
Jan Houska
2014-4-10
To get a single static screenshot of the current Simulink 3D Animation figure, please do
y = capture(vrgcf);
Then, you should be able to create the video stream by using selected screenshots, as needed.
Jan
2014-4-15
Hi Nathan,
The error message "Subscripted assignment dimension mismatch." comes from the different matrix sizes during the assignment - with (i) subscript the M matrix doesn't get expanded to the assumed size (x,y,i)..
Instead of arranging the matrix M I suggest you to use the VideoWriter object, where you can easily add frames by code like this:
writeVideo(rec_obj, capture(vrgcf))
Best Regards,
Jan
Angelo Yeo
2026-2-19,4:51
0 个投票
MATLAB/Simulink from R2025a supports recording Simulink's 3D Animation with sim3d.io.VideoWriter (MATLAB) or Simulation 3D Video Writer block (Simulink).
类别
在 帮助中心 和 File Exchange 中查找有关 Animation 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!