Gerendert aber nicht eingezeichnet

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

MisterMaboo

Betreff: Gerendert aber nicht eingezeichnet

BeitragFr, Jul 22, 2011 17:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Wo ist da der Sinn? Warum gibt es die Möglichkeit, die CameraRange umzustellen, wenn alles außerhalb der Besagten letztendlich doch gerendert, nur nicht eingezeichnet wird?

Und: Daraus folgt dann wohl, dass es am besten ist, viele einzelne Objekte (Statt einem großen Meshterrain) zu verwenden, um z.B. eine Stadtmauer, Bäume, o.Ä. zu realisieren, und die dann mit EntityAutoFade zu versehen, damit sie nicht gerendert werden. Liege ich da richtig?
Man is the information he carries

Xeres

Moderator

BeitragFr, Jul 22, 2011 17:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Viele einzelne Objekte ergeben viele Surfaces und damit lange Berechnungen der Grafikkarte.
Was meinst du mit Rendern? Die Grafikkarte muss alle Objekte verwalten um sie in der richtigen Reihenfolge zu zeichnen.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

MisterMaboo

BeitragFr, Jul 22, 2011 17:22
Antworten mit Zitat
Benutzer-Profile anzeigen
ich habe ein meshterrain auf dem häuser usw. bereits in blender platziert sind. im laufenden programm wird dabei immer das komplette terrain gerendert, egal wie weit etwas von mir entfernt ist, es wird gerendert (das sagt jedenfalls TrisRendered). wenn ich jetzt alle häuser als einzelne objekte laden würde, dann würde wie ich zwar wie du sagst mehr surfaces haben, aber dafür werden sie nur gerendert, wenn ich in ihrer nähe bin (entityautofade wäre da mein mittel der wahl).

die frage ist einfach, was ist besser? ich benutze absichtlich dieses wort, weil ich alle vor- und nachteile wissen möchte. das klingt zwar irgendwie fordernd, aber ich weiß nicht wie ich es sonst ausdrücken soll.

viele verschiedene objekte und entityautofade -> weniger TrisRendered

ein meshterrain mit allen häusern, evtl auch bäumen, usw. -> weniger surfaces
Man is the information he carries
 

Fredko

BeitragFr, Jul 22, 2011 17:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Um an Xeres direkt anzuschließen: Meshterrains aufteilen kann ganz klug sein, aber Baum-, Strauch- oder z.B.
Felsgruppen kann man in einem Mesh lassen, da eben durch weniger Surfaces weniger Leistung gebraucht wird.

Am besten versteckst du Entitys die weit weg sind mit HideEntity - die werden dann gar nicht mehr gerendet
und auch nicht auf Kollision getestet. Für den Falle sollte man zwar so oder so Kollisionsmeshes haben,
aber die sollte man auch irgendwann wegfallen lassen, und natürlich dafür sorgen,
dass dort nichts mehr kollidieren kann (weil sich da z.B. einfach nichts mehr bewegt).

Für Entitys, die nicht gerendert werden sollen, aber immer noch kollidieren können sollen kann EntityAlpha 0.0 nützlich sein.
Die Entitys reagieren dann noch normal auf Kollision bzw. kollidieren noch normal, werden allerdings nicht
gezeichnet.
Nichtsdestotrotz ist HideEntity besser dafür geeignet, ein Entity "komplett" verschwinden zu lassen.

EntityAutoFade hat das Problem, dass es einfach nur ein Ersatz für EntityAlpha ist. D.h.: Z-Buffer
Probleme kann es nach wie vor geben. Alternativ kann man die Objekte einfach nur im Nebel verschwinden
lassen, was zudem noch besser aussehen kann.

Im Endeffekt kann es also nicht schaden, große Bereiche in Cluster einzuteilen, und diese komplett mit
HideEntity wegzublenden. Nähere Cluster, die entweder im Nebel abtauchen oder in unmittelbarer Nähe
zur Kamera sind bleiben normal sichtbar.
Für nicht sichtbare Bereiche, wo aber noch Kollisionen stattfinden
sollen bzw. generell Kollisionen eignen sich Kollisionsmeshes, die einfach primitive untexturierte Objekte sind,
die mit Hilfe von EntityAlpha 0.0 gar nicht gerendert werden, aber dafür noch von UpdateWorld benutzt werden.

---Edit---
Bin ich heute mal wieder langsam ;O

In dem Fall kannst du entweder alle Häuser einzelnd machen ODER Gruppen daraus machen,
die wie die oben beschriebenen Cluster entweder komplett ein oder ausgeblendet werden.

Für einen schicken Übergang einfach Nebel und SkyBox/Sphere verwenden.
!

Noobody

BeitragSa, Jul 23, 2011 0:47
Antworten mit Zitat
Benutzer-Profile anzeigen
TrisRendered reflektiert nur, wieviele Dreiecke der Grafikkarte übergeben werden. Effektiv werden aber nach der Koordinatentransformation alle Dreiecke verworfen, die ausserhalb der Kamerareichweite sind - sie werden also nie gezeichnet.

Trotzdem aber ist es klug, ein grosses Mesh in kleinere Einheiten aufzuteilen, da besagte Koordinatentransformation auch Zeit kostet und man sie daher einsparen kann, wenn man Meshes mit HideEntity oder EntityAutoFade gar nicht erst rendert. Andererseits aber bedeuten viele einzelne Meshes auch viele Surfaces, was auch langsam ist.

Die "beste" Methode ist also, irgendwo das Mittelmass finden - wo genau das liegt, lässt sich aber nur durch experimentieren herausfinden.
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun

MisterMaboo

BeitragSa, Jul 23, 2011 1:43
Antworten mit Zitat
Benutzer-Profile anzeigen
danke für die antworten. das wird mir weiterhelfen! Smile
Man is the information he carries

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group