I've been playing "MediEvil", lately, and it got me wondering: what causes some of the old 3D games to have "flowing" graphics, when moving? It's present in games like "Final Fantasy VII", "MediEvil", and I remember "Dungeon Keeper 2" having the same thing in zoom mode. However, examples like "Quake 2" didn't have this "issue", and it's just as old. The resolution doesn't seem to be the problem, everything is rendered perfectly fine when you stand still. Is the game refreshing slowly, or is it something to do with buffering?
-
5\$\begingroup\$ Can you link to a video that demonstrates the effect you're talking about? \$\endgroup\$– John CalsbeekApr 5, 2012 at 7:06
-
1\$\begingroup\$ youtube.com/watch?v=H-M6EPgs1JY&t=1m20s for example, each time the camera moves the screen goes nuts, it looks weird, the PS doesn't seem to have issues generating a straight line, so i don't think it's just pixelation \$\endgroup\$– dretaApr 5, 2012 at 7:59
-
1\$\begingroup\$ I can't see anything... perhaps I was so used to playing games back then that I don't notice the problems. But my first thought was that maybe you were seeing the affine texture tranformation mentioned in Mike's answer, which can make things seem to stretch weirdly based on the looking angle. \$\endgroup\$– KylotanApr 5, 2012 at 18:30
-
\$\begingroup\$ @Kylotan it's specially noticeable in slower camera movements (e.g. around min 16 in dreta's YouTube link, you should notice it in the floor and walls.) I guess that's why PS games had so fast cameras in almost every game :) \$\endgroup\$– kaoDApr 6, 2012 at 5:27
-
1\$\begingroup\$ I'm voting to close this question as off-topic because it is asking why a broad set of video games acted in the way they did. These questions are generically off-topic, at least now, as they rely on speculation of how the developers actually did what they do. We can often improve these questions with a revise to "how do I do this in my own game", but that does not seem to be the actual intention, here. \$\endgroup\$– GnemlockMay 29, 2017 at 0:04
2 Answers
I have only the most bizarre of citations for this, but it appears on the original PlayStation, the vector unit (which was usually used to transform vertices) was capable of fixed-point operations, and the rasterizer also used fixed-point math, but only integers could be passed between the two. So you're seeing quantization artifacts: polygon corners are getting snapped to the nearest grid point. Perfectly stable for a still scene, but fairly disconcerting in motion.
From a little bit of additional research, it appears that the original PlayStation had different resolutions at which the rasterizer could work, from 256x224 to 740x480. So you could pick lower resolutions to get better fill rate, but you'd see these sorts of artifacts, as the grid at low resolutions is coarse enough to easily detect with the naked eye.
-
\$\begingroup\$ IIRC on PC (to do with mesh animations) there were some problems (fairly recently actually, fixed around 2000-2005) with floating point calculations on the GPU - I can't remember what the exact issue was though but it resulted in very "disconcerting" character animations. I remember Star Wars The Phantom Menace exhibited this behaviour quite drastically. \$\endgroup\$ Apr 5, 2012 at 9:38
-
\$\begingroup\$ @JonathanDickinson You aren't thinking of the "candy wrapper" effect on joints, are you? isg.cs.tcd.ie/projects/DualQuaternions \$\endgroup\$ Apr 5, 2012 at 16:25
-
\$\begingroup\$ Nope, it was some inaccuracies arising for reasons I just can't remember. \$\endgroup\$ Apr 6, 2012 at 11:42
If you play Quake 2 in software mode, it actually does have some of the issues you mention. If you look at certian models at sharp angles in Quake 2, you'll see "swimming" textures. This is because many early 3D engines used affine texture mapping. This saves you the expensive per-pixel divide that gives you perspective correct texture mapping, but it means your textures will warp when viewed at sharp angles.
Also, many early 3D games (including Quake 2) used simple vertex morphing to animate their models as opposed to skeletal animation. The vertices are tweened between keyframes with linear interpolation. Naturally, this doesn't preserve the distances between vertices very well, so you end up with jelly vertex syndrome—the models jiggle a little bit as they animate!
-
3\$\begingroup\$ Correct, and the resolution of the meshes was only 256x256, so the movement of the vertices interpolated in non-straight lines. Kind of like trying to draw a smoothly animating sword swing in pixel art. \$\endgroup\$ Apr 5, 2012 at 20:54
-
1\$\begingroup\$ Yeah the MD2 format only had one 3 Bytes / vertex. \$\endgroup\$– TiliApr 6, 2012 at 7:47
-
1\$\begingroup\$ Quake 2 actually did do perspective-correct texture mapping, but only corrected every 16 (or 8 via a user option) pixels. \$\endgroup\$ Apr 5, 2013 at 23:10
-
1\$\begingroup\$ To make this to statements about Q2 correct: Quake 2 uses perspective correct txt mapping for level geometry(linear interpolating every 16th correct calculated pixel) and affine textmapping for movable objects \$\endgroup\$ Dec 2, 2015 at 13:17