3D вращение поверхности в Mathematica 7 с отключенным сглаживанием очень быстрое и плавное.Однако включение сглаживания даже на умеренном уровне резко снижает частоту кадров, что делает вращение очень прерывистым.Это происходит в гораздо большей степени в Mathematica , чем в других 3D-приложениях.
Почему сглаживание непропорционально медленнее в Mathematica ?
Способ значительно улучшить ощущение трехмерной графики - отключить АА во время вращения, но включить его, как только вращение будет остановлено.Можно ли это сделать в Mathematica 7?
Был запрошен пример.Я буду использовать вариацию кода Майка.Пожалуйста, попробуйте следующее с Edit > Preferences > Appearance > Graphics
, сначала установив No antialiasing
, а затем Highest quality
.Также попробуйте настройки между ними.Для меня любая настройка, кроме No antialiasing
, не является гладкой.Я могу визуально различать три разных уровня АА, поэтому мой 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
]
ОБНОВЛЕНИЕ и НАБЛЮДЕНИЕ
Во время игры с кодом Алексея и Майка произошло нечто странное и хорошее.У меня вдруг плавное сглаженное вращение!Я не знаю, что ускорило изменение, и я не закрыл Mathematica из-за страха, что оно исчезнет, но это доказывает то, что я подозревал, что оно МОЖЕТ быть быстрым.
Подробнеестранно, у меня медленное и быстрое поведение, происходящее параллельно в том же ноутбуке.Один рисунок вращается плавно, а другой, созданный с тем же кодом, прерывистый.Я предполагаю, что какой-то вариант ячейки был изменен при запуске кода Алексея и Майка, и это имеет очень желательный эффект.Я сделаю все возможное, чтобы выяснить, что это такое.
Полезными опциями были RotationAction -> "Clip", SphericalRegion -> True
, которые случайно появились в коде Алексея.Они, или их эффект (ViewAngle
), «прилипают» к графике так же, как это делает ротация, поэтому я смог набрать новый код без этих опций поверх старого, запустить его и получить плавное вращение.(что объясняет то, что я видел выше).Для получения дополнительной информации см. Ответы ниже.
Хотя был найден жизнеспособный обходной путь, меня все еще интересует объяснение прерывистого вращения с включенным АА.Я не верю, что «подгонка» графики - это объяснение, а всего лишь корреляция, поскольку подгонка все еще должна происходить при выключенном АА, и, тем не менее, вращение плавное.