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.
Castle Game Engine (Kugel mit Textur)
Re: Castle Game Engine (Kugel mit Textur)
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:
"
"
LG, Zwerg.

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
Grund: Highlighter