如何解决gnuplot:如何避免视角相关的半透明 3D 表面?
我偶然发现了以下内容。
如果我绘图,例如一个使用 pm3d
并将边定义为半透明的立方体,如果我将其旋转 90 度的倍数,我希望立方体看起来相同。
然而,显然取决于视角,特定表面看起来比其他表面更亮或更暗。在下面的例子中,30 度和 120 度的视图有 3 种不同的红色阴影,而 210 和 300 度的视图只有 2 种红色阴影。不涉及pm3d lighting
。
问题:
这怎么解释?如何避免这种情况?我对立方体的定义有问题吗?
我是否遗漏了 help pm3d
或 help pm3d algorithm
或 help pm3d color_assignment
下的文档中的任何内容?我使用的是太旧的 gnuplot 版本 (5.2.8) 还是“错误的”终端 (wxt)?
代码:
### semitransparent 3D surfaces
reset session
$Cube <<EOD
0 0 0
0 0 1
0 1 1
0 1 0
0 0 0
1 0 0
1 0 1
1 1 1
1 1 0
1 0 0
0 0 0
1 0 0
1 1 0
0 1 0
0 0 0
0 0 1
1 0 1
1 1 1
0 1 1
0 0 1
EOD
set view equal xyz
set cbrange [0.9:1]
set palette defined (1 'red')
set pm3d depthorder hidden3d
set pm3d implicit
unset hidden3d
unset label
unset tics
unset border
unset key
unset colorbox
set multiplot layout 2,3
a=75
b=30
r=1.3
set title sprintf("opaque view: %d,%d",a,b)
set view a,b,r
set style fill transparent solid 1
splot $Cube u 1:2:3:(1) w l lw 0.5 lc "black"
set style fill transparent solid 0.3
do for [i=30:300:90] {
set title sprintf("transparent view: %d,i)
set view a,i
replot
}
unset multiplot
### end of code
结果:
解决方法
这里发生了很多事情
-
最初我认为您所看到的部分证据表明,无论您使用哪个终端,图形渲染的合成操作都是非传递性的。不过我认为大部分或全部效果都可以不用这个来解释。
(background ∘ 0.3red) ∘ 0.3red ?=? background ∘ (0.3red ∘ 0.3red)
-
一个关键是你的“立方体”并不是真正的立方体;它缺少2张脸。如果将它们绘制为多边形,则视角的差异化效果会更加明显:
unset pm3d splot $Cube u 1:2:3 w polygons
-
因为您使用的是
再次绘制来感受一下这里出了什么问题with pm3d
,所以程序试图将顶点解释为一组定义表面的扫描线。这真的行不通。我不完全确定它最终会是什么,但我怀疑某些区域被绘制了两次。你可以用set pm3d interpolate 2,2
如果添加立方体缺失的两个面并绘制面 with polygons
,效果将完全消失。
set view equal xyz
unset hidden3d
unset tics
unset border
unset key
set multiplot layout 2,3
a=75
b=30
r=1.3
set title sprintf("opaque view: %d,%d",a,b)
set view a,b,r
set style fill transparent solid 1
set pm3d border lw 0.5 lc "black"
splot $Cube u 1:2:3 w polygons fc "red"
set style fill transparent solid 0.3
do for [i=30:300:90] {
set title sprintf("transparent view: %d,i)
set view a,i
replot
}
unset multiplot
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。