我会说这是你正在绘制的大量积分导致经济放缓。一个选项是缩减采样..也可以使用较低级别的功能进行绘制(检查此相关帖子以比较plot3 / scatter3 /线性能)。

考虑以下针对速度优化的动画:

[X Y Z] = sphere(64);

X = X(:); Y = Y(:); Z = Z(:);

%# set-up figure

hFig = figure('Backingstore','off', 'renderer','zbuffer');

%# use lower-level function LINE

line(0.50*[X,X], 0.50*[Y,Y], 0.50*[Z,Z], 'LineStyle','none', 'Marker','.', 'MarkerSize',1, 'Color','r')

line(0.75*[X,X], 0.75*[Y,Y], 0.75*[Z,Z], 'LineStyle','none', 'Marker','.', 'MarkerSize',1, 'Color','g')

line(1.00*[X,X], 1.00*[Y,Y], 1.00*[Z,Z], 'LineStyle','none', 'Marker','.', 'MarkerSize',1, 'Color','b')

view(3)

%# freeze the aspect ratio to override stretch-to-fill behaviour

axis vis3d

%# fix the axes limits manually

%#set(gca, 'xlim',[-1 1], 'ylim',[-1 1], 'zlim',[-1 1])

axis manual

%# maybe even remove the tick labels

%set(gca, 'xticklabel',[], 'yticklabel',[], 'zticklabel',[])

%# animate (until figure is closed)

while ishandle(hFig); camorbit(0.9,-0.1); drawnow; end

注意我们如何使用Z-buffer渲染器,并关闭Backingstore属性。

编辑:

如果我理解正确,你要做的就是录制一个截屏视频(使用第三方应用),同时手动旋转图形,但在你的情况下,这些手动旋转是“跳跃”。另一方面,在一个while循环中用CAMORBIT / VIEW动画你的数字运行顺畅......

我提出了另一种解决方案:首先使用鼠标旋转图形,然后在每个步骤(方位角,仰角)上写下这些视图配置。然后,您可以在录制视频时使用VIEW功能重播它们,例如:

v = [...]; %# matrix where each row specify Az/El of view

for i=1:size(v,1)

view( v(i,:) )

drawnow

end

缺点是您必须使用鼠标按小步骤按下/旋转/释放(ROTATE3D对象不会暴露鼠标移动事件)

我写了一个简单的函数来帮助你完成这个过程。它加载保存的图形,启用3d旋转,并跟踪每一步的中间位置。完成后,按“完成”按钮返回视图列表...

function v = rotationDemo(figFileName)

views = []; %# list of views (Az,El)

hFig = hgload(figFileName); %# load the saved figure

views(1,:) = get(gca,'View'); %# store initial view

%# add a button, used to terminate the process

hButton = uicontrol('Style','pushbutton', 'Position',[400 1 80 20], ...

'String','Done?', 'Callback',@buttonCallback);

set(hFig, 'Toolbar','figure') %# restore toolbar

%# start 3d rotation, and handle post-callback to record intermediate views

h = rotate3d(hFig); %# get rotation object

set(h, 'ActionPostCallback',@rotateCallback)

set(h, 'Enable','on') %# enable rotation

msgbox('Rotate the view step-by-step', 'rotate3d', 'warn', 'modal')

uiwait(hFig) %# wait for user to click button

delete(hButton) %# delete button on finish

set(h, 'Enable','off') %# disable rotation

v = round(views); %# return the list of views

%# callback functions

function rotateCallback(o,e)

views(end+1,:) = get(e.Axes,'View'); %# add current view to list

end

function buttonCallback(o,e)

uiresume(gcbf) %# uiresume(hFig)

end

end

你可以调用上面的函数,然后重放动画:

v = rotationDemo('smooth_rotation.fig');

for i=1:size(v,1)

view(v(i,:))

drawnow

end

我们可以通过简单的插值来平滑过渡:

v = rotationDemo('smooth_rotation.fig');

n = size(v,1);

nn = linspace(1,n,100)'; %'# use 100 steps

vv = round( [interp1(v(:,1),nn) interp1(v(:,2),nn)] );

for i=1:size(vv,1)

view(vv(i,:))

DRAWNOW %# or PAUSE(..) to slow it down

end

作为旁注,我应该提到ROTATE3D和CAMORBIT有不同的效果。 ROTATE3D改变当前轴的View属性,而CAMORBIT控制当前轴的摄像机属性CameraTarget/CameraPosition/CameraUpVector。

