Einzelnen Beitrag anzeigen

LexLing

Registriert seit: 3. Mär 2014
15 Beiträge
 
Delphi XE5 Professional
 
#5

AW: Firemonkey Image3D Rendering Reihenfolge

  Alt 4. Mär 2014, 10:44
Danke erstmal für die Antworten.

@mkinzler:
Ja, die z-Werte sind unterschiedlich.

@Sir Rufo:
Die Zeile war nur noch aus Versehen drin.
Aber auch ohne sie geht es leider nicht.

@Der schöne Günther:
Wenn das so wäre wie du sagst, dann müsste der Effekt doch bei allen Bäumen auftreten.
Aber bei vielen geht es (richtig).

Ich habe mal die Reihenfolge wie ich die Objekte erzeuge geändert.
Das ändert auch die Fehler, aber leider werden die Objekte zwar in einer anderen Reihenfolge gezeichnet - aber nicht so, wie ich sie erzeuge.

Irgendwie macht diese sort-Funktion gar nichts. Ich habe sie mal in:
Delphi-Quellcode:
  vp.Sort(
  function (i1, i2: TFmxObject): Integer
  var
    o1,o2: TControl3D;
    x1, x2: Double;
  begin
    o1 := nil; o2 := nil;
    if TfmxObject(i1) is TControl3D then o1 := TControl3D(i1);
    if TfmxObject(i2) is TControl3D then o2 := TControl3D(i2);
    if (o1 <> nil) and (o2 <> nil) then
    begin
      if o1.Position.Z < o2.Position.Z then
        Result := -1
      else if o1.Position.Z > o2.Position.Z then
        Result := 1
      else
        Result := 0;
    end else
      Result := 0;
  end

  );
geändert, aber nichts tut sich.

Muss ich denn eigentlich immer die Funktion update des TViewPort3D aufrufen, wenn ich die Kamera-Position ändere?
Oder mache ich da was falsch?
Die sort-Funktion rufe ich einmal nach dem Erzeugen aller Objekte und dann immer vor einem update auf.
Muss ich das vielleicht anders machen?
  Mit Zitat antworten Zitat