ProfilProfil
 Registrieren
 Login
Bild der WocheBild der Woche

(von Backslider)
Kommentare (0)
*****

Weitere
User onlineBenutzer online
Gäste online: 7
Mitglieder online: Keine
Registrierte Mitglieder: 2185
Neustes Mitglied: Thelmast

Kameras Sichtfeld und Abschattung visualisieren.

Neue Antwort erstellen
 

 

Autor Nachricht
 
 
FlashMuller
Member


Anmeldedatum: 14.03.2011
Beiträge: 167

Antworten mit Zitat
BeitragVerfasst am: 24.02.2012, 08:22    Titel: Kameras Sichtfeld und Abschattung visualisieren.

Hallo zusammen,
Ich plane gerade an meinem neuen Projekt rum. Das Projekt wird 3d und für WP7. Die Level sind wie eine TileEngine, 80x80 groß, in der Hauptsache eine Bodenebene und eine Wandebene, also recht simpel und wenige Objekte. In diesen Level sollen nun Kameras (Wald Spielobjekte, nicht als Spielerkamera) sein, die sich auch bewegen können (dynamisch)! Wie damals beim guten alten Commandos soll nun das Blickfeld der Kamera gerendert werden und später dann auch auf Spielerentdeckung getestet werden. Tutorials kann ich selber lesen, meine Frage ist aber: welche Techniken machen in diesem Fall Sinn? Vom Grundprinzip ist es ja den Schatten sehr ähnlich. Zusammenfassend: Dynamisch, 2d Abschattung reicht, Performanz, auf WP7.
Danke
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden


Glatzemann
XNA.mag - Team


Anmeldedatum: 24.07.2009
Beiträge: 7453
Wohnort: Leverkusen

Antworten mit Zitat
BeitragVerfasst am: 24.02.2012, 09:02    Titel:

Ich würde einfach die Sichtfeldpyramide (also das Frustum) der Überwachungskamera rendern. Dabei einfach die BackFaces cullen (Standard) und halbtransparent rendern. Das sollte schon ein gutes Ergebnis liefern und auch auf dem WP7 die Performance nicht zu sehr belasten.

Ansonsten könntest du mit Stencil-Shadows arbeiten. Lt. Shawn Hargreaves überfordert das aber in den meisten Fällen das WP7 aufgrund der Füllrate.
_________________
MVP · "Mit ohne Haare" · indiedev

Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen


DiNoGames
XNA.mag - Team


Anmeldedatum: 25.02.2008
Beiträge: 2796
Wohnort: Bremen

Antworten mit Zitat
BeitragVerfasst am: 24.02.2012, 09:15    Titel:

Willst Du das Blickfeld wirklich rendern (also im Spiel darstellen) oder nur wegen der Prüfung ob der Spieler im Bild ist?

Wenn es nicht gemalt werden muss, kann man doch zuerst eine Kollisionsprüfung mit dem Frustum der Kamera machen, und wenn der Spieler da drinnen ist (also von der Kamera eingefangen sein könnte), dann würde ich mit Ray-Intersects probieren, ob der Spieler sich wirklich im sichtbaren Bereich oder vielleicht hinter einer Wand befindet.

Das dürfte auch das WP7 null belasten, da es nur ein paar Rechnungen sind..
_________________


DiNoGames on Facebook - LIKE IT!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen ICQ-Nummer


FlashMuller
Member


Anmeldedatum: 14.03.2011
Beiträge: 167

Antworten mit Zitat
BeitragVerfasst am: 24.02.2012, 09:22    Titel:

Ziel ist schon die dauerhafte Visualisierung.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden


DiNoGames
XNA.mag - Team


Anmeldedatum: 25.02.2008
Beiträge: 2796
Wohnort: Bremen

Antworten mit Zitat
BeitragVerfasst am: 24.02.2012, 10:56    Titel:

Dann klingt es tatsächlich nach nem normalen Schatten für mich... es sei denn ich raff das Problem nicht.
Das Sichtfeld einer Kamera ist ja nichts anderes als ein Scheinwerfer mit Lichtkegel. Alles was man sieht ist hell, alles andere ist Schatten. Genau wie beim Licht.
_________________


DiNoGames on Facebook - LIKE IT!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen ICQ-Nummer


FlashMuller
Member


Anmeldedatum: 14.03.2011
Beiträge: 167

