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?