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:
4420318
Jetzt (Chat):
24 (0)
Mitglieder:
5239
Themen:
24223
Nachrichten:
234554
Neuestes Mitglied:
-insane-
"RealityEngine" von Marc Schiller (Marc7759)


Hi,

um den Mangel an den IOTWs nicht zu unterstützen, habe ich hier ein Screenshot von meiner neuen Portal-Engine...
Ich weis, die Textur sieht zum kotzen aus, aber hier geht Technik vor Schönheit... :)

Der Algrithmus ist im Prinzip ganz simpel:
* Level-Daten werden aus einer externen Datei geladen
* CSG Algo wird ausgeführt
* Level wird an den Portalen "durchgschnitten"
* Sektoren werden ermittelt
* Portale werden zu den Sektoren zugeordnet

Jedoch habe ich mich zusätzlich dazu entschlossen, nicht nur stur komplette Sektoren zu zeichnen,
sondern auch nicht sichtbare Polygone zu entfernen. Um dies zu verwirklichen,
habe ich die Brushes aus meinem Level-Editor bis zum Rendern unbeschädigt gelassen.
Jetzt muss ich beim Rendern des Sektors nur noch die BoundingBoxen der einzelnen Brushes gegen den ViewFrustrum testen,
und wenn dann der Brush nicht sichtbar ist kann ich gleich alle Polygone des Brushes weglassen.
Und zu meinem Erstaunen hat sich dadurch die Framerate tatsächlich um ca. 15% erhöht.
Zudem hat es einen enormen Vorteil für die Kollisionserkennung...

Und hier gleich mal die Demo dazu:

[url=RealityEngine Techdemo.zip]http://www.acid-code.ch/~acidfriend/marc/RalityEngine%20Techdemo.zip[/url]

* F1 : BoundingBoxen um die Brushes zeichnen
* F2 : Portale zeichnen
* F3 : Wireframes
* F8 : Screenshot

Leider funktioniert die Kollisionserkennung noch nicht zufriedenstellend... lasst euch also davon nicht stören.
Und lasst auch auch nicht von der langen Ladezeit beirren.
Es muss schlieslich in dieser Zeit der gesammte obere aufgelistete Algorithmus ausgeführt werden.
Ich hatte bisher noch keine Zeit, dem erstellten Level ein eigenes Dateiformat zu geben... Aber das kommt ja alles noch...
Und fallt nicht in das leere Wasser-Becken...
Daraus gibt es kein entkommen mehr...*ggg*






Von Unknown GER am 01.07.2003, 06:39:29 Uhr
Respekt, gefällt mir sehr gut. Nette Idee mit den BB's. :D

Nur eine Frage: Die Leiter kann man nicht hoch?

Weiter so, Deine Terrain-Engine hat mir schon sehr gut gefallen.

Von Nico am 01.07.2003, 07:21:23 Uhr
Hi,
sieht sehr fein aus, auch die Kollisionsabfrage. Die Leiter konnte ich zwar nicht hochgehen, aber die Treppe ;-)

Wie machst du eigentlich den Nebel?

Von Return FALSE am 01.07.2003, 08:10:48 Uhr
ganz nett, du erstaunst immer wieder auf's Neue

überschneiden sich die brushes die den torbogen bilden? oder wie machst du diese abgekannteten objekte. Ich nehm an du benutzt einen eigenen editor, gibt's da standartobjekte, wie managest du solche ausnahmeobjekte wie ein torbogen? oder importierst du die?

Gruss
Return FALSE

Von Marc7759 am 01.07.2003, 09:57:11 Uhr
@All
Danke für den Lob...

@Unknown GER

"Nur eine Frage: Die Leiter kann man nicht hoch?"

Hab ich auch selber schon mehrmals versucht hochzukommen... Aber im oberen drittel gehts leider nich weiter... :(
Also, dass soll heisen, dass es nicht beabsichtig war, da hoch zu kommen... Aber dass kann man später ja noch alles scripten... :)

@Nico

"Wie machst du eigentlich den Nebel?"

Code:
////////////////////////////////////////// Nebel /////////////////////////////////////////////

    SRS( D3DRS_FOGSTART,    *((DWORD*) (&EngineDaten.camera.fog_start)));
    SRS( D3DRS_FOGEND,        *((DWORD*) (&EngineDaten.camera.fog_end)));

    SRS( D3DRS_FOGCOLOR,    D3DCOLOR_XRGB(    EngineDaten.camera.fog_red,
                                            EngineDaten.camera.fog_green,
                                            EngineDaten.camera.fog_blue));

    SRS( D3DRS_FOGENABLE,    EngineDaten.camera.fog);
    
    ////////////////////////////////////////// Nebel /////////////////////////////////////////////



@Return FALSE

"überschneiden sich die brushes die den torbogen bilden?"

Nein. Die Brushes (Blöcke) werden einfach aneinander gereiht und verzerrt. Ich kann also auch die Brushes bearbeiten. Also 5 Möglichkeiten: Vertices Pos. ändern, Ecken Pos. ändern, Flächen Pos. ändern, Brush Skalieren, Brush Rotieren... Zudem kann mein Leveleditor auch .map Dateien importieren und die Dazugehörigen .wad Dateien... Aber leider funzt das CSG-Union bei diesen .map Dateien noch nich so recht...
Also wie gesagt. Es stehen in meinem Leveleditor verschiedene Geometrische Brushes zur verfügung. Bis jetzt sind es Würfel KMG, Dreieckspyramide KMG, Raum KMG, Zylinder 5-16 Seiten, Pyramide 3-16 Seiten... Aus diesen Brushes setzt sich mein gesammtes Level zusammen... Ausser die Pyramiden... Ich habe festgestellt, dass man die fast so gut wie nie benötigt... :)

Von Torsten Richter am 01.07.2003, 11:59:05 Uhr
Sieht für den Anfang nicht schlecht aus.
Was steckt in der Datei "REngine.dll"? Sie ist relativ groß!
Nur die Renderfunktionen oder die ganze Engine?
..Ah ich sehe gerade,sie beinhaltet auch die Terrain-Engine.

Ist eine Unterstützung von mehrere Grafik-API geplant? (DX,OpenGL,..)

Konnte das Demo leider nicht auspropieren,ich muß mir erst DX9 installieren,habe noch DX8.

Von mastervc am 01.07.2003, 12:25:13 Uhr
Will da einer Serious Sam nachmachen ? :D

Sollte mich auchmal mit den Algos besser beschäftigen .... wünschte meine Terrain Engine lief so gut *schnief* (scheiss Quadtreee *GGGGG*)

Von Marc7759 am 01.07.2003, 13:31:03 Uhr
@Torsten Richter

"Ah ich sehe gerade..."

WO siehst du das ???

"Ist eine Unterstützung von mehrere Grafik-API geplant? (DX,OpenGL,..)"

Nein. Wenn ich mir Kommerzielle 3D Engines ansehe, unterstützen nur die meisten eine API... Wozu auch 2 APIs unterstützen ???

@mastervc

"Will da einer Serious Sam nachmachen ?"

??? Woraus schliest du das ??? An der Levelgeometrie ??? Ich habe leider noch nie SeriousSam gespielt... :(

Ich hab den Level einfach frei Schnautze gemacht... Ohne Forbilder von irgendwelchen Spielen...

Von Torsten Richter am 01.07.2003, 14:30:32 Uhr
Wo zu sind dann diese Strings in der DLL?
Zitat:

Create Terrain ++++++++++++++++++++++++++++++++++++++++++
Create VertexData : OK
Create Terrain : OK
Speichere Terrain ab ++++++++++++++++++++++++++++
Dateiname :
reibvorgang erfolgreich beendet +++++++++++++++++++++++
Fehler in Funktion (Load): Terrain ist schon geladen!
Lade Terrain ++++++++++++++++++++++++++++++++++++
Dateiname :
stelle Dynamischen Vertexbuffer
/////////////// Create IndexBuffer (LOD) //////////////
Ladevorgang erfolgreich beendet +++++++++++++++++++++++
Lösche Terrain:
Fehler in Funktion (Delete): Kein Terrain vorhanden!
Terrain Wasser +++++++++++++++++
Fehler : Heightmap ist nicht korrekt


Sind ja 309 Funktion drin. Woh,da steckt eine Menge Arbeit drin!

Zitat:

.. ??4CFrustrum@@QAEAAV0@ABV0@@Z
??4CInput@@QAEAAV0@ABV0@@Z
??4CLensFlare@CSpecial@@QAEAAV01@ABV01@@Z
??4CLight@@QAEAAV0@ABV0@@Z
??4CMD2Modell@CEntity@@QAEAAV01@ABV01@@Z
??4CNature@CTerrain@@QAEAAV01@ABV01@@Z..


Von Fastjack am 01.07.2003, 15:11:15 Uhr
Joa, sieht schick aus =)
Was ich jedoch zu bemägeln habe!
Die FPS anzeige sollte lesbar sein :D
Also vielleicht jede Sekunde den durchschnitt der letzten Sekunde anzeigen ;)

Von Eisflamme am 01.07.2003, 15:58:06 Uhr
Ich finde es auch fein. :)

Läuft auf meinem PC mit 512 DDR RAM 900 MhZ Geforce 2 GTS bei 1152x1024 (oder wie das da war) auf 32 BIT mit WBuffer und allem drum und dran immernoch mit FPS = Vsync

MfG MAV

Von mastervc am 01.07.2003, 16:06:34 Uhr
Kann es sein das du bei den tris/s: geschummelt hast ?

An der Stelle auf dem Screen hab ich mich auch hingestellt aber nur die Hälfte der Tris gehabt :)

Vielleicht Cullt meine Graka auch besser =P

cya

Von laprican am 01.07.2003, 17:14:03 Uhr
oder du hast nur die halbe fps
tris/s sieht für mich so aus wie "dreiecke pro sekunde", oder?

Von Marc7759 am 01.07.2003, 17:49:56 Uhr
@Torsten Richter

Ach so... du siehst dir das im Wordpad an... :)

"Wo zu sind dann diese Strings in der DLL?"

Ich schätze man, dass das die Protokollausgaben sind... :)


"Sind ja 309 Funktion drin. Woh,da steckt eine Menge Arbeit drin!"

Du hast aber jetzt nicht alle Funktionen abgezählt, oder ??? *ggg*
Klar steckt da viel Arbeit drin... Arbeit von ca. 1.5 Jahren. Aber am produktivsten wirds immer weiter zum Ende hin... Anfangs könnte ich noch nickt einmal C++ oder mit DX-Proggen... Ich habe also ganz klein angefangen... :)
Obwohl... eigentlich wollte ich schon immer meine kleine 3D Engine schreiben... :)

http://programmierer.freepage.de/marcschiller/

Die Page ist schon 4 Jahre alt (Mensch, wie die Zeit vergeht *gg*). Das was man da sieht, kann man glaube ich schon irgendwie als 3D Engine beschreiben... Wenn auch im primitivsten masse... :)

@Fastjack

"Die FPS anzeige sollte lesbar sein"

Stimmt... Ich hatte es mal lesbar... Ich hab damals von 20 FPSs den Durchschnitt genommen.
Ich habe halt die ganze Funktion neu geschrieben und das dabei vergessen wieder zu integrieren. Aber danke das du mich erinnert hast... werds bei Gelegenheit/Langeweile wieder einführen...

@mastervc

"Kann es sein das du bei den tris/s: geschummelt hast ?"

Hier wird nicht geschummelt...
tris/s = FPS * ViewTris;


Von Marc7759 am 01.07.2003, 18:00:15 Uhr
Ach so, noch zur Information: Mit E beendet man die Programme.

Von Marc7759 am 01.07.2003, 18:01:45 Uhr
Und noch was: Ihr müsst der .exe Datei EMS und XMS Speicher zuweisen, damit es läuft...

Von LordHoto am 01.07.2003, 19:16:07 Uhr
Zitat:
EMS und XMS zuweisen?


Was für was das denn??

Sieht schön aus!

MFG

LordHoto

Von GenkiOjousan am 01.07.2003, 20:06:56 Uhr
ne tolle sache das *schleim*
ne, im ernst is echt gelungen...
aber bitte schau dir nochmal die funktion die sich ums Antialiasing kümmert an, denn als ichs angeschaltet hatte kam das hier: Die Anweisung in "0x10001666" verweist auf Speicher in "0x00000000". Die Anweisung "read" konnte nicht ausgeführt werden... *bla bla bla*
und der Debugger meint dazu: Unbehandelte Ausnahme in Techdemo.exe (rengine.dll): 0xC0000005: Access Violation
Im Dissambler: 10001666 mov eax,dword ptr [edx]

hoffe die helfen die infos weiter =)
also dann viel spass beim suchen und proggen...

Genki Sekai-Goshujin aka Genki Ojousan

Von Marc7759 am 01.07.2003, 20:21:55 Uhr
Stimmt, das muss ich noch machen... So ein misst... Seit dem ich von DX8 auf DX9 umgestellt habe, geht dieses Antialiasing nich mehr...
Werd mich bei gelegenheit mal drum kümmern...