Gamestudio Links
Zorro Links
Newest Posts
Newbie Questions
by fairtrader. 12/05/23 14:22
Zorro Trader GPT
by TipmyPip. 12/04/23 11:34
Square root rule
by Smallz. 12/02/23 09:15
RTest not found error
by TipmyPip. 12/01/23 21:43
neural function for Python to [Train]
by TipmyPip. 12/01/23 14:47
Xor Memory Problem.
by TipmyPip. 11/28/23 14:23
Training with command line parameters
by TipmyPip. 11/26/23 08:42
Combine USD & BTC Pairs In Asset Loop
by TipmyPip. 11/26/23 08:30
AUM Magazine
Latest Screens
A psychological thriller game
SHADOW (2014)
DEAD TASTE
Tactics of World War I
Who's Online Now
3 registered members (TedMar, AndrewAMD, fairtrader), 578 guests, and 0 spiders.
Key: Admin, Global Mod, Mod
Newest Members
fairtrader, hus, Vurtis, Harry5, KelvinC
19019 Registered Users
Previous Thread
Next Thread
Print Thread
Rate Thread
Page 1 of 2 1 2
Entitys weg clippen, wenn Wand zwischen ist... #155996
09/21/07 15:48
09/21/07 15:48
Joined: Apr 2005
Posts: 3,076
Germany, NRW
rvL_eXile Offline OP

3D Artist
rvL_eXile  Offline OP

3D Artist

Joined: Apr 2005
Posts: 3,076
Germany, NRW
Hi,

Vielleicht könnte man dieses Feature mal einbauen. Wenn beispielsweise der SPieler vor einem Haus steht und ich beispielsweise 10000 Modele im Hausplatziert habe, das die Modele durch die Levelgeometrie nicht gerendert wird, nur durch Modele (für die Fenster Scheiben). Damit könnte einiges an FPS gespart werden und einiges würde schneller laufen ohne rum tricksen zu müssen.

Bitte um Antwort, wenn Sie wieder "zu Hause" sind JCL

cYa Sebastian


Tutorials:
[Blender]Terrain creation ENG/GER
[Blender]Low Poly Tree Modeling
[GIMP]Create a Texture for Terrains
CLICK HERE


Re: Entitys weg clippen, wenn Wand zwischen ist... [Re: rvL_eXile] #155997
09/22/07 10:43
09/22/07 10:43
Joined: Jan 2003
Posts: 4,305
Damocles Offline
Expert
Damocles  Offline
Expert

Joined: Jan 2003
Posts: 4,305
Aber was passiert wenn ein kleiner Teil des Modelles hinter der Wand
hervorschaut?
Soll dann trotzdem das ganze Modell verschwinden?

Ein solcher Algorythmus muss auch die Größe des Modelles
(und die Animationen)
beachten.

Du kannst sowas erstmal selber per skript lösen,
wo du mit triggern oder ähnlichem alle
Modelle unsichtbar machst wenn Du nicht im Haus bist.

Du kannst Auch traces nutzen, um die SIchtbarkeit zu bestimmen.
(nicht jedes Frame, aber so jede Sekunde etc)

Ein möglicher Algorythmus für 3dgs könnte
ein
"invisible when no trace to camera" flag sein.

Die Sichtbatkeitsberechnungen für BSP funktionieren
ganz anders.
Was man höchstens machen könnte ist ein Modell einem Block zuweisen.
Wird der Block nicht gerendert, wird auch das Modell nicht gerendert.

Re: Entitys weg clippen, wenn Wand zwischen ist... [Re: Damocles] #155998
09/22/07 14:27
09/22/07 14:27
Joined: Sep 2003
Posts: 5,900
Bielefeld, Germany
Pappenheimer Offline
Senior Expert
Pappenheimer  Offline
Senior Expert

Joined: Sep 2003
Posts: 5,900
Bielefeld, Germany
Quote:

Was man höchstens machen könnte ist ein Modell einem Block zuweisen.
Wird der Block nicht gerendert, wird auch das Modell nicht gerendert.




Du meinst, eine WMP, eine Mapentity, in der Models positioniert werden?

Re: Entitys weg clippen, wenn Wand zwischen ist... [Re: Pappenheimer] #155999
09/22/07 15:11
09/22/07 15:11
Joined: Jan 2003
Posts: 4,305
Damocles Offline
Expert
Damocles  Offline
Expert

Joined: Jan 2003
Posts: 4,305
Nein, die Visibility Berechnungen / algorythmen von BSP können ja
Blöcke, oder halt Teile davon darstellen oder nicht, je nach
position der Kamera.
Würde man ein Modell mit einem Diser Blöcke verküpfen,
könnte des Rendering schauen ob der Block dargestellt wird.
Ist er unsichtbar kann man auch das Modell unsichtbar schalten.

Ich kenne allerdings nicht die Deteils von BSP.
Aber die Informationen über die Sichtbarkeitsberechnung
könnte man ja auch für die Sichtbarkeit des Modelles nehmen.

Das einfachste ist allerdings eine Mischung aus Traces und Triggern.
Ist mehr Arbeit, aber kann so mit dem jetzigen System realisiert werden.

Re: Entitys weg clippen, wenn Wand zwischen ist... [Re: Damocles] #156000
09/22/07 15:17
09/22/07 15:17
Joined: May 2005
Posts: 2,713
Lübeck
Slin Offline
Expert
Slin  Offline
Expert

Joined: May 2005
Posts: 2,713
Lübeck
Um mal mich selbst zu zitieren (http://www.coniserver.net/ubbthreads/showflat.php/Cat/0/Number/787215/an/0/page/0#Post787215):
Quote:


Wenn jetzt z.B. ein "Zombie" mit dem Mittelpunkt hinter einem anderen steht, oder zur hälfte hinter einer Wand oder was auch immer, dann wird es nicht mehr dargestellt, obwohl es zum Teil eigentlich noch sichtbar ist.

c_trace ist außerdem recht langsam. Bei zehn 10000poly Modellen würde es sich wohl lohnen, aber bei tausend 100-1000 poly Modellen, ist es viel zu langsam. Auch wenn nur jeden 15. frame "getraced" wird, geschieht es immer gleichzeitig und wird jeden 15. frame heftig stocken. Auch dies könnte man ändern, indem von den 1000 Modellen jeweils 66 überprüfen, ob etwas im weg ist. Auch dies ist nicht gerade schnell aber vielleicht noch zumutbar.

Es bleibt aber das erste Problem. Es müssten also verschiedene Teile eines Modelles überprüft werden. Mit vec_for_vertex ist dies zwar kein problem, aber es bedeutet auch mindestenz 8 zusätzliche aufrufe von c_trace pro Modell.
8*66 = 528, 528 mal c_trace ist aber nicht mehr besonders zumutbar, und wäre ein erheblicher Implementierungsaufwand, da die 8 vertices für jedes modell per Hand gesetzt werden müssten. Selbst bei überprüfen aller Vertices könnte im schlechtesten fall noch das zuerst genannte Problem zutreffen.

Tatsächlich dachte ich, dass BSP dieses normalerweise durch das Zerlegen des Levels in Regionen und zusätzlichem zuordnen von Modellen zu den entsprechenden Regionen, selbst handhabt...

Für vec_for_screen ist es egal, ob etwas im weg ist oder nicht und selbst wenn, würde das erste Problem zutreffen

Ich habe keine Idee, die dieses Problem lösen könnte, außer eben gutes Scene Management durch die Engine.






Das mit den Triggern ist aber wirklich eine relativ simple und teilweise auch sehr sinnvolle Sache glaube ich.

Last edited by Slin; 09/22/07 15:17.
Re: Entitys weg clippen, wenn Wand zwischen ist... [Re: rvL_eXile] #156001
09/22/07 18:09
09/22/07 18:09
Joined: Sep 2003
Posts: 5,900
Bielefeld, Germany
Pappenheimer Offline
Senior Expert
Pappenheimer  Offline
Senior Expert

Joined: Sep 2003
Posts: 5,900
Bielefeld, Germany
Dann hilft doch nur BSP wie in Half-Life 2:

Die Fenster haben keine Löcher, sondern nur ein FFP environement mapping oder Spiegelung, der Eingang hat einen Vorraum, der ein direktes Einsehen von draußen verhindert, man muß also einmal um die Ecke gehen.

Oder man macht es über einen Schalter beim Türeingang (Trigger oder Abfrage, ob der Spieler sich innerhalb des Quaders des Hauses befindet), der die Modelle im Moment des Betretens erschafft.
Für Blicke von außen ins Haus, fasst man die Modelle im Haus in einem Modell zusammen.

Re: Entitys weg clippen, wenn Wand zwischen ist... [Re: rvL_eXile] #156002
09/23/07 09:32
09/23/07 09:32
Joined: Apr 2005
Posts: 4,506
Germany
F
fogman Offline
Expert
fogman  Offline
Expert
F

Joined: Apr 2005
Posts: 4,506
Germany
Sollte es eigentlich nicht schon so sein...? Zumindest ist das auch meine Erfahrung.
Aus dem Manual:

Quote:


...When rendering a frame, the engine loops through the BSP regions to find out which region the camera is currently in. Once it's found it, it uses the PVS to find out what regions might be seen from there, and tosses out the regions that can't be seen under any circumstance - including all objects in those regions. This is a very effective form of visibility determination and can remove up to 90% of all objects, depending on the level architecture.





Wenn man also, wie Pappenheimer so schön beschreibt, die Level richtig konstruiert, werden die Entities automatisch ausgeblendet.


no science involved
Re: Entitys weg clippen, wenn Wand zwischen ist... [Re: fogman] #156003
09/23/07 13:12
09/23/07 13:12
Joined: Apr 2005
Posts: 3,076
Germany, NRW
rvL_eXile Offline OP

3D Artist
rvL_eXile  Offline OP

3D Artist

Joined: Apr 2005
Posts: 3,076
Germany, NRW
Ich hab gerade en kleinen Test gemacht, da meine Räume noch offen sind. Habe einfahc mal einen Hollow Cube erstellt un 50 Entitys drin platziert.
Diese werden nicht von der Cam erfasst. Es scheint also daran zuliegen ob ein Raum offen oder geschlossen ist...
Dann habe ich aber ein weiteres Problem, denn wenn ich eine Tür einbaue, dann werden die Entitys wieder gerendert... Egal von welcher Seite ich schaue...

cYa Sebastian


Tutorials:
[Blender]Terrain creation ENG/GER
[Blender]Low Poly Tree Modeling
[GIMP]Create a Texture for Terrains
CLICK HERE


Re: Entitys weg clippen, wenn Wand zwischen ist... [Re: rvL_eXile] #156004
09/23/07 14:19
09/23/07 14:19
Joined: Jul 2001
Posts: 6,904
H
HeelX Offline
Senior Expert
HeelX  Offline
Senior Expert
H

Joined: Jul 2001
Posts: 6,904
Ich glaube es macht keinen Sinn, wild darüber zu spekulieren Kurz zusammengefasst: BSP tree rendering nutzt die Tatsache aus, dass ein Level so aufgebaut ist, dass es Orte gibt, an denen man _sicher_ weiß, dass andere Orte/Areale NICHT sichtbar sind. Wenn du also einen Raum hast und da ist eine Wand in der Mitte, die an der anderen Seite des Raumes offen ist, dann wird alles hinter der Wand gerendert werden, weil die Kamera ja theoretisch auch so stehen kann, dass beide Seiten des Raumes gesehen werden können. Das geht jetzt alles noch mehr ins Detail, deshalb Folgendes:

Das BSP Verfahren ist ein sehr mächtiges Verfahren. Mit Sachverstand, gutem Leveldesign und Kenntniss über die Vor- und Nachteile, kann man superschnelle Levels erzeugen und auch die Compilerzeit positiv, als auch negativ beeinflussen.

Zum Glück gibt es zahlreiche Dokumente, die das alles mal zusammenfassen:

BSP Map Optimization
Erklärung des Binary Space Partioning Verfahrens
Visibility Determination
Controlling Geometry Visibility and Compile Times
Optimization (level design)

Darüberhinaus wird auch geschildert, wie man den BSP Aufbau debugged (indem man dem gesamten BSP mesh, also in unserem Fall den block surfaces, zur Laufzeit ein FFP wireframe material gibt, sodass man sieht welche Areale zur Zeit sichtbar sind und welche eben nicht. Somit kann man schnell feststellen das bestimmte Areale fälschlicherweise noch gerendert werden - und somit Fehler im Leveldesign vorliegen).

Conitec hat bewussterweise den BSP renderer in ein A7 pro feature geändert, weil die meisten user keinen Plan haben, wie man das ganze Ding denn nun effizient benutzt und was man dafür machen muss. Alle als BSP kompilierten maps werden mit dem ABT renderer gerendert, wenn man keine Pro Lizenz hat.

Um noch mal auf den Kern des Themas zurückzukommen: der Aufwand, festzustellen, ob ein Model hinter einem anderen Mesh/Model steht und nicht sichtbar ist, ist unverhältnismäßig groß. Wenn deine Levels auf Modelbasis erstellt sind, kannst du eine Art BSP emulation mit manuell gesetzten Triggern erzeugen. So kannst du ganz einfach Entities in einem Skill eine Art Areal-Nummer geben und jenachdem durch welchen Trigger man läuft, wird nur das aktuelle und oder die angrenzenden Areal ein/aus geschaltet. Ist kein großer Aufwand... also könntest du das mal selbst probieren.

c_trace Geschichten sind auch langsam, wenn du für sowas da rumfrickelst. Eventuell ist der Gewinn, den du durch einen eigenen clipping algorithmus auf c_trace Basis erzielst, genauso hoch, wie die Performance, die durch deine Rumorgelei mit c_trace verloren geht.. also kommst du vielleicht sogar bei 0 wieder raus, wahrscheinlich erzielst du dennoch einen negativen Gewinn... also quasi verbratene Frames.

Ich hoffe mal, das dich das ein wenig weiterbringt

Last edited by HeelX; 09/23/07 14:23.
Re: Entitys weg clippen, wenn Wand zwischen ist... [Re: HeelX] #156005
09/23/07 17:00
09/23/07 17:00
Joined: Nov 2004
Posts: 7,121
Potsdam, Brandenburg, Germany
Machinery_Frank Offline
Senior Expert
Machinery_Frank  Offline
Senior Expert

Joined: Nov 2004
Posts: 7,121
Potsdam, Brandenburg, Germany
Ich stimme mit HeelX überein und hatte auch mal mit ihm darüber per MSN diskutiert. Ich halte diese Idee für gut, ein eigenes Szenenmanagment zu bauen (nicht mit Traces sondern mit Zonen und Portalen).

Aber ich würde empfehlen, nicht in großen Schleifen alle Modelle und deren Skills zu prüfen, sondern einen eigenen Szenenbaum zu integrieren. Ein Raum bekommt also eine Nummer und einen Verweis auf die ihm zugehörigen Modelle. Damit kann man gezielt nur die notwendigen Objekte ein- und ausschalten.

Interessant wäre für dieses Feature, wenn man in 3dgs so einen Szenenbaum zur Verfügung hätte und in einem Objekt die Eigenschaft Sichtbarkeit ändert und damit automatisch alle Kindobjekte mit beeinflussen könnte.

Aber sicher lässt sich sowas auch manuell programmieren. Nur wäre es leichter, diese Gruppen von Objekte gleich im WED zu definieren. Anderenfalls müsste der Leveldesigner Listen von Modellen erstellen und bei jeder Änderung diese Listen wieder aktualisieren, wobei sich natürlich Fehler einschleichen.

Hat denn überhaupt jemand den neuen A7-BSP getestet auf seine Rendergeschwindigkeit (mit und ohne Shader). Leider gibt es keine Demos dazu. Wenn er für Indoor-Level den ABT deutlich schlägt, wäre das eine wichtige und interessante Information, die den Kauf der Pro-Version in Betracht ziehen könnte.


Models, Textures and Games from Dexsoft
Page 1 of 2 1 2

Moderated by  aztec, Spirit 

Gamestudio download | chip programmers | Zorro platform | shop | Data Protection Policy

oP group Germany GmbH | Birkenstr. 25-27 | 63549 Ronneburg / Germany | info (at) opgroup.de

Powered by UBB.threads™ PHP Forum Software 7.7.1