Castle Game Engine (Kugel mit Textur)

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
zwerg
Beiträge: 5
Registriert: Mi 14. Sep 2016, 12:53

Castle Game Engine (Kugel mit Textur)

Beitrag von zwerg »

Hallo zusammen,

ich habe eine Frage zur Darstellung von SPrites/Animationen durch die Castle Game Engine (CGE).

Habe das CGE package bereits erfolgreich in Lazarus eingerichtet.

Nun läuft die Darstellung in 3d anscheinend hauptsächlich über den scene manager mit x3d Formaten.


Ich möchte im Prinzip wissen, wie ich z.B eine sich bewegende rotierende Kugel darstelle, die mit einer Textur überzogen sein soll.

Allerdings OHNE vorherige Erstellung der Kugel-Animation als x3d.


Wie sähe der code in Lazarus(CGE) für diese Animation aus ? (Kugelobjekt erstellen, Textur binden, KugelobjektMethoden für Translation / Rotation /scaling ?)


Gruss zwerg.

zwerg
Beiträge: 5
Registriert: Mi 14. Sep 2016, 12:53

Re: Castle Game Engine (Kugel mit Textur)

Beitrag von zwerg »

Wen es noch interessiert :) :

Hier wäre ein kleiner Beispielcode für das Darstellen einer Kugel mit Textur inkl. Translation/Rotation und Kamera setzten in CGE:
"

Code: Alles auswählen

uses SysUtils, CastleVectors, X3DNodes, CastleWindow, CastleSceneCore, CastleScene;
 
 function BuildX3DGraph: TX3DRootNode;
 var
   Sphere: TSphereNode;
   SphereShape: TShapeNode;
   Transform: TTransformNode;
   Texture: TImageTextureNode;
 begin
   Texture := TImageTextureNode.Create;
   Texture.FdUrl.Items.Add('d:\source\blau2.png'){beliebiges .png als Texturquelle}
 
   Sphere := TSphereNode.Create;
   Sphere.FDRadius.Value := 1.5;
   Sphere.Radius := 1.5;
 
 
   SphereShape := TShapeNode.Create;
   // Assign a material, to make the object lit
   SphereShape.Material := TMaterialNode.Create;
   SphereShape.Texture := Texture;
   SphereShape.FDGeometry.Value := Sphere;
 
   Transform := TTransformNode.Create;
   Transform.Translation := Vector3Single(2, 0, 0);
   Transform.Rotation := Vector4Single(2, 1, 4 , 1 );
   Transform.FdChildren.Add(SphereShape);
 
   Result := TX3DRootNode.Create;
   Result.FdChildren.Add(Transform);
 end;
 
 
 // Hauptprogramm  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 
 
 var
   Window: TCastleWindow;
   Scene: TCastleScene;
 begin
   Scene := TCastleScene.Create(Application { Owner that will free the Scene });
   Scene.Load(BuildX3DGraph, true);
   Scene.Spatial := [ssRendering, ssDynamicCollisions];
   Scene.ProcessEvents := true;
 
  Window := TCastleWindow.Create(Application);
   Window.SceneManager.Items.Add(Scene);
   Window.SceneManager.MainScene := Scene;
   Window.Open;
 
 Window.SceneManager.Camera := Window.SceneManager.CreateDefaultCamera(Window.SceneManager);
Window.SceneManager.Camera.SetView(
  Vector3Single(0, 0, 10), // position
  Vector3Single(0, 0, -1), // direction (equal to default)
  Vector3Single(0, 1, 0) // up (equal to default) );
 
   Application.Run;
 end.       

"

LG, Zwerg.
Zuletzt geändert von Lori am Mo 26. Sep 2016, 17:14, insgesamt 1-mal geändert.
Grund: Highlighter

Antworten