TGBEViewport3D - gbegreg/GBE3D GitHub Wiki

TGBEViewport3D

TGBEViewport3D

Ce composant descend du TViewport3D standard. Il apporte la possibilité de récupérer, à chaque instant, la scène 3D vue depuis une des caméras que vous auriez placées dans votre scène 3D.

Pour chaque caméra, un TBitmap sera associé vous permettant de l'afficher ensuite où vous le souhaitez. Évidemment, la scène 3D n'est calculée qu'une seule fois !

Cela permet donc d'afficher une scène 3D unique sous plusieurs angles de vue simultanément. Il est possible d'afficher ce contenu en dehors du TGBEViewport3D mais également sur un autre objet 3D en tant que texture.

Par rapport au TViwport3D standard, TGBEViewport3D apporte les propriétés et méthodes suivantes :

  • propriété BackgroundColor de type cardinal : permet de spécifier la couleur du fond des images bitmap qui seront produites.

  • propriété ActiveFPS de type boolean : permet d'activer ou non le calcul du nombre d'images par seconde (FPS).

  • propriété FPS de type integer : permet de connaître le nombre d'images par seconde.

  • procedure DoAddView(camera: TCamera); : permet d'ajouter une vue à partir de la caméra passée en paramètre. Cela signifie que le TGBEViewport3D va associer et générer pour cette caméra un TBitmap que vous pourrez récupérer pour l'afficher où vous souhaitez.

  • procedure DoRemoveView(camera: TCamera); : permet de supprimer une vue. Le TGBEViewport3D ne génèrera plus d'image TBitmap pour cette caméra.

  • DoClearListView : permet de supprimer toutes les vues.

  • function getBitmapFromView(camera: TCamera):TBitmap; : permet de retourner un TBitmap depuis la point de vue de la caméra (de type TCamera passée en paramètre.

Utilisation

  • Placez (ou créez dynamiquement) un TGBEViewport3D sur votre fiche.
  • Créez vote scène 3D comme vous le feriez normalement avec le TViewport3D.
  • Placez vos caméras également.
  • Ensuite, via le code, à l'initialisation de la scène 3D (par exemple sur l'événement OnCreatede la fiche), associez une "vue" avec les caméras que vous souhaitez avec la méthode DoAddView :
    GBEViewport3D1.DoAddView(camera1);
  • Il vous suffit ensuite de récupérer régulièrement l'image TBitmap associée et de l'afficher dans le contrôle souhaité. Pour récupérer "régulièrement" l'image, vous pouvez le faire par exemple à chaque rendu de la scène 3D ou via un TTimer ou encore un TFloatAnimation.
    Exemple avec un TFloatAnimation :

procedure TForm1.FloatAnimation1Process(Sender: TObject);
begin
image1.Bitmap := GBEViewport3D1.getBitmapFromView(camera1);
end;

Exemple de rendu

Démo Viewport3D

⚠️ **GitHub.com Fallback** ⚠️