ZFX
ZFX Neu
Home
Community
Neueste Posts
Chat
FAQ
IOTW
Tutorials
Bücher
zfxCON
ZFXCE
Mathlib
ASSIMP
NES
Wir über uns
Impressum
Regeln
Suchen
Mitgliederliste
Membername:
Passwort:
Besucher:
4370141
Jetzt (Chat):
12 (0)
Mitglieder:
5239
Themen:
24223
Nachrichten:
234554
Neuestes Mitglied:
-insane-
"The Forge" von (pro/skp^nce)


Hallo zusammen!

Ihr seht hier ein paar Screenshots aus The Forge, (TF) einem Projekt, an dem
wir seit Sommer 2002 in unserer Freizeit (neben Studium, Job, Privatleben ;)
arbeiten. TF ist ein Toolkit um prozedurale Geometrien zu erzeugen und zu
bearbeiten. In einer eigenen Scriptsprache werden dabei Geometrien, die aus
einzelnen Primitives, dynamischen Oberflächen sowie vordefinierten Modellen
bestehen, erzeugt, mit entsprechenden Werkzeugen bearbeitet und im Raum
verteilt. Durch einen objektorientierten Ansatz können sich so leicht
komplexe Modelle erstellen lassen.

Primitives:
* Cone
* Cylinder
* Sphere (wahlweise Geo, Polar)
* Tube
* Torus
* Cube

Dynamic Surfaces:
* Bezier Patches
* Hermite Patches


Complex:
* Support für 3D Studio Max ASC - Files
* Support für 3D Studio Max 3DS - Files
* Andere Modellformate können problemlos eingebunden werden (PlugIn - fähig)
-> Modelle werden in eigenes Format konvertiert (Verlustfrei und
Platzoptimiert, wahlweise auch mit variabler Verlustrate komprimiert)

Werkzeuge:
* Placement - Werkzeuge (Single, Array)
* Rotation
* Displacement Mapping von prozeduralen Displacement Maps
* Subdivision
* CSG
* Mesh Simplification

Compiler:
* Funktionsparser
* Kommentar - Support
* Fehler - Output


Die Texturierung (auf dem Bild noch nicht vorhanden) erfolgt mit Hilfe von
Koordinaten - Projektion, nativer Texturierung oder kann auch von Hand
erfolgen (bei komplexen Modellen)

Screenshots:
Auf dem Screenshot ist eine Halle in mehreren Perspektiven mit einer
eingeschalteten Lichtquelle zu sehen. (einmal im Wireframe - Modus). Die
Geometrien wirken hier sehr detailliert, jede einzelne Vertiefung wurde
modelliert.

Oben: Blick aus einem Gang in die Halle
Unten, 1: Wireframe - Mode, Blick Richtung Kuppel
Unten, 2: Blick von einer Erhöhung in Richtung Gang
Unten, 3: Blick von der Kuppeldecke aus in die Halle (man sieht auch einen
Brunnen)

Rechts: Die Integrierte Entwicklungsumgebung (Inklusive Workspace -
Verwaltung sowie Code - Assistent)

In der IDE wird das komplette Script für die Geometrien programmiert, bevor
es dann von einem Compiler in einen effizienteren Bytecode kompiliert wird.
Dieser wiederum kann von der Viewer - Library interpretiert und ausgeführt
werden, wobei die entsprechenden Geometrien dann zur Laufzeit berechnet
werden. Die abgebildete Testszene umfasst rund 50.000 Vertices und ist
komplett prozedural generiert. Der Bytecode (= statische Daten) ist dabei
4197 Byte groß (ungepackt!) Innerhalb von 17 Sekunden wurden diese
Geometrien berechnet (AMD 1800xp, 512 MB Ram). Wir arbeiten jedoch momentan
an einem effizienteren Speichermanagement, da Memory Swaps momentan am
meisten Zeit benötigen (95%!)

Alle Vektor - Daten sind hierbei unkomprimiert, das heisst es gibt keinen
Verlust an Genauigkeit. Mit eingeschaltetem Vertex - Quantifizierer kann man
bei höchster Optimierungsstufe einen Vektor auf 2 Byte packen (Große
Ungenauigkeit!), In der genauesten Stufe hat jeder Vektor, der zur
Konstruktion benötigt wird, 12 Byte.

Vorteil einer solchen Bibliothek: Minimierung von Filesizes. Dadurch spart
man Traffickosten bei Downloads, ausserdem kann ein File schneller
verbreitet werden. Hauptsächlich ist diese Software jedoch für die
Verwendung in 64kb Intros vorgesehen.