Antworten mit Zitat
BeitragVerfasst am: 24.02.2012, 11:16    Titel:

Richtig. Mir geht es auch um die Möglichkeiten der performanten Umsetzung, da ja nicht nur eine, sondern 5 oder 10 Kameras in einem Level sein werden (Perfirmance Optimierung noch nicht eingerechnet). Wenn du sagst "normale Schatten", was vollkommen korrekt ist, hast du dann eine spezielle Technik für wp7 im Kopf? Wie gesagt, ich sammel technische Möglichkeiten.

EDIT: Schon jmd. Erfahrung mit Matrix.CreateShadow?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden


DiNoGames
XNA.mag - Team


Anmeldedatum: 25.02.2008
Beiträge: 2796
Wohnort: Bremen

Antworten mit Zitat
BeitragVerfasst am: 24.02.2012, 15:15    Titel:

Also zum einen macht es schon SEHR viel aus, wenn Du die Rendertargets, in denen Du die Kamerasichten erzeugst so klein wie möglich hältst. Das spart unheimlich an Performance. Ich würde eher dann das Rendertarget hochskalieren und den Kameramonitor dann mit nem schönen Monitoreffekt versehen (Balken der auf und ab wandert oder zwischendurch mal Schnee für ne halbe Sekunde etc).

Ein weiterer Punkt wäre, wenn Du 5 Kameras hast, dann brauchst Du sicher nicht jede Kamera mit voller Framerate rendern. Ich würde pro Frame immer nur eine Kamera aktualisieren und dann rotieren... also Frame 1 aktualisierst Du Kamera 1, Frame 2 Cam 2, Frame 3 Cam 3, 4-4, 5-5, 6 dann wieder Cam 1 usw.
Auch das spart unheimlich Performance.

Mit diesen beiden Tricks dürften 5 Kameras absolut kein Problem sein. Ich frage mich allerdings, wie Du auf dem kleinen Phone-Bildschirm Gameplay und 5 Kameras darstellen willst und das ganze noch spielbar und bedienbar bleiben soll?
_________________


DiNoGames on Facebook - LIKE IT!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen ICQ-Nummer


Glatzemann
XNA.mag - Team


Anmeldedatum: 24.07.2009
Beiträge: 7453
Wohnort: Leverkusen

Antworten mit Zitat
BeitragVerfasst am: 24.02.2012, 16:38    Titel:

@Dirk: Ich glaube du bist auf dem falschen Weg und hast es immer noch nicht richtig verstanden.

@FlashMuller: Es geht doch nicht darum, dass Bild der Überwachungskameras darzustellen, sondern darum, dass du (so wie in Commandos) den Bereich visualisieren willst, den die jeweilige Kamera einsehen kann, oder?

Wenn ja, was spricht gegen die Lösung, die ich erklärt habe?
_________________
MVP · "Mit ohne Haare" · indiedev

Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen


FlashMuller
Member


Anmeldedatum: 14.03.2011
Beiträge: 167

Antworten mit Zitat
BeitragVerfasst am: 24.02.2012, 17:28    Titel:

Hallo Glatzenmann,
deine Interpretation meiner Anforderung ist richtig, und gegen deinen Vorschlag spricht nichts (und ich werde ihn ausprobieren). Ich wollte nur, für den Fall das DinoGames noch eine andere Inspiration im Petto gehabt hätte, diese herauskitzeln um mich mit verschiedenen Techniken auseinander setzen zu können.
Aber dein Vorschlag wird auf jeden Fall auch getestet.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden


DiNoGames
XNA.mag - Team


Anmeldedatum: 25.02.2008
Beiträge: 2796
Wohnort: Bremen

Antworten mit Zitat
BeitragVerfasst am: 24.02.2012, 17:34    Titel:

Also, da ich nie Commandos gespielt habe, hab ich mir eben nochmal auf Youtube Videos reingezogen. Geht es also einfach nur um die grünen Sichtfelder die über die Szene gelegt sind? Das sind stinknormale Kegelgrafiken. Die werden (zumindest in dem Commandos 2 Video das ich gesehen habe) nicht mal beschnitten wenn ein Haus im Weg ist oder so...

