Lorsque l'on veut faire de la 3D avec WPF il n'est pas forcément nécessaire de positionner des lumières pour voir les objets 3D. En effet, seule la caméra est nécessaire.

Un objet 3D peut être auto-éclairé en utilisant des matériaux émissifs. Toutefois et contrairement à ce que l'on rencontre par ailleurs, il est obligatoire de positionner un matériau de diffuse même si aucune lumière n'est présente (en effet, le matériau de diffuse donne la couleur de l'objet par rapport aux lumières).

Un viewport3D minimal sans lumière donne donc:

<Viewport3D ClipToBounds="True">
      <Viewport3D.Camera>
        <PerspectiveCamera Position="0,0,2" LookDirection="0,0,-1" FieldOfView="60" FarPlaneDistance="100" NearPlaneDistance="0" />
      </Viewport3D.Camera>
      <Viewport3D.Children>
        <ModelVisual3D>
          <ModelVisual3D.Content>
            <GeometryModel3D>
              <GeometryModel3D.Geometry>
                <MeshGeometry3D
                TriangleIndices="0,1,2 3,4,5 "
                Normals="0,0,1 0,0,1 0,0,1 0,0,1 0,0,1 0,0,1 "
                TextureCoordinates="0,0 1,0 1,1 1,1 0,1 0,0 "
                Positions="-0.5,-0.5,0.5 0.5,-0.5,0.5 0.5,0.5,0.5 0.5,0.5,0.5 -0.5,0.5,0.5 -0.5,-0.5,0.5 " />
              </GeometryModel3D.Geometry>
              <GeometryModel3D.Material>
                <MaterialGroup>
                  <DiffuseMaterial Brush="Black">
                  </DiffuseMaterial>
                  <EmissiveMaterial Brush="Red">
                  </EmissiveMaterial>
                </MaterialGroup>
              </GeometryModel3D.Material>
            </GeometryModel3D>
          </ModelVisual3D.Content>
        </ModelVisual3D>
      </Viewport3D.Children>
    </Viewport3D>

 

On se retrouve donc avec l'obligation de mettre un MaterialGroup afin d'ajouter notre matériau émissif couplé à un matériau de diffuse noir.