
Silverlight 3 incorpore la gestion de plan 3D  (PlaneProjection) au sein de son plugin et ce nativement. Voici un petit exemple “coding4fun” d’implémentation de plan 3D. Le but de l’exercice est de créer un simili Cube 3D avec un nuage de point puis d’animer le cube en question.
Cube Silverlight en 3D :
View on Vimeo.
Côté code :
private int[] tabX = new int[] { 40, 120, 120, 40, 40, 120, 120, 40 };
private int[] tabY = new int[] { 40, 40, 120, 120, 40, 40, 120, 120 };
private int[] tabZ = new int[] { -40, -40, -40, -40, 40, 40, 40, 40 };
for(var i = 0 ; i < 8 ; i++)
{
PlaneProjection pj = new PlaneProjection();
pj.LocalOffsetX = tabX[i];
pj.LocalOffsetY = tabY[i];
pj.LocalOffsetZ = tabZ[i];
pj.CenterOfRotationX = 0;
pj.CenterOfRotationY = 0;
pj.CenterOfRotationZ = 0;
el.Projection = pj;
Ellipse el = new Ellipse();
el.Width = 10;
el.Height = 10;
el.Fill = new SolidColorBrush(Colors.Cyan);
cube.Children.Add(el);
}
private int[] tabY = new int[] { 40, 40, 120, 120, 40, 40, 120, 120 };
private int[] tabZ = new int[] { -40, -40, -40, -40, 40, 40, 40, 40 };
for(var i = 0 ; i < 8 ; i++)
{
PlaneProjection pj = new PlaneProjection();
pj.LocalOffsetX = tabX[i];
pj.LocalOffsetY = tabY[i];
pj.LocalOffsetZ = tabZ[i];
pj.CenterOfRotationX = 0;
pj.CenterOfRotationY = 0;
pj.CenterOfRotationZ = 0;
el.Projection = pj;
Ellipse el = new Ellipse();
el.Width = 10;
el.Height = 10;
el.Fill = new SolidColorBrush(Colors.Cyan);
cube.Children.Add(el);
}
L’idée est donc d’avoir une Matrice de point et de créer chaque point du cube 3D à la volée. Pour animer le cube il faudra animer chaque point. Cela est bien entendu du à la gestion de la “3D” dans Silverlight et des projections de plans.