Je nach gewünschtem Effekt kannst Du einfach eine Plane mit einer transparenten Kegeltextur überziehen oder so wie Glatzemann schon sagte, quasi das Frustum der Kamera transparent rendern, wobei man beachten sollte, dass es ja keine wirklich Kamerasicht ist, denn die hätte einen so weiten Sichtwinkel, dass man das wahrscheinlich schon taktisch kaum noch umgehen könnte. In dem Commandos Video ist das auch nur ein 40° Kegel oder so... das menschliche Auge oder eine Kamera könnten einen viel größeren Sichtbereich sehen.
_________________


DiNoGames on Facebook - LIKE IT!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen ICQ-Nummer


JeReT
Member


Anmeldedatum: 19.07.2007
Beiträge: 3263
Wohnort: µnchen

Antworten mit Zitat
BeitragVerfasst am: 25.02.2012, 01:40    Titel:

Wenn ich das richtig verstanden habe, ist dein Spiel zwar in 3D, die Spielmechanik funktioniert aber eigentlich in 2D.
Wenn das so stimmt, dann hab ich mal wieder meine Standard-Antwort parat (ich entschuldige mich schonmal bei denen, die diese antwort langsam nervt... leider - oder besser: coolerweise - passt sie so oft wie die faust aufs Auge):
Benutze doch einfach meine Shapes Library.

Du kannst quasi alle 3D Vectoren in 2D umwandeln, indem du die Höhe rausnimmst. Dann kannst du die Shapes sehr leicht für die Kollisionserkennung verwenden. Die Kamera bekommt ein Polygon in trapezform, die Spielfigur bekommt eine Ellipse verpasst und alle räumlichkeiten bzw.Wände bestehen aus Rects oder polygonen.
Falls deine Kameras nicht in die Räume hinter den Wänden schauen sollen, kannst du entweder das Sichtfeld-Polygon an Wänden entsprechend abändern (die Logik dafür müsstest du aber selber implementieren), oder es gibt eben bestimmte bereiche definiert (wieder shapes), die von der jeweiligen Kamera nicht gesehen werden können.
Zeichnen kann man die Shapes momentan entweder, indem man eine Textur daraus generiert (was recht viel zeit braucht, also nur zur Ladezeit in frage kommt), oder indem man ihre Umrandung per Primitiven zeichnet (Das sollte auch in 3D funktionieren - man kann eine View-Matrix einstellen). Eine gefüllte Fläche geht noch nicht als primitiven, ist aber in planung (und kann außerdem selber implementiert werden. Für ein Viereck sollte das ziemlich leicht gehen).
_________________
Idea Shapes
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen Yahoo Messenger MSN Messenger ICQ-Nummer


FlashMuller
Member


Anmeldedatum: 14.03.2011
Beiträge: 167

Antworten mit Zitat
BeitragVerfasst am: 27.02.2012, 11:50    Titel:

Momentan versuche ich erstmal die Glatzenmann-Lösung. Allerdings komme ich nicht zu der Lösung wie ich das BoundingFrustum rendern könnte. Wenn man BoundinFrustum und rendern sucht, bekommt man logischer Weise eine Menge Artikel zu anderen Themen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden


Glatzemann
XNA.mag - Team


Anmeldedatum: 24.07.2009
Beiträge: 7453
Wohnort: Leverkusen

Antworten mit Zitat
BeitragVerfasst am: 27.02.2012, 11:53    Titel:

Nimm doch einfach einen Würfel der hinten klein ist (Kamera-Linse) und am anderen Ende größer. Einfach eine Pyramide, deren Spitze abgeschnitten ist...
_________________
MVP · "Mit ohne Haare" · indiedev

Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen


FlashMuller
Member


Anmeldedatum: 14.03.2011
Beiträge: 167

Antworten mit Zitat
BeitragVerfasst am: 27.02.2012, 12:47    Titel:

Vll. Stehe ich ja auf dem Schlauch, aber das würde die Abschattung durch Objekte doch aussen vor lassen?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden


Glatzemann
XNA.mag - Team


Anmeldedatum: 24.07.2009
Beiträge: 7453
Wohnort: Leverkusen

Antworten mit Zitat
BeitragVerfasst am: 27.02.2012, 12:52    Titel:

Nein, wenn du dort einfach z.B. ein halbtransparentes Grün oder Rot nimmst, dann sollte das schon einen ganz guten Effekt liefern. Der Tiefenpuffer etc. kümmert sich dann um den Rest Wink
_________________
MVP · "Mit ohne Haare" · indiedev

Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen


Beiträge der letzten Zeit anzeigen:   
 
Neue Antwort erstellen Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de