Glscene : créer deux objets de type sphère en 3d, insérer une texture sur un objet et jouer avec la caméra

Description

GLScene créé par Mile Lischke, est une bibliothèque 3D pour Delphi (à partir de la version 4) basée sur OpenGL.
GLScene regroupe un ensemble de composants permettant rapidement de concevoir des objets et des scènes en trois dimensions.

Le programme consiste à montrer les points suivants :
- Création d'objets 3D
- Mettre une texture sur un objet
- Jouer avec la caméra

Source / Exemple :


unit Unit1;

//Programmé par Yoann
//http://delphipage.free.fr/

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  GLScene, GLObjects, GLMisc, GLWin32Viewer, Math, Jpeg;

type
  TForm1 = class(TForm)
    GLSceneViewer1: TGLSceneViewer;
    GLScene1: TGLScene;
    GLCamera1: TGLCamera;
    DummyCube1: TDummyCube;
    Sphere1: TSphere;
    GLLightSource1: TGLLightSource;
    Sphere2: TSphere;
    procedure FormMouseWheel(Sender: TObject; Shift: TShiftState;
      WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
    procedure GLSceneViewer1MouseDown(Sender: TObject;
      Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
    procedure GLSceneViewer1MouseMove(Sender: TObject; Shift: TShiftState;
      X, Y: Integer);
  private
    { Déclarations privées }
    CoordX,CoordY:Integer;
  public
    { Déclarations publiques }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormMouseWheel(Sender: TObject; Shift: TShiftState;
  WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
begin
GLCamera1.AdjustDistanceToTarget(Power(1.1,WheelDelta/120)); //Modifie la distance de la vue
end;

procedure TForm1.GLSceneViewer1MouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
//Stocke les coordonnées de la souris
CoordX:=X;
CoordY:=Y;
end;

procedure TForm1.GLSceneViewer1MouseMove(Sender: TObject;
  Shift: TShiftState; X, Y: Integer);
var dx,dy:Integer;
begin
//Calcule la distance entre le point lors du dernier clic et la position de la souris après avoir bouger
dx:=CoordX-X;
dy:=CoordY-Y;
CoordX:=X;
CoordY:=Y;
if ssLeft in Shift then //Si l'utilisateur utilise le bouton gauche de la souris alors...
GLCamera1.MoveAroundTarget(dy,dx); //Change l'orientation de la caméra
if ssRight in Shift then //Si il utilise le bouton droit alors...
GLCamera1.RotateObject(Sphere1,dy,dx); //L'objet "Sphere1" subit une rotation
end;

end.

Conclusion :


Plus d'information sur : http://delphipage.free.fr/

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.