Die IDE wurde in Visual Basic geschrieben, Compiler, Viewer usw sind
komplett in VC++6 entwickelt. Momentan arbeiten wir noch an der
Entwicklungsumgebung sowie einigen Geometrie - Tools (insbesondere CSG und
Subdivision werden noch verbessert ;) Zudem wird der Memory - Manager noch
einmal neu geschrieben, momentan wird zu viel Zeit benötigt. Sobald wir
damit fertig sind werden wir eine erste SDK - Beta releasen (Libraries,
Doku, Samples, IDE). Wir hoffen hierbei auch auf eure Unterstützung! Bitte
lasst uns wissen was Ihr von unserem Projekt haltet. Ihr wollt mehr
erfahren, oder Ihr habt Ideen wie man Teile verbessern könnte? Nur her
damit. Wir freuen uns über alle Mails :)

Grüße,
Jan Althaus (tciny)
Thomas Obermaier (pro)

email:pro@dword.org

Temporäre Website mit mehr Screenshots: http://193.174.205.86/tobermai/






Von Löwe am 29.11.2003, 09:36:31 Uhr
Wow!

(sprachlos,weil worte fehlen, weil seeeeehr beindruckt)

Soll nochmal einer sagen, man braucht cool texturen für super geile grafik.

Echt super!!!


Löwe

Von Morphis am 29.11.2003, 10:15:40 Uhr
Da kann ich auch nur Wow sagen, sieht richtig genial aus. Wenn nun noch gute Texturen draufkommen, könnte die Geometrie in Konkurenz zu aktuellen Spiele treten! Repekt!

Von Richard Schubert am 29.11.2003, 10:43:58 Uhr

erinnert sehr stark an dieses stylische spiel von der XBox oder GC oder wo es das drauf gibt. gefällt mir sehr gut, denn da braucht man auch keine weiteren texturen.

Von pro/skp^nce am 29.11.2003, 11:00:32 Uhr
Hallo!

Erstmal Danke für eure tollen Kommentare :) Sowas gibt der Motivation nochmal einen gehörigen Schub. Es geht/ging bei diesem Projekt auch nicht um Texturen, und auch nicht um ein Spiel. Teturkoordinaten sind wie gesagt über Projektion möglich, ebenso wird bereits eine Standardtexturierung vorgeschlagen. Wir wollten einfach mal herausfinden, wie klein man detaillierte Geometrien bekommen kann. Man kann sicherlich noch einiges kleiner bekommen, und es sind auch schon ein paar Ansätze vorhanden, so stay tuned :) Mal sehen, evtl werd ich die Tage eine lauffähige Demo ins Netz stellen.

Bitte schaut euch auch noch die anderen Screenshots an. Irgendwann wird auch mal ne richtige Website folgen.

Von Fireface am 29.11.2003, 11:02:45 Uhr
Naja, übertreiben wir mal nicht, Texturen würden für was anspruchsvolleres dann schon drauf gehören...
Sonst ist dieses Projekt aber gigantisch... wiviele Leute seid ihr denn bei dem Teil?
Für welchen Zweck wurde der Editor eigentlich erstellt?

Von pro/skp^nce am 29.11.2003, 11:08:54 Uhr
Fireface:
Wir (Tciny und ich) sind zu zweit. Die größte Arbeit haben wir ende Juli 02 in guten 2 Wochen geschafft (mit rund 12 Stunden / Tag) und danach wieder mangels Zeit (Job + Studium) nur sporadisch diverse Teile verbessert. Momentan ist das Projekt aber wieder in einem guten Zustand, und wir erweitern auch die Scriptsprache, um noch flexibler zu sein. Der Generator selbst besteht etwa aus 10k Zeilen Code und vergrößert die Exe nur minimal.

Sinn und Zweck? Siehe meine vorigen Postings ;)

Von Oliver Düvel am 29.11.2003, 13:53:29 Uhr
Hi pro,

die Technik unter der Haube hört sich gewaltig an. Welche Einsatzbereiche seht ihr für den Editor? Wollt ihr damit eher content für Demos oder für Onlinespiele erstellen?

Von Praios am 29.11.2003, 15:23:18 Uhr
Die Datei ist wirklich beeindruckend klein.
Mich würde jetzt aber mal interessieren ob ihr irgendwelche Optimierungen für das rendern habt. Schließlich sind viele Leveldateien nur so groß, weil sie darauf ausgerichtet sind möglichst schnell geladen werden zu können ohne dauernd große Umrechnung anstellen zu müssen.

