   Why two different models? GameDev Practices
  Ive noticed a trend in gamedev and cant really find an explanation.Take a game that is an FPS with a third person camera.Why does each view (first-person, third-person) require its own models, animations etc?Couldn't you just have one set of models and their animations and simply change the location of the camera from a first-person perspective to a third-person perspective? That way you could cut down asset creation in half and maintain realism of perspective.Example: an animation of the player opening a door being used in both the first person perspective and third person.I imagine that this probably has to do with game efficiency, but this logic contradicts itself when having to load two sets of assets.   
  The issue is rendering cost versus quality. When you see the weapon and the player's hands from a first person-perspective, they are very close to the camera, and need to be extremely detailed. By contrast, when another player stands next to your player, the weapon/hands are considerably smaller, and so a lower quality model does just fine, and is quicker to render.Generally, games have more than just these two levels-of-detail, and they used even lower quality models for players who are in the medium or far difference.Since these low resolution models can often be generated by an automated tool, by simplifying the high-quality model, the cost of having multiple models for each character is not particularly high.   ;Quote:Original post by swiftcoderSince these low resolution models can often be generated by an automated tool, by simplifying the high-quality model, the cost of having multiple models for each character is not particularly high.So is this a tool or plugin one would use with a 3D modeling package to create different versions of meshes that scripting would exchange depending on view or a tool that can be integrated into a game engine like a Library that could do this dynamically?If the latter, is there an open source solution that would help with this?   