Der Umgang mit großen Szenen ~ III ~

Konsequenzen aus den Untersuchungen des Speicherverhaltens

Große Szenen und schnelle Systeme

Gesetzt dem Fall, der Benutzer stellt an Bryce die Erwartung, ein doppelt so schnelles System mit einem doppelt dimensionierten Speicher könne nun auch eine doppelt so großzügige Szene händeln, so ist dies leider nur die halbe Wahrheit. Es ist zwar möglich eine solche Szene im Speicher zu rendern, allerdings ist die komplette Szene immer schwieriger abzuspeichern.

Tafel Nr. 7

Diskrepanz zwischen Konstruktions- und Speichermöglichkeiten

Die Diskrepanz zwischen Systemspeicher, CPU-Leistung und der tatsächlichen Größe der Bryceszene wird immer größer. Das quadratische Verhalten das Zeitanspruchs sowohl teilweise auf der Oberfläche, als auch beim Sichern der Szene führt zu dem folgendem Ungleichgewicht, welches auf der nebenstehenden Grafik dargestellt wird:

(Auch diese Wete beziehen sich – wie gesagt – NUR auf den Speichervorgang als solchen!)

Man kann schnell ablesen, dass das Abspeichern einer etwa 2mal so großen Szene, die Ressourcen eines etwa 4mal so schnellen Systems benötigt – was bei der quadratischen Entwicklung der Funktion auch kaum verwundert! Wohingegen es durchaus kein Problem ist, eine solch große Szene im Speicher zu halten, zu bearbeiten und zu rendern.

Lösung: Splitten der Szene

Teilt man die Großszene in viele Tochterszenen auf, so läßt sich des Speicherproblem nämlich geschickt umgehen. Gesplittete Szenen benötigen nämlich rein rechnerisch erheblich weniger Speicherzeit, als Szenen, welche als Ganzes abgespeichert wurden. Zur technischen Umsetzung der Lösung , bietet Bryce eine – dem ersten Anschein nach eher nebensächliche – Funktion an, die sich aber bei großen Szenen als ein mächtiges und sehr hilfreiches Werkzeug entpuppt! Beim Laden derselben, ist es mit der Funktion “Zusammenfügen” im Menue >Datei< problemlos möglich, die Szenenfragmente zu einer Gesamtszene zu konsolidieren. Dabei bleiben Himmel und Umweltattribute der ersten geladenen Szene vollständig erhalten und es werden jeweils nur die Objekte der hinzugefügten Teilszene importiert. Daher sollte eine gesplittete Szene folgendermaßen geteilt werden:

  1. Eine Mutterszene mit allen Umweltfaktoren, Animationseinstellunen usw.
  2. Tochterszene Nr. 1, (nur Objekte)
  3. Tochterszene Nr. 2, (nur Objekte)
  4. Tochterszene Nr. 3, (nur Objekte)
  5. …….
  6. Letzte Tochterszene Nr. N, (nur Objekte)

Welche enormen Vorteile sich bei großen Szenen durch das Splitting ergeben, soll folgende Benchmarktabelle für ein Projekt mit insgesamt 4000 Objekten verdeutlichen:

Tafel Nr. 8
Prozessbeschreibung:
Dauer des Einzelprozess
Gesamtzeit
1. Speichern der Szenen:
Speichern von 4000 parametrischen Objeken in einer Gesamtszene
1096 Sek.
1096 Sek.
Speichern von zwei Szenen mit je 2000 parametrischen Objekten (in zwei Hälten gesplittet)
2 mal je 276 Sek.
552 Sek.
Speichern von vier Szenen mit je 1000 parametrischen Objekten (in vier Viertel gesplittet)
4 mal je 62 Sek.
248 Sek.
Speichern von acht Szenen mit je 500 parametrischen Objekten (in acht Achtel gesplittet)
8 mal je 17 Sek.
136 Sek.
2. Laden/ Zusammenfügen der Szenen:
Laden von 4000 parametrischen Objeken in einer Gesamtszene
55 Sek.
55 Sek.
Zusammenfügen von zwei Szenen mit je 2000 parametrischen Objekten
2 mal je 26 Sek.
52 Sek.
Zusammenfügen von vier Szenen mit je 1000 parametrischen Objekten
4 mal je 13 Sek.
52 Sek.
Zusammenfügen von acht Szenen mit je 500 parametrischen Objekten
8 mal je 7 Sek.
56 Sek.

Da Bryce nun eimal bei Szenen oberhalb von 150 MB nicht immer das zuverlässigste Programm ist, sollte häufiges Zwischenspeichern der Berabeitungen zum festen Konstruktionsprozess gehören. Im Beispiel bedeutet das jeweils 1096 Sekunden (ca. 18 Minuten) Zeitverlust für jedes Zwischenspeichern. Hat man aber die Szene in 4 Teile gesplittet, so benötigt der “akuelle”, bearbeitete Teil nur etwas mehr als 1 Minute, was sicher erträglicher ist! Auch das Zusammenfügen der Szene dauert am Ende nur eine knappe Minute.
Ein schöner Nebeneffekt des Splittings ist nicht nur die stabilere Programmausführung, sondern auch die Tatsache, daß die Bearbeitung der Szene natürlich wesentlich schneller vonstatten geht.

Szenensplitting: Tipps und Vorgehensweisen

Wie schon beschrieben, können Terrains oft größere relative Informationsmengen aufnehmen können, als reine parametrische Objekte! Aus deiser Erkenntnis leite ich das folgende Tutorial ab:

Reduktion der parametrischen Objekte durch Terrains