【发布时间】:2017-09-20 19:57:48
【问题描述】:
我首先创建了一个背景为 .png 图像的图形。然后我在图形顶部创建了一个 3D 轴,以便将 3D 轴放置在 .png 图像的顶部。请注意,.png 图像不是设置在 3D 轴内,而是设置在图形本身的轴外。
我在 3D 轴内设置了一个苹果的 3D .stl 文件(顺便说一下,你看不到苹果)。当我使用内置 Matlab 图形工具栏中的选项在 3D 轴内移动苹果时,它工作正常。但这里的问题是,当我将苹果移动到 3D 轴的边界之外时,它就会消失。
为了解决这个问题,我想设置 3D 轴的大小,使其限制超出图形,这样我就可以在图形中的任何位置移动我的苹果,而不受 3D 轴的大小的限制.注意:我没有使 3D 轴不可见,以便人们更容易理解我的问题。但是当这个问题解决后,我将使用axis off 使 3D 轴不可见,同时保留并显示苹果。
pearImage = 'pears.png';
appleModel = 'apple.stl';
backgroundImage = imread(pearImage);
[vertices,faces,~] = stlRead(appleModel);
axesHandle = axes('unit','normalized','position',[0 0 1 1]);
imagesc(backgroundImage)
set(axesHandle,'handlevisibility','off','visible','off')
uistack(axesHandle,'bottom')
stlPlot(vertices,faces)
这是stlPlot()的函数
function stlPlot(vertices,faces)
object.vertices = vertices;
object.faces = faces;
patch(object,'FaceColor',[0.1 1.0 1.0],'EdgeColor','none')
camlight('headlight')
material('dull')
axis('image')
view([-135 35])
axis off % used to make the 3D axes invisible
我从这里获得了 stlRead() 和 stlPlot() 函数:https://kr.mathworks.com/matlabcentral/fileexchange/22409-stl-file-reader?focused=5193625&tab=function。请注意,我编辑了 stlPlot() 函数以满足我的目的。
【问题讨论】:
-
显示 minimal reproducible example 以便我们重现它
-
@AnderBiguri 你好,我已经添加了代码,以便用户可以复制它
标签: image matlab plot figure axes