3D game engine design : a practical approach to real-time computer graphics