Continuing from my other couple of recent posts, I’m still trying to optimize the display quality in my environment. The latest issue is as follows: when turning (the game is from the first-person perceptive, turning = changing yaw), the entire scene becomes noticeably fuzzy/blurry. The effect disappears once the player is no longer turning. It seems to persist at different resolutions and turning speeds. Any ideas on what could be causing this or where to start looking?
Do you have a slow updating LCD? Do you have the blur enabled form the blur demo? Does this happen with other games?
The effect is present on two different LCDs, both of which are of high quality. It does not happen with other games, and there is no explicit blurring being done. Again, it’s only present when turning.
Huh. Lots of other developers spend months and months of effort trying to get a good motion blur effect, and you’re complaining just 'cause it comes for free. No pleasing some people.
Seriously, I really don’t know what you’re referring to. Is it that each individual frame is slightly blurry, or is it the overall visual effect of movement that causes an impression of blurriness? Try taking a screenshot in the middle of a camera pan to see if the individual frame is sharp. If it is, then it must be some issue with your monitor updating.
What is your frame rate? Is it syncing to video refresh?
I’d like to re-open this thread and see if you have any more thoughts. David, I’ve tried your suggestion of taking a few screen shots during a pan, and as you suspected, the individual frames do appear sharp: memory.psych.upenn.edu/~asolway/sharp.jpg.
However, the “blur effect” is persistent across a wide variety of graphics cards and displays. You can see what this looks like here: memory.psych.upenn.edu/~asolway/blur.mov (~20MB). It is most noticeable with text, although happens for all surfaces. Notice the word “costume” on the right of the building. When stationary, the text appears similar to the screenshot above, but when turning, the text becomes almost unreadable.
You can observe the frame rate in the video… we are indeed syncing to video refresh.
Thanks for your help.
What I see in the video is an artifact called strobing. It’s an artifact that you typically get when you don’t have motion blur in a scene, because the eye can see the delay between frames and perceives that the motion is not continuous. Motion blur would, ironically, satisfy the eye’s expectation and make the image appear clear while it is “in motion”.
However, strobing is generally only visible at 30fps and below; it goes away at 60fps, because that’s fast enough to completely fool the eye’s perception.
I can see strobing in the video because the video is recorded at 24fps, despite the source’s claim to be running at 60fps. However, there’s no reason that you should be seeing strobing in the original, unless (a) your camera isn’t updating smoothly every frame, (b) you’re not actually getting 60fps for some reason, or © your monitor(s) aren’t actually updating at 60fps for some reason.
So I’m afraid I’m still baffled.
Thanks for your quick as always reply. Some more thoughts/questions…
(a) The rotation occurs each frame (roughly) as follows, which I believe should be smooth:
dt = globalClock.getDt()
camera.setH(camera.getH() +/- dt*CONSTANT_PARAM)
(b) With vsync disabled, the fps goes up beyond 200, and the problem persists. This is true across several different machines.
© It’s possible, but unlikely. We have a number of different modern displays, and while one could be defective, I doubt all of them are refreshing slower than 60Hz.
Reducing the turning speed (i.e. making CONSTANT_PARAM smaller) helps the problem, however, we have to make it unreasonably low for it to disappear entirely. Do other rich, first-person, Panda3D environments exhibit any similar problems? Unfortunately, I couldn’t find anything for comparison. Do you suspect implementing motion blur is the only way to fully alleviate this effect?
I concur with (a), (b), and ©.
I’ve never seen this problem on any 60fps environment, Panda-based or otherwise. With 60fps, motion blur really isn’t necessary.
Is it something you could package up and email to me for analysis? Or, even better, maybe build a small app that demonstrates the same problem?
i’ll bet dollars to doughnuts that it’s the monitor.