Von pro/skp^nce am 29.11.2003, 16:28:24 Uhr
Naja, das ganze Ding wird ja eh frei verfügbar sein. Wir wollten hauptsächlich damit was lernen, ausserdem wollen wir seit über nem Jahr damit ein Intro machen, aber irgendwie findet sich dafür nicht die Zeit... :/

Zur Technik: Als Output hat man ganz normal eine Menge von Triangles, die man dann nach Lust + Laune bearbeiten kann. Es gibt momentan im Viewer die Möglichkeit, Objekte, die öfters verwendet werden, in spezielle VBOs zu packen und diese dann zu rendern. Ausserdem ist die Geometrie eh statisch, von dem her... Bei Gelegenheit werde ich mal prüfen, inwiefern man das ganze mit anderen Polygonprimitiven beschleunigen kann. Ein weiterer Vorteil: Durch den prozeduralen Ansatz ist das Detail annähernd stufenlos einstellbar.

Achja, ich hab in der Aufzählung ein paar Sachen vergessen. Z.B. sind auch Tools wie Extrude, Scale und Duplicate möglich.


Von tciny am 29.11.2003, 18:21:05 Uhr
Übringens: Sobald pro mal meinen Ratschlag befolgt und die Variablen für Raumkoordinaten auf die hälfte reduziert (es sind dann trotzdem noch beliebig große "Levels" machbar, und die Genauigkeit leidet auch nicht) sind die Files nur noch ca. halb so groß. Also z.B. ca. 2kb ungepackt für die Halle. Aber nachdem wir das ganze eh nochmal überarbeiten lohts sich jetz nicht mehr den alten code umzuschreiben, ich wollts nur gesagt haben :)

Von Peter Müller am 29.11.2003, 20:35:52 Uhr
Das sieht echt genial aus!

Nur das so ein Levelfile nur 4KByte groß ist, kann ich nicht glauben. Kannst Du bitte mal einen online stellen?

Von ThunderEye am 29.11.2003, 22:53:53 Uhr
Hi,
jo sieht genial aus.
@ Peter: Kann schon sein, wenn es nur als normales Textfile gespeichert wird. ;)
Hab aber auch ne Frage:
Der erste Mini Screen mit der aufwendigen Geometrie, mit wieviel FPS läuft der?
mfg
ThunderEye

Von tciny am 30.11.2003, 14:30:51 Uhr
Peter: Was hilfts dir wenn ich dir die Geometriedaten hoch stell? Du kannst se eh nicht lesen... sorry, aber zumindest für den Moment wirst dus uns einfach glauben müssen.
Aber zur erläuterung: Wir speichern ja nicht die Geometrie ansich, sondern das Prinzip nachdem sie generiert wird.

ThunderEye: Du meinst ASCII formatierten Text? Das wäre sehr viel größer. Und auf meiner grausam langsamen GF4MX und P4M 1,8Ghz läufts mit so durchschnittlich 40-50fps...

Von ThunderEye am 30.11.2003, 15:44:58 Uhr
Hi,
hm also ich verstehe das jetzt so, dass man also so ein Generator-File schreibt, welches Anweisungscode an einen Compiler enthält, welcher Schlussendlich ein sehr viel großeres File mit Geometriedaten rendert und generiert, richtig? Oder das File wird halt nur im GraKa oder System Speicher gelagert, was aber im Speicher trotzdem größer wäre als 4 kb.
mfg
ThunderEye

PS: Jupp ASCII meinte ich. ;)

Von Mayhem am 30.11.2003, 19:00:53 Uhr
@ThunderEye:

Nein die Dateien werden beim compilieren kleiner. Es wird schliesslich ASCII-Text in Bytes codiert.
Beim anschliessenden Viewer-Schritt werden die Objekt-Beschreibungen dann trianguliert.
Es ist halt sparsamer bei einer Kugel nur Mittelpunkt und Radius zu speichern, als ein fertiges Mesh mit 200 Vertices.


zum Bild:

sieht geil aus. Wie speichert ihr vordefinierte Modelle ?

Von pro/skp^nce am 30.11.2003, 21:15:55 Uhr
Hallo!

Nochmals ein Danke für eure tollen Kommentare :)

Vordefinierte Modelle werden noch nicht optimiert gespeichert, momentan einfach "straight forward" mit allen notwendigen Daten abgelegt, optional noch quantifiziert. Um dies jedoch zu optimieren sind auch schon ein paar Gedanken vorhanden, mal sehen was die Zeit bringt.