我注意到一种奇怪的行为,我无法解释,也无法克服。 假设我想绘制一个点云:
figure;pcshow(myPtCloud)
结果图如下:
现在,我想在我的点云中添加一个填充多边形:
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
到目前为止一切顺利。但如果我改为:
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
这个数字看起来不再那么好了!为什么?如果我想在我的pointcloud中绘制一个半透明的多边形,我该怎么办?!
P.S。点云可以下载here
答案 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);