AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

3D-Objekt

Ein Thema von derseitzer · begonnen am 27. Mär 2017 · letzter Beitrag vom 2. Apr 2017
Antwort Antwort
derseitzer

Registriert seit: 12. Okt 2016
235 Beiträge
 
Delphi 10 Seattle Professional
 
#1

3D-Objekt

  Alt 27. Mär 2017, 00:33
ich probiere mich gerade mit 3D-Objekten und habe ein Problem:

Ich möchte auswählen können, ob ich eine TSphere, einen TCylinder TCube usw. haben möchte. Ich möchte also auswählen können, welches Objekt ich möchte.
Gibt es eine 3D-Form, wo ich sozusagen auswählen kann, ob ich eine Tsphere möchte oder etwas anderes (also während das Programm läuft)?
Mit dem Tmodel3D kann man andere Dateien hinzufügen, aber ich möchte eigentlich nur die oben gewählten Formen haben.

Vielen Dank für eure Hilfe
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.538 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: 3D-Objekt

  Alt 27. Mär 2017, 23:41
Du kannst die gewünschten 3D-Formen entweder zur Designzeit erstellen und je nach Bedarf das benötigte 3D-Objekt zur Laufzeit sichtbar schalten. Hierfür kannst Du entweder eine "Geräteübergreifende Anwendung" als "3D-Anwendung" erstellen oder eine "Leere Anwendung"mit einem ViewPort3D-Object darin.

Zur einfacheren Handhabung würde ich das mit einem TDummy-Object verwenden (erleichtert die Positionierung im Raum) und darin die benötigten 3D-Controls erzeugen.

Das wäre die einfachste Variante.

Wenn Du zur Laufzeit mehr Flexibilität haben willst und eine unterschiedliche Anzahl von 3D-Objekten zur weiteren Verwendung erzeugen willst, könntest Du globalisierte Routinen schreiben, die je nach 3D-Objekt halt das Objekt entsprechend behandeln (Klick, Move, usw).

Hier mal ein (stark reduzierter) Auszug aus einem Demoprogramm von mir (in einer ListBox sind Namen von 3D-Formen gespeichert und je nach Auswahl wird zur Laufzeit ein 3DControl erzeugt (im eigentlichen Demo kann man noch Farbe, Texturen oder Licht hinzufügen):

Delphi-Quellcode:
procedure TF_Main.bnAdd3DControlClick(Sender: TObject);
var
  s: string;
  C3D: TControl3D;
begin
  if cb3DObjNames.ItemIndex <> -1 then begin
    s := cb3DObjNames.Items[cb3DObjNames.ItemIndex];

    if s = 'Spherethen begin
      C3D := TControl3D (TSphere.Create(Dummy1));
      TSphere (C3D).SubdivisionsAxes := 50;
      TSphere (C3D).SubdivisionsHeight := 50;
    end;

    if s = 'Cubethen begin
      C3D := TControl3D (TCube.Create(Dummy1));
    end;
   
    if s = 'Conethen begin
      C3D := TControl3D (TCone.Create(Dummy1));
      TCone (C3D).SubdivisionsAxes := 50;
      TCone (C3D).SubdivisionsHeight := 50;
    end;

    C3D.Name := C3D.ClassName + Dummy1.ChildrenCount.ToString;
    C3d.Parent := Dummy1;
    C3D.Width := 2;
    C3D.Height := 2;
    C3D.Depth := 2;

    C3d.Visible := True;
    C3D.Position.X := -2;

    // Set Eventhandlers to react on User-Actions
    C3D.OnMouseDown := Control3DMouseDown;
    C3D.OnMouseMove := Control3DMouseMove;
    C3D.OnMouseUp := Control3DMouseUp;

    // Add created 3D-Object to List, to select programaticaly at runtime or by user
    cbCreated3DObjects.Items.AddObject(c3D.name, C3D);

    C3d.BringToFront;

    Viewport3D1.Repaint;
  end;

end;
  Mit Zitat antworten Zitat
derseitzer

Registriert seit: 12. Okt 2016
235 Beiträge
 
Delphi 10 Seattle Professional
 
#3

AW: 3D-Objekt

  Alt 2. Apr 2017, 15:53
Entschuldigung für die späte Antwort... ich danke Ihnen vielmals!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:02 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz