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:
4394830
Jetzt (Chat):
19 (0)
Mitglieder:
5239
Themen:
24223
Nachrichten:
234554
Neuestes Mitglied:
-insane-
"Nyu" von Matthias Markowski (Tales)


Hi ZFXler,

Ich wollt mich auch mal hier verewigen mit meinem Projekt "Nyu". Die Engine arbeitet mit OpenGL und es (können) CG Shader benutzt werden. Ein Texturmanager kümmerte sich darum das kein Speicher unnötig belagert wird, mehrere Fileformate konnten geladen werden. Das ganze war dazu gedacht zu lernen wie eine Engine aufgebaut sein muss, das lernen dabei ist mir glaube ich ganz gut gelungen :). Ich hab daran seit ca. Dezember - März gearbeitet..


Oben Links:

Ihr seht dort Dusk, bekannt als Nvidia's "Vorzeige Fee". Beleuchtet wird das Mesh mit einem Softwarelightning, das für diesen Zweck erstmal gereicht hat. Das Modell besteht aus 384086 Vertices und 161648 Triangles, die nach Möglichkeit in Triangle Strips (~77,1%) gehalten werden, einige Triangle Lists sind aber auch dabei. Bemerkenswert ist dabei, das 54764 Triangles (~33,8%) alleine für die Wimpern draufgehen, was die sich dabei wohl gedacht haben :) Das Fileformat ist in Geometriechunks aufgeteilt. Die Bewegung wurde mit einem Bonemodell realisiert und für das Gesicht gibt es noch seperate Morphinginformationen. Die restliche Szene befindet sich ebenfalls in der Dusk.nmb. Ich bin da leider daran gescheitert, die Skelett Informationen auf das Modell zu übertragen, da die Vertices alle WorldSpace sind (und ObjectSpace sein sollten, für eine Boneanimation) Eventuell werde ich noch einen Importer bauen für mein Neues Projekt, und von da aus eine Neue Animation anlegen. Das ist aber noch offen.

http://matthias.markowski-web.de/dusk.zip


Unten Links:

Ihr seht da meine Cloth Simulation mit einem Tuch von 32x32 Vertices, Die gegen eine Kugel kollidieren. Die Simulation lief in Echtzeit, ich habe dann jedes Frame gespeichert und 3 Videos daraus gebastelt. Das Modell basiert auf den Strukturellen Kräften, um eine akzeptable Performance zu erreichen, allerdings war noch Raum für Optimierung. Beleuchtet ist das Tuch mit Shadern, um möglichst wenig Rechenzeit wegzunehmen. Schwierig wurde allerdings die Kollisionsprüfung gegen Polygone in Echzeit, da diese viel Performance wegnimmt und mein Algoritmus ungenau war. Ich muss zugeben dass das System manchmal instabil wurde und die Vertices einfach "kolabiert" sind..

http://matthias.markowski-web.de/seq1.zip // kollision mit einer Kugel
http://matthias.markowski-web.de/seq2.zip // kollision mit einer Kugel + Runterrutschen
http://matthias.markowski-web.de/seq3.zip // kollision mit einer Triangle


Oben Rechts:

Das ist ein Poser Modell das ich mal durch die Engine laufen lassen habe, mit Texturen von 2048x2048.. bei mehr streikt OpenGL leider schon :).. Importiert wurde es per Wavefront Format, wobei Poser da echt Müll produziert :|.. Beleuchtet werden die Polygone per Shader (Specular + Diffuse), der die Performance auf einem guten Niveu hält (ca 25fps - 30fps bei einer ATI Radeon 9600 und einem Athlon 2GHz), dabei ist die Polygonanzahl schon das Maximum an Belastung die man bei einem Spiel erwarten kann.. das Modell hat ~150.000 Polygone. Darüber habe ich dann noch einenen Blur gelegt, den ihr euch in einem der unteren Links angucken könnt. Die ersten Ladeversuche haben über 6 minuten gedauert, weil ich alle Polygone in einer verketten Liste und Später dann in einem Baum Lud und mit dem Speicher verschwenderisch umgegangen bin, aber mittlerweile kann ich das modell im neuen Framework innerhalb von Sekunden laden.

http://matthias.markowski-web.de/blur.PNG // nicht Jugendfrei(!)
http://matthias.markowski-web.de/viewports.jpg // nicht Jugendfrei(!)
http://matthias.markowski-web.de/wireframe.jpg
http://matthias.markowski-web.de/haareanderfalschenstelle.PNG // Probleme beim Laden


Unten Rechts:

Das ist ein Lowpolymodell das ich im Netz gefunden hab, das über einen Dot3-Bumpmapping Shader beleuchtet wird. Das Beispiel lief je nach anzahl der ge-bumpmap-ten Pixel auf dem Bildschirm mit etwa 30 - 60 fps, da die Berechnungen per Pixel ausgeführt wurden. Das heisst, man könnte auch bei kompletten Levels mit ca 25-30 fps rechnen, wenn alle Objekte mit diesem Shader ausgeführt werden würden. Damit man den Effekt besser sieht ist er etwas übertrieben gezeichnet ;)

http://matthias.markowski-web.de/jill.jpg // normales Specular per Vertex (254 fps)
http://matthias.markowski-web.de/bump.jpg // anderes Bumpmapping Bild