matlab cam orbit,如何在MATLAB中平滑旋转3D绘图?相关推荐

  1. matlab怎让3d旋转,如何在MATLAB中平滑旋转3D绘图?

    我会说这是你正在绘制的大量积分导致经济放缓.一个选项是缩减采样..也可以使用较低级别的功能进行绘制(检查 this related post以获得plot3 / scatter3 / line性能的比 ...

  2. python 3d绘图 拖动_在python中以交互方式旋转3D绘图 - matplotlib

    我想知道如何以this视频中描述的方式交互式旋转3D绘图(如果您从上方或下方或从右侧或左侧决定).我可以在spyder或jupyter Notebook中生成3D绘图,但之后它仍然是静态的,我无法与它 ...

  3. python 3d图形控件 可交互_python – 在PySide中嵌入交互式3D绘图

    在PySide GUI中嵌入交互式3D绘图的最佳方法是什么?我在这里看了一些关于PySide GUI中嵌入的2D图的例子: 但是,我正在寻找的功能并不完全相同.该图需要根据用户的鼠标输入进行旋转和缩放 ...

  4. matlab 对话框保持,如何在matlab中创建输入对话框?(How to create Input dialog box in matlab?)...

    如何在matlab中创建输入对话框?(How to create Input dialog box in matlab?) 我想在matlab中创建输入对话框. 我在MATLAB中执行简单的加法运算. ...

  5. 二次函数 用matlab,这个二次函数如何在MATLAB中拟合出来?

    这个二次函数如何在MATLAB中拟合出来? 关注:278  答案:2  手机版 解决时间 2021-01-15 20:02 提问者夕阳再美ソ也会落幕 2021-01-15 17:12 (q+1/1.1 ...

  6. python变量存为matlab,详解如何在python中读写和存储matlab的数据文件(*.mat)

    背景 在做deeplearning过程中,使用caffe的框架,一般使用matlab来处理图片(matlab处理图片相对简单,高效),用python来生成需要的lmdb文件以及做test产生结果.所以 ...

  7. python三维图视角旋转_在python-matplotlib-Jupyter Noteb中交互式旋转三维绘图

    我想知道怎样才能像this视频中描述的那样交互地旋转一个3D图(如果你决定从上面或下面,或者从右边或左边).我可以在spyder或jupyter笔记本中生成一个3D图,但之后它仍然是静态的,我无法与之 ...

  8. matlab 保存色图,如何在matlab中制作“色图”图?

    默认情况下,网格将基于(默认)喷射色彩映射(即,较热)来显示表面值.您还可以使用冲浪填充表面贴片,并将"EdgeColor"属性设置为"无"(因此补丁边缘不可见 ...

  9. matlab cam orbit,Matlab的绘图函数

    在Matlab的命令窗口中键入doc graph2d/graph3d/specgraph 可以获得详细的帮助 graph2d Two dimensional graphs. Elementary X- ...

最新文章

  1. ubuntu 终端常用命令
  2. 解决无法将类型为“System.Web.UI.WebControls.HiddenField”的对象强制转换为类型的错误...
  3. 能量项链(NOIP 2006 提高组)
  4. 射电天文谱线接收机和终端系统
  5. 《深度学习笔记》——“损失函数loss乘以正数因子a是否等价于学习率lr乘以a呢?”
  6. c语言格式化浮点数多余的0
  7. P4578 [FJOI2018]所罗门王的宝藏
  8. 佳能无线打印机服务器,佳能LBP6018W打印机WIFI无线打印心得分享
  9. Java打印年月日历
  10. 显著性目标检测之Shifting More Attention to Video Salient Object Detection
  11. CVPR 2021 Oral | Transformer再发力!华南理工和微信提出UP-DETR:无监督预训练检测器...
  12. [160CRACKME]Chafe.2
  13. 11款惊艳的HTML5粒子动画特效
  14. 武汉理工大学有计算机专业,武汉理工大学计算机专业属于什么系
  15. 微信支付失败中关于“签名错误”的解决方案
  16. folly库安装(4)folly依赖的重要组件安装:double-conversion, google-gflags, glog, fmt, googletest, boost等
  17. The authenticity of host ‘gree129 (192.168.**.129)‘ can‘t be established.
  18. windows10管理员获得完全权限
  19. 360搜索引擎怎么样,360比百度怎么样?
  20. 文件已在explorer.exe中打开无法删除,解决办法如下,全图

热门文章

  1. 机器人程序为啥要用Qt开发呢
  2. 作为一个新人,怎样学习嵌入式Linux?
  3. RabbitMQ是什么
  4. python selenium 文件上传_Python Selenium通过Windows上传上传文件
  5. ad hoc是什么的简称_签名后的App安装时出现安装失败是什么原因?如何解决?
  6. 从未在一起更让人遗憾_我们从未在一起和我们最终没在一起,哪一个更让人难过?...
  7. 改进YOLO | 可能这才是用Transformer正确打开YOLO的方式吧?
  8. CNN 的一些可视化方法
  9. 基于视觉和惯性传感器的移动机器人手遥操作系统
  10. Analytic Marching:一种基于解析的三维物体网格生成方法