Creating Depth Using 3-D

Surface 1.0 SP1

True 3-D uses rendered three-dimensional geometries in real time. This technique enables you to create Microsoft Surface applications that incorporate realistic rotation of cubes, spheres, custom 3-D models, and so on. While you can author 3-D in XAML and deliver it by using WPF, that approach can affect the Surface hardware and performance. True 3-D is best created and delivered by using Microsoft XNA, the core Microsoft 3-D and gaming engine.

True 3-D offers many opportunities for interface innovation, but use caution when you design 3-D controls. 3-D controls for objects on a two-dimensional, touchable surface can confuse users. The details of a real 3-D object (such as lighting, rendering, and specular highlights) can add unnecessary complexity to most content or data. You should not use 3-D when you create controls, because users might have difficulty reading any text or labels on the 3-D surfaces. All this complexity can create an intensely spatial 3-D experience that distracts from its simplicity and uniqueness.

Reserve truly 3-D spaces for intensely immersive interactions and motion, not to call attention to realistically rendered visual design elements themselves. For example, a continuously zooming interface (maps or Microsoft Bing Maps are excellent examples) uses extreme amounts of 3-D space for users to interact and establish a sense of spatial memory and context, but the interface uses virtually no 3-D-rendered interface elements. Use depth as a virtual space through which to guide users instead of as a means to describe on-screen objects.

Using Depth Techniques



  • Use depth to show priority, order, or focus between objects.

  • Keep apparent depth somewhat shallow, not “deep” below the Surface screen.

  • Use depth within controls and content to delineate discrete touchable regions and help users anticipate what results their gestures might produce.


  • Carefully consider true 3-D and its use. Is it appropriate or vital? If so, innovate, but consider its programming complexities and runtime performance limitations.

  • Be aware of which depth techniques require large amounts of computational resources, and maintain a high level of responsiveness in application.

Community Additions