# # PM3D surfaces are not fully included in the calculation of hidden line removal. # Older versions of gnuplot allowed you to approximate the correct occlusion # by drawing the surface twice, once "with pm3d" to produce the surface you # want to show, and once "with lines lt -2" to include the same surface in # hidden3d calculations but drawn with invisible lines. # gnuplot version 5 does the approximation for you so the extra copy of the # surface is no longer necessary. # set isosamples 25,25 set xyplane at 0 unset key set palette rgbformulae 31,-11,32 set style fill solid 0.5 set cbrange [-1:1] set title "Mixing pm3d surfaces with hidden-line plots" f(x,y) = sin(-sqrt((x+5)**2+(y-7)**2)*0.5) set hidden3d front splot f(x,y) with pm3d, x*x-y*y with lines lc rgb "black" |
reset # # Image surfaces are similarly overlooked in the calculation of hidden line removal. # I.e. this demo doesn't actually work yet. It's here for testing. # set isosamples 25,25 set xyplane at 0 unset key set cbrange [0:255] set palette cubehelix set title "Mixing image surface with hidden-line plots" set hidden3d front splot 'blutux.rgb' binary array=(128,128) flip=y format='%uchar%uchar%uchar' origin=(-10,-10,0) dx=0.156 dy=0.156 using ($1+$2+$3)/3 with image, \ x*x-y*y with lines lc rgb "black" |
reset # # Another example of pm3d hidden surface removal, # this time using pm3d depth-ordering # set multiplot title "Interlocking Tori" set title "PM3D surface\nno depth sorting" set parametric set urange [-pi:pi] set vrange [-pi:pi] set isosamples 50,20 set origin -0.02,0.0 set size 0.55, 0.9 unset key unset xtics unset ytics unset ztics set border 0 set view 60, 30, 1.5, 0.9 unset colorbox set pm3d scansbackward splot cos(u)+.5*cos(u)*cos(v),sin(u)+.5*sin(u)*cos(v),.5*sin(v) with pm3d, \ 1+cos(u)+.5*cos(u)*cos(v),.5*sin(v),sin(u)+.5*sin(u)*cos(v) with pm3d set title "PM3D surface\ndepth sorting" set origin 0.40,0.0 set size 0.55, 0.9 set colorbox vertical user origin 0.9, 0.15 size 0.02, 0.50 set format cb "%.1f" set pm3d depthorder splot cos(u)+.5*cos(u)*cos(v),sin(u)+.5*sin(u)*cos(v),.5*sin(v) with pm3d, \ 1+cos(u)+.5*cos(u)*cos(v),.5*sin(v),sin(u)+.5*sin(u)*cos(v) with pm3d unset multiplot |
reset |