【发布时间】:2011-08-21 08:21:32
【问题描述】:
3D 表面旋转在关闭抗锯齿的情况下非常快速且平滑。然而,开启抗锯齿,即使在中等水平,也会大大降低渲染帧速率,使旋转非常不稳定。这在 Mathematica 中比在其他 3D 应用程序中发生的程度要大得多。
为什么在 Mathematica 中抗锯齿异常缓慢?
一种大大增强 3D 图形感觉的方法是在旋转过程中关闭 AA,但在旋转停止后立即打开它。这可以在 Mathematica 7 中完成吗?
请求了一个示例。我将使用 Mike 代码的变体。请尝试以下操作,首先将Edit > Preferences > Appearance > Graphics 设置为No antialiasing,然后再设置Highest quality。还可以尝试两者之间的设置。对我来说,除了No antialiasing 之外的任何设置都不流畅。我可以在视觉上区分三个不同级别的 AA,所以这不是我的 GPU 强制全部或不强制的问题,但它们都很慢。
Animate[Plot3D[{x^2 + y^2, -x^2 - y^2}, {x, -2, 2}, {y, -2, 2},
ImageSize -> 700,
ViewPoint ->
Dynamic[{Sin[theta] Cos[phi], Sin[theta] Sin[phi], Cos[theta]}]],
{theta, 0, Pi}, {phi, 0, 2 Pi},
RefreshRate -> 120
]
更新和观察
在玩弄 Alexey 和 Mike 的代码时,发生了一些奇怪而美好的事情。我突然有了平滑的抗锯齿旋转!我不知道是什么促成了这种变化,并且我没有关闭 Mathematica 担心它会消失,但这证明了我的怀疑,它可以很快。
更奇怪的是,我在同一个笔记本中并行发生了缓慢和快速的行为。一个图形旋转平稳,另一个使用相同代码生成的图形不稳定。我推测某些单元格选项是通过运行 Alexey 和 Mike 的代码来修改的,并且它具有非常理想的效果。我会尽力弄清楚它是什么。
有用的选项是偶然出现在 Alexey 的代码中的 RotationAction -> "Clip", SphericalRegion -> True。这些或它们的效果 (ViewAngle) 以与旋转相同的方式“粘”在图形上,因此我能够在没有这些选项的情况下输入新代码而不是旧代码,然后运行它,仍然可以获得平滑的旋转(这解释了我在上面看到的)。有关详细说明,请参阅下面的答案。
虽然已经发现了可行的解决方法,但我仍然对在 AA 开启的情况下不连贯旋转的解释感兴趣。我不认为图形的“拟合”是一种解释,而仅仅是一种相关性,因为拟合仍然需要在 AA 关闭的情况下进行,但旋转是平滑的。
【问题讨论】:
-
我也注意到了这一点。我知道你可以在其中完成一些模糊相似的事情的唯一地方是在
Manipulate内,通过使用PerformanceGoal->Speed。 -
你使用的是什么操作系统?
-
@Mr.Wizard 你能举个例子吗?
-
@Mr.巫师:也许是一种heisenbug?虽然在这种情况下,这似乎是一个非常理想的 heisenbug。
-
笔记本保存和 mma 重新启动后,速度差异仍然存在。应该可以确定差异。
标签: 3d wolfram-mathematica antialiasing