pcshow数字质量与后续fill3

时间:2016-06-15 12:21:06

标签: matlab matlab-figure

我注意到一种奇怪的行为,我无法解释,也无法克服。 假设我想绘制一个点云:

figure;pcshow(myPtCloud)

结果图如下:

enter image description here

现在,我想在我的点云中添加一个填充多边形:

x = [-2; -2; -2; -2];
y = [4; 5; 5; 4];
z = [-0.5; -0.5; 0.5; 0.5];
hold on; h = fill3(x, y, z, 'b');hold off

这会导致: enter image description here

到目前为止一切顺利。但如果我改为:

x = [-2; -2; -2; -2];
y = [4; 5; 5; 4];
z = [-0.5; -0.5; 0.5; 0.5];
hold on; h = fill3(x, y, z, 'b''FaceAlpha', 0.8);hold off

结果如下: enter image description here

这个数字看起来不再那么好了!为什么?如果我想在我的pointcloud中绘制一个半透明的多边形,我该怎么办?!

P.S。点云可以下载here

1 个答案:

答案 0 :(得分:2)

这是因为为了渲染透明度,MATLAB强制渲染器为opengl,这会影响渲染时的显示效果。您可以通过在绘图设置FaceAlpha之前和之后获取当前数字的Renderer来检查这一点。

get(gcf, 'Renderer')

至于为什么你的情节看起来“不那么好”。我猜你指的是锯齿状的轴线。这由图的GraphicsSmoothing属性控制。检查它是否已启用,并确保您使用的是graphics card that supports OpenGL

  

轴图形平滑,指定为“开”或“关”。平滑可减少轴图形中锯齿状线条的外观。如果GraphicsSmoothing设置为“on”,MATLAB将平滑技术应用于轴图形(和轴标尺),并且这些条件中的任何一个都为真:

     
      
  • Renderer属性设置为'painters'。
  •   
  • Renderer属性设置为'opengl',您的硬件卡支持OpenGL®。
  •   

<强>更新

如果你在谈论第二个点太小,你可以在创建pcshow对象时增加MarkerSize

pcshow(myPtCloud, 'MarkerSize', 10)

或创建情节后

set(findall(gca, '-property', 'MarkerSize'), 'MarkerSize', 10);