登录论坛

查看完整版本 : [求助]Matalb三维绘图设置透明度


zdq_ren
2009-04-06, 21:33
我最近在做三维仿真,遇到一个难题请大家协助解决,就是使用plot3绘制三维实心立方体时如何根据各位置点不同的灰度设置透明度,使得立方体内部及背面都能看到.

我已用hidden on及hidden off试过了,不好用,hidden好像只能用于mesh,且只是在有多层图形时,将外层设置为透明,而不是对三维实心立方体的各个位置点设置不同的透明度值,请大家帮忙找找:)

麒麟子
2009-04-06, 23:06
我最近在做三维仿真,遇到一个难题请大家协助解决,就是使用plot3绘制三维实心立方体时如何根据各位置点不同的灰度设置透明度,使得立方体内部及背面都能看到.

我已用hidden on及hidden off试过了,不好用,hidden好像只能用于mesh,且只是在有多层图形时,将外层设置为透明,而...
用一下alpha看看,你看看这段代码吧,或许对你有启发
%透明度值的设置
[x,y,z,v]=flow; %创建运动特性数据,用来显示流体
p=patch(isosurface(x,y,z,v,-3)); %创建斑点式数据
isonormals(x,y,z,v,p); %创建运动特性数据
set(p,'facecolor','red','edgecolor','none'); %设置属性
daspect([1,1,1]);%创建表面图形
view(3); %设置视角
axis tight; %设置坐标轴
grid on; %网格
camlight; %设置光照效果
lighting gouraud; %设置光照效果
alpha(0.5);

zdq_ren
2009-04-07, 11:40
我上午用Alpha试了一下,确实收获很大,但Alpha只能作用image、patch、surface,不能对单个点作用,还没有达到我想要的效果,下午我再用scatter3试一下看

最好要能对点操作,比如我要绘制一幅透明的三维人体图,不但要能看到表面皮肤,还要能看到体内的肌肉、血管、神经、五脏六腑、骨骼等,类似这样的三维图不知大家画过没有

麒麟子
2009-04-07, 13:42
我最近在做三维仿真,遇到一个难题请大家协助解决,就是使用plot3绘制三维实心立方体时如何根据各位置点不同的灰度设置透明度,使得立方体内部及背面都能看到.

我已用hidden on及hidden off试过了,不好用,hidden好像只能用于mesh,且只是在有多层图形时,将外层设置为透明,而...
你可以再用下面几个形式试一试,或许有效
alphamap('decrease')
alphamap('rampup')
alphamap('rampdown')
alphamap('spin')
你说的问题我觉得在不同的面设置不同的透明度或许可以办到
由于我还是大二学生,对MATLAB了解不是很深,以下几个函数是我知道的可以控制透明度的,你看看吧,也许有用
hidden,alpha,AlphaData,AlphaData,Mapping,FaceAlpha,EdgeData