介绍
我试图强调球面上的某个区域,这个区域应该被着色为不透明(alpha=1.0),球体的其他部分应该被着色为半透明(alpha=0.5)。
问题
考虑到WAlpha(Data >= DummyValue) = 1.0WAlpha(Data < DummyValue) = 0.5,以下命令无法按预期工作:

surf(X, Y, Z, Data, 'AlphaData', WAlpha, 'FaceAlpha', 'interp');

它将所有未选定的区域绘制为完全透明:
注意
将“FaceAlpha”设置为标量值时,我没有问题(即这不是我的图形卡的问题):
surf(X, Y, Z, Data, 'AlphaData', WAlpha, 'FaceAlpha', 0.5);

源代码
以下是我为重现问题而创建的非常短的伪代码的链接:link
请让我知道,如果你有任何其他想法强调选定的地区,而不是使用透明度。

最佳答案

下面是快速测试:

%# surface data
Z = membrane;

%# alpha-transparency matrix
A = ones(size(Z))*0.3;          %# transparent by default
A(abs(Z)>0.5) = 1;              %# make certain region opaque

%# plot
figure('Renderer','opengl')
surf(Z, 'AlphaData',A, 'AlphaDataMapping','none', ...
    'FaceAlpha','interp', 'EdgeColor','none')

结果:

10-05 21:15