Il existe des exemples de ces effets dont vous parlez dans de nombreux jeux. Tout d'abord, il y a la profondeur de champ , ce qui rend l'objet à distance flou, tout comme si l'appareil photo se concentre sur des choses proches de lui, comme dans cet exemple. Vous pouvez explorer plus d'exemples liés à cela dans le package DirectX SDK - ils ont également un exemple de code. Pour OpenGL, vous les obtiendrez sur le net si vous effectuez une recherche.
La deuxième chose que vous voudrez peut-être voir est ce qui est peut-être appelé Geometry MipMaping ou Progressive Meshes qui, comme son nom l'indique, est similaire au mip-mapping de texture, mais pour la géométrie. Le nombre de polygones dans un maillage est réduit à mesure que l'objet s'éloigne de la caméra. Cela aide à augmenter les performances. Dans D3D, il existe une fonction qui aidera à générer automatiquement des maillages progressifs. C'est ici:
HRESULT WINAPI D3DXGeneratePMesh(
LPD3DXMESH pMesh,
const DWORD *pAdjacency,
const D3DXATTRIBUTEWEIGHTS *pVertexAttributeWeights,
const FLOAT *pVertexWeights,
DWORD MinValue,
DWORD Options,
LPD3DXPMESH *ppPMesh
);
En voici un exemple:
EDIT:
Considérez l'image suivante-
Ceci est le tronc de cue de l'appareil photo. La ligne qui traverse le milieu est le vecteur LookAt. Maintenant, en supposant que le joueur voudra toujours se concentrer au centre de l'écran, vous définissez l'angle x. Tout objet qui sera positionné à un angle supérieur au x décidé aura un rendu de faible résolution, et ceux qui sont dans l'angle seront rendus avec détail. Ainsi, les objets au centre de l'écran seront plus détaillés que ceux des côtés. Car si le joueur ne regarde pas le centre, ajustez simplement cette ligne centrale dans la direction dans laquelle le joueur regarde. (ou peut-être faire pivoter toute la caméra dans cette direction).