Rotaciones en 3D con RAD Studio

En este post veremos cómo crear y rotar una figura en 3D,  utilizando RAD Studio v 10.1 Berlín.

Empezamos desde File – New – Multi-Device Application y seleccionamos “3D Application




A continuación vamos añadiendo los componentes básicos:

-          tViewPort3D : será el lienzo donde se mostrará la animación en 3D.
-          tColorMaterialSource, en la propiedad “Color” selecciono “Snow”.
  tLightMaterialSource, dejamos marcadas las propiedades como se indica en la imagen: 


Ahora tenemos que indicar la orientación de la luz y la orientación del observador de la escena.

Añadimos 2 componentes más:
tLight
tCamera




Estos dos últimos componentes tienen unos botones de control que permiten moverlos en los 3 ejes del espacio.


Y otro botón más que permite cambiar el tamaño de cada una de las caras del objeto.


Por último sólo nos queda añadir los bloques de la figura que queremos crear.

En nuestro caso utilizaremos los siguientes:

tRoundcube (el bloque principal), tPlane (será la pantalla) y dos tDisk correspondientes a las cámaras

Utilizando los controles de orientación tendremos que mover cada bloque hasta conseguir lo siguiente:


Ahora sólo nos queda conseguir el movimiento de la figura
Lo haremos utilizando un tTimer y variaremos el ángulo de rotación.

PROCEDURE TForm1.Timer1Timer(Sender: TObject);
BEGIN
  WITH RoundCube1.RotationAngle DO
    Point := Point + Point3D(2, 0, 0);
END;

Activamos el Timer y  ¡¡ ya lo tenemos !!




UNIT Unit1;

INTERFACE

USES
  System.SysUtils, System.Types, System.UITypes, System.Classes,
  System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
  System.Math.Vectors, FMX.Types3D, System.Sensors, System.Sensors.Components,
  FMX.Controls.Presentation, FMX.StdCtrls, FMX.Layouts, FMX.MaterialSources,
  FMX.Objects3D, FMX.Controls3D, FMX.Viewport3D;

TYPE
  TForm1 = CLASS(TForm)
    Viewport3D1: TViewport3D;
    Dummy1: TDummy;
    Camera1: TCamera;
    Light1: TLight;
    RoundCube1: TRoundCube;
    Plane1: TPlane;
    Disk1: TDisk;
    LightMaterialSource1: TLightMaterialSource;
    ColorMaterialSource1: TColorMaterialSource;
    Disk2: TDisk;
    Timer1: TTimer;
    PROCEDURE Timer1Timer(Sender: TObject);
  PRIVATE
    { Private declarations }
  PUBLIC
    { Public declarations }
  END;

VAR
  Form1: TForm1;

IMPLEMENTATION

{$R *.fmx}


PROCEDURE TForm1.Timer1Timer(Sender: TObject);
BEGIN

  WITH RoundCube1.RotationAngle DO
    Point := Point + Point3D(2, 0, 0);

END;

END.

¡¡ Delphi starter gratis !!

Free Starter Edition

Hace tiempo Embarcadero ofreció Delphi por tiempo limitado, ahora ha decidido ampliar en el tiempo esta oferta, desconozco hasta que fecha ofrecerá la edición Starter gratis, pero si te interesa este entorno de programación y quieres empezar a dar tus primeros pasos aquí, no lo dudes, aprovecha ahora esta oferta.
En la edición Starter no contempla los módulos de bases de datos y tiene una licencia gratuita y open source hasta que tengas unos beneficios de 1000$, ya que desde esa cantidad podrías actualizarte a la versión Profesional o Enterprise.
En un futuro es posible que se añadan más características, pero esta versión Starter nunca llegará a tener todos los módulos de la Profesional o Enterprise.