Tutoriel : Comment utiliser les caméras dans une application FireMonkey 3D
Remonter à Tutoriels
Ce tutoriel montre comment utiliser les caméras dans une simple application FireMonkey 3D. Il explique comment utiliser les objets TCamera pour définir la perspective de scène et la projection des objets de la scène sur la fenêtre d'affichage. TViewport3D est une classe pour la visualisation des objets 3D. TViewport3D implémente les méthodes IViewport3D pour décrire comment un objet 3D est vu.
Sommaire |
Création d'une application FireMonkey 3D
Pour utiliser les objets TCamera et TViewport3D, vous devez créer une application FireMonkey 3D. Pour ce faire, suivez les étapes ci-après :
- Sélectionnez Fichier > Nouveau > Autre > Projets Delphi > Application FireMonkey 3D.
- Pour ouvrir le Concepteur de fiches FireMonkey, double-cliquez sur l'unité .pas dans le Gestionnaire de projets, puis cliquez sur l'onglet Conception sur le bord inférieur de l'éditeur de code.
Ajout et ajustement des composants
La fenêtre d'affichage :
- Dans la Palette d'outils, recherchez et ajoutez un objet TViewport3D.
- Depuis la Palette d'outils, ajoutez les composants FireMonkey 3D suivants (en entrant le nom du composant dans le champ Chercher et en appuyant sur la touche Entrée) : 3 objets TCamera, 2 objets TCube et 2 objets TLight.
- Les objets TCube sont les objets 3D qui seront vus dans la fenêtre d'affichage.
- Les objets TCamera seront utilisés pour définir la position à partir de laquelle les objets 3D sont vus.
- Les objets TLight affecteront la lumière des objets 3D, en fonction de la position de la caméra.
Le panneau de contrôle :
Pour être en mesure d'observer comment la perspective de scène et la projection changent, en fonction de la position des caméras et de l'angle de rotation, créez un panneau de contrôle qui permet de changer les propriétés des objets TCamera.
Dans la Palette d'outils, recherchez et ajoutez un objet TLayout et 3 objets TGroupBox, contenus par l'objet TLayout.
- Définissez la propriété text du premier objet TGroupBox sur Camera, et ajoutez 3 objets TRadioButton (Camera1, Camera2 et Camera3).
- Définissez la propriété text du second objet TGroupBox sur Position, et ajoutez 3 objets TTrackBar (coordonnées X, Y et Z).
- Définissez la propriété text du troisième objet TGroupBox sur RotationAngle, et ajoutez 3 objets TTrackBar (plans X, Y et Z).
- Pour voir les valeurs des objets TTrackBar, ajoutez un objet TLabel dans les zones de groupe Position et RotationAngle.
Après l'ajout des composants, votre onglet Conception doit ressembler à ceci :
Ecriture du code pour ajuster les caméras
Vous devez ensuite écrire le code pour assigner les propriétés des caméras aux valeurs des objets TTrackBar et TRadioButton.
{ The Delphi implementation for changing the coordinates of the camera position } procedure TForm23.RB_Use_Camera1Click(Sender: TObject); begin RB_Use_CameraChange(Camera1); end; procedure TForm23.RB_Use_Camera2Click(Sender: TObject); begin RB_Use_CameraChange(Camera2); end; procedure TForm23.RB_Use_Camera3Click(Sender: TObject); begin RB_Use_CameraChange(Camera3); end; procedure TForm23.RB_Use_CameraChange(Sender: TObject); begin with Viewport3D1 do begin FIsChangingCamera := True; try Camera := Sender as TCamera; TrackBar_PositionX.Value := Camera.Position.X; TrackBar_PositionY.Value := Camera.Position.Y; TrackBar_PositionZ.Value := Camera.Position.Z; Repaint; finally FIsChangingCamera := False; end; end; end;
{ The Delphi implementation for changing the coordinates of the camera position } procedure TForm23.TrackBar_PositionChange(Sender: TObject); begin with Viewport3D1 do begin if not FIsChangingCamera then begin Camera.Position.X := TrackBar_PositionX.Value; Camera.Position.Y := TrackBar_PositionY.Value; Camera.Position.Z := TrackBar_PositionZ.Value; Repaint; end; with Camera.Position do begin { Updating the displayed values of the coordinates } Label_Position.Text := Format('X: %d, Y: %d, Z: %d', [Round(X), Round(Y), Round(Z)]); end; end; end;
{ The Delphi implementation for changing the rotation angle of the camera } procedure TForm23.TrackBar_RotationAngleChange(Sender: TObject); begin with Viewport3D1 do begin if not FIsChangingCamera then begin Camera.RotationAngle.X := TrackBar_RotationAngleX.Value; Camera.RotationAngle.Y := TrackBar_RotationAngleY.Value; Camera.RotationAngle.Z := TrackBar_RotationAngleZ.Value; Repaint; end; with Camera.RotationAngle do begin { Updating the displayed values of the coordinates } Label_RotationAngle.Text := Format('X: %d, Y: %d, Z: %d', [Round(X), Round(Y), Round(Z)]); end; end; end;
Avant d'exécuter l'application, définissez la propriété Camera de l'objet TViewport3D sur Camera2. Cette action définit Camera2 en tant que perspective par défaut. Vous pouvez la changer après l'exécution du projet en changeant la caméra et ses propriétés à partir du panneau de contrôle créé.
Exécution de l'application
Exécutez le projet. La fenêtre principale du projet est affichée. Observez que la caméra à partir de laquelle les objets sont vus est Camera2. Changez la caméra, la position de la caméra ou son angle de rotation, et observez la nouvelle perspective à partir de laquelle les objets sont vus. Observez comment les objets TLight affectent la lumière de l'objet 3D, en fonction de la position de la caméra.