Zu der Engine gehörte noch ein Subdivisionalgorithmus, der darauf basierte die Normalen jeder Vertex mit der Normalen des Quellpolygons zu vergleichen und daraus einen Faktor zu verechnen, um die die Neue Verticle in Richtung der Normalen bewegt werden muss. hier eine etwas bildlichere Erklärung: http://matthias.markowski-web.de/new/subdiv.png Zusätzlich konnte noch entschieden werden, ob sich eine weitere Subdivision für das jeweilige Polygon überhaupt lohnt. Der Algorithmus ist aber nicht gut geworden, wie ihr da sehen könnt :)

http://matthias.markowski-web.de/new/step1.png
http://matthias.markowski-web.de/new/step2.png

Da das Projekt etwas aus dem Rahmen geraten ist, der Source ist >350kb gross und in C, gebe ich das Projekt auf und fange neu an! Falls ihr fragen habt, nur zu..






Von norebo am 05.05.2004, 05:53:48 Uhr
die seq*.zip's sind tot :/

ansonsten sieht das klasse aus =)

Von Specialist am 05.05.2004, 06:40:18 Uhr
Sieht gut aus!
Wenn das mal kein guter Anfang für den Tag meiner Info-Abiklausur ist! :)

Von ThunderEye am 05.05.2004, 08:24:36 Uhr
Hi,
sieht Spitze aus, ich denke da du das Projekt aufgegeben hast, würden sich einige hier sehr über Sourcecode freuen. Wäre echt genial, wenn du den unter ner GPL (o.a.) Lizenz als OpenSource ins Netz stellen könntest. Die Cloth-Simulation ist bestimmt interesannt... ;)
Also, respect man!
mfg
ThunderEye

Von Eiswuxe am 05.05.2004, 13:40:48 Uhr
Hi,

das sieht alles sehr cool aus. Das Tutorial, aus dem Du die Bump Map Textur "geliehen" hast, hab ich glaub auch schonmal gesehen ;)

Werd mir daheim das ganze mal runterladen und live anschauen. Das Clothing interessiert mich schon sehr.

Von Mr.DX am 05.05.2004, 14:28:58 Uhr
Wirklich super, die Engine ist wirklich der Hammer.
Weiter so.
Sorcecode wäre natürlich was feines ;) , aber den gibts wo wohl ungern her (versteh ich auch).

Von Tales am 05.05.2004, 14:40:42 Uhr
Da hab ich die Links sogar noch getestet :) Die seq's sind enden mit avi, also..

http://matthias.markowski-web.de/seq1.avi
http://matthias.markowski-web.de/seq2.avi
http://matthias.markowski-web.de/seq3.avi


Den Code kann ich euch geben, die Shader nicht. Da im Moment alles so "eingestellt" ist das die Dusk läuft, gebe ich es so rüber (Shader sind da nicht nötig).. es ist ja leider alles hardcoded und das währe echt viel Arbeit jetzt was anders anzeigen zu lassen, und Dusk ist nich grade sehr spektakulär..

Aber zum zweiten ist der Code eher als ein abschreckendes Beispiel gedacht, wie ihr selber feststellen werdet ;)

http://matthias.markowski-web.de/Cthulhu.tar.gz // Ich lass die Zip ~1 Woche drauf (evt problematisch das archiv)
http://matthias.markowski-web.de/Cthulhu.rar // falls das obere nicht läuft, das hier

Ihr müsst euch noch Dusk runterladen..

http://www.nvidia.com/object/demo_dusk.html und dann die Dusk.nmb öffnen.

um Das Projekt zu compilieren, braucht ihr das CG Toolkit und die GL Header müssen auch am richtigen Ort sein. Ansonsten viel Spass damit ;)

Von Tales am 05.05.2004, 14:52:49 Uhr
Achso das war es ja alles noch nicht, ihr müsst noch die default.ini ändern und das working directory so einstellen! Jeweils in dem Verzeichnis, vom dem ihr die exe startet, ist eine die ini datei. also je nach dem ob vom Compiler aus gestartet oder gleich direkt)

Wenn ihr da seit, importiert ihr dann einfach nur die Dusk.nmb über das menü File\Import.

Eiswuxe:

Ja, es gibt so ein Tutorial das die Grundsätze des Dot3 erklärt und es hatte gute Texturen, fürs üben nehm ich halt alles was ich finden kann ;) edit: achja warte die vom bild oben ist glaub ich von dem Meister persönlich ;)

ThunderEye + Eiswuxe:

Die Abschnitte zum Clothing befinden sich jeweils in der Scene.cpp in der Funktion void physicsOBJECT(OBJECT *obj) die fürs Processing zuständig ist, und in der Objects.cpp in der Zeile 3947 gibt es noch die Listen der Shear und Structurals.

Mr.DX:

Nur die Shader behalt ich halt für mich, die können mir noch Vorteile bringen ;)

Von ThunderEye am 05.05.2004, 15:26:03 Uhr
Hi,
korrekt. THX!
Werde mir das dann mal in nächster Zeit zu gemüte führen.
Nochmal danke. :)
mfg
ThunderEye

EDIT: Ok, der zweite klappt. Danke.

Von Tales am 07.05.2004, 17:34:04 Uhr
Alle Fragen schon beantwortet? :)

Von Mr.DX am 09.05.2004, 09:15:17 Uhr
Hm, bei mir funzt der Link mit dem Quellcode nicht :(

Von ThunderEye am 09.05.2004, 14:40:33 Uhr
Hi,
@ Mr.DX: Heut klappt der Link wieder, hab ihn gerade ausprobiert.
mfg
ThunderEye

Von Tales am 09.05.2004, 22:10:45 Uhr
war ein kurzzeitiger Serverausfall..