Skin für 3D (2 Viewers)

Scythe42

Retired Team Member
  • Premium Supporter
  • June 20, 2009
    2,065
    2,703
    51
    Berlin
    Home Country
    Germany Germany
    Also im Moment wird die RenderEngine langsam Schritt für Schritt ausgetauscht. Noch nicht in GIT als Branch (zu früh dafür). Die RenderEngine ist eine neue komplette 3D Engine für das was MP braucht (also Textures, Fonts etc.). Wird dann auch in den Player für PostProcessing eingebunden (z.B. Scaling über Shader). Das ganze kriegt ne API und das ist sehr grosser Arbeitsaufwand muss im Moment abwärtskompatibel sein...

    Bin schon recht weit damit... Aber nicht releasebar, da im Moment nur auf ATI und cacht beim Start ALLES! Also ich lade bei mir 2 GB in die GPU im Hintergrund inkl. aller Banner/Poster/FanArt whatever. Spiele im Moment auf Triple Cross Fire bei einem Freund, der bei einem Kistenschieber arbeitet. Da kann ich immer mal wieder auf so Kisten testen. Jenseits der 2000 fps im 1080p SBS Coverflow mit Ken Burns Backdrops. Wird aber deutlich weniger werden durch diversen Overhead der entstehen wird bei der Einbindung. 1080p 60fps 3D sollten aber in Angesicht der einfachen Geometrien und wenigen Texturen kein Thema sein.

    Natürlich lassen sich Skins mit Geometrien bauen für die man High-End Gamer GPUs braucht. Wer weiss, vielleicht macht jemand mal so ein Skin...

    Mit 2 oder 3 zwischen 2D und 3D Darstellung (SBS LR/SBS RL/Top&Bottom/Frame Packing) wählen (oder immer). Dann wird entsprechend da Bild gestaucht und nebeneinander gesetzt (bei SBS). Und schon sieht man alles vernünftig in 3D. GPU muss hier natürlich doppelt so viel machen (nicht wirklich richtig, aber so versteht es auch der D3D Laie).

    Einen Event gibt's auch wenn Plugins wissen wollen, in welchem Modus MP ist. Automatisches erkennen ob ein Inhalt 3D ist, ist nahe zu unmöglich. Nur bei wenigen Formaten/Streams kann man das sehen oder an der Auflösung erkennen (> 1080p).

    Das war es auch schon. Die Features gehen der Reihe nach in Area 51. Wg. längerem Krankenhausaufenthalt wird's wohl Q1 werden bis alles da ist, statt später Herbst. Wird auf 1.3 Beta/Final aufbauen, so dass Leute testen können bis es stable ist.

    Anschliessend geht's vom XML Skinning (wie bisher) in richtiges 3D Skinning mit 'nem Editor. Und wenn man dann richtige Z Positionen hat, dann gehen auch 3D Skins. Einziges wo ich was mache ist Coverflow, der ist direkt in 3D out of the Box. Und natürlich Support für Cover/Banner/Poster/Backdrops in 3D, sprich zwei Versionen. Eine für's rechte und eine für's linke Auge (sieht IMHO schrecklich aus, aber wer's will). Gibt's nur eine, wird nur diese verwendet, der Rest ist halt das Placement der einzelnen Geometrien. Die Texturen wiederum sind ein anderes Thema, das soll man mal Designern überlassen. Kann nur Möglichkeiten aufzeigen. Ob sie sinnvoll von jemandem genutzt werden können ist ein total anderes Thema.

    Zu erst muss aber die Render Engine und API fertig werden und mit dieser alles wie bisher laufen. Dann gutes Caching und so weiter und so fort. Alles schön nacheinander. Aber ist die Render Engine erstmal da, wird der Rest viel einfacher. Momentan alles DirectX9. Früher oder später wird da aber DirectX11 draus, wenn wir XP Support in die Tonne werfen. Irgendwann muss es so weit sein. Einfach nur weil's sich in vielen Bereichen einfacher coded und mehr Shader existieren. Wird dann passieren, wenn etwas kommt, das man in D3D9 nicht mehr richtig machen kann. Beides mach ich nicht, ist Blödsinn für MP.

    Könnte man in die 3D Features von der Unreal Engine oder CryEngine in der freien Version eingreifen hätte ich einfach diese genommen. Aber was wir bräuchten gibt's nur in der kommerziellen Version. Kann mich nicht da einklinken wo ich will. Zu doof. Hätte eine Menge Arbeit gespart. Aber so hab ich wenigstens D3D gelernt.

    Problem wird mit dem Mini Player geben. Da kann man das Bild schlecht splitten und nur auf einer Seite anzeigen, weil man nicht weiss was es ist. OK, damit kann man IMHO leben bis einer mit einer passenden Idee kommt. Ich hab keine, wie ich das immer 100%ig feststellen soll. Evtl. wird im 3D Modus nur ein Platzhalter angezeigt. Ich weiss nicht. Wir werden sehen.

    So viel als Spoiler zu meiner Planung. Alles Subject of Change natürlich.

    Ansonsten Füsse still halten. Es kommt, wenn es so weit ist.

    Muss aber im der Engine wieder was auf den Boden zurück kommen. Hab mich in Dinge wie Global Illumination, G-Buffer Format, Transparenz, Atmospheric Scattering und diversen anderen Dingen völlig in die Ecke gecoded. Bekomme ich nicht so sauber im Moment hin ohne daran wirklich Fulltime für paar Monate zu arbeiten.

    Das sah dann so aus, war aber zu lahm und sah nicht immer richtig aus:
    screen.png


    In jedem Falle trete ich XBMC in Sachen "Snappiness" so was von in den Allerwertesten!

    PS: Für die "Kühe" unter euch etwas für DirectX10 als Anhang (starten, 10-20 Sekunden warten für Geometrie Berechnung, WASD movmement) - Nicht sooo stabil allerdings.
     

    Attachments

    • Grass.zip
      22.3 MB
    Last edited:

    Marcus Venturi

    MP Donator
  • Premium Supporter
  • March 23, 2012
    614
    745
    57
    Home Country
    Germany Germany
    WOW! :)

    Das ist wirklich nett. Bin schon sehr gespannt!

    Bezüglich der 3D-Erkennung habe ich meinen Algorithmus gestern Abend mal weiter entwickelt. Bei den 5 3D-Filmen die ich gestern probiert habe liegt die Erkennungsquote bei 100%. Habe auch kritische Stellen innerhalb der Filme ausgewählt. In Schnitt benötige ich 2-3 Sekunden für die 3D/2D Erkennung. Vielleicht ließe sich das ja in MediaPortal übernehmen, dann könnte MediaPortal sowohl die Skin, als auch einen eventuell angeschlossenen Fernseher/Beamer umschalten. Werde in den nächsten Tagen auch mal mit den von dishwascher erwähnten Astra 3D-Demokanal testen ob das klappt.

    Zur Darstellung des Mini Players hätte ich noch ein paar Anregungen. Da das Overlay selbst direkt in der Hardware stattfindet und keine Aufteilung der Halbbilder unterstützt gäbe es 2 Möglichkeiten die Probleme zu umgehen. Entweder über einen EVR-Filter - da gibts im Internet zahlreiche Beispiele für SampleGrabber - oder über einen eigenen EVR-Presenter. Sobald von Fullscreen auf das Mini-Fenster umgeschaltet wird, müsstest Du das Overlay "verstecken" und den Datenstrom - vielleicht mit 30fps - selber abgreifen. Den gegrabbten (was für ein Wort) Inhalt könntest Du dann wiederum klassisch auf deine beiden Hälften blitten. Das kostet zwar je nachdem ob das direkt auf der Karte oder im System Memory abläuft eventuell etwas CPU-Leistung, da das Mini-Overlay aber relativ klein ist, sollte sich der Resourceverbrauch aber in Grenzen halten.

    Die Ansteuerung meines Fernsehers bereitet mir momentan mehr Probleme. Da es keinen direkten Umschaltbefehl gibt, muss ich über eine primitive Tasten-Simulation gehen, d.h. ich schicke nacheinander die Codes der Fernbedienung über die jonitSpace-JSON-Schnittstelle an den Fernseher, was sehr träge ist, weil es keine Synchronisation gibt, d.h. wenn ich einen Menübefehl schicke, dann kriege ich nicht mit wann das Menü offen ist. Das Schlimme ist, das das Öffnen nicht immer gleich schnell geht, manchmal geht sofort, manchmal dauert es 2 Sekunden. Schicke ich dann den nächsten Befehl (z.B. Auswahl eines Menüeintrags) zu früh, dann ignoriert der Fernseher den Befehl. Somit muss ich ziemlich großzügige Delays einbauen, wodurch das Umschalten ein paar Sekunden benötigt. Letztendlich dauert das Umschalten wesentlich länger als die 3D/2D-Erkennung.

    Ist aber auf jeden Fall besser als von Hand umschalten. Auf jeden Fall sieht es sehr lustig aus, wenn - wie von Geisterhand - plötzlich die Menüs aufgehen.
    Habe bei Philips mal angefragt, ob sie die 3D-Umschaltung nicht mit einem eigenen (direkten) Befehl implementieren könnten, mal sehen was dabei rauskommt.

    Als weitere Möglichkeit habe ich schon einen CEC-Adapter in's Auge gefasst:

    http://www.pulse-eight.com/store/products/104-usb-hdmi-cec-adapter.aspx

    Damit ginge die Umschaltung wahrscheinlich schneller. Da aber momentan meine Zeit knapp ist, werde ich das wohl erst im neuen Jahr angehen. Für den Anfang würde die jetztige Umschaltung reichen.

    Auf jeden Fall wünsch ich Dir, dass Du bald wieder fit wirst und freue mich schon auf die neue RenderEngine.
     
    Last edited:

    Scythe42

    Retired Team Member
  • Premium Supporter
  • June 20, 2009
    2,065
    2,703
    51
    Berlin
    Home Country
    Germany Germany
    Ich meinte beim Mini Player z.B. das SBS Bild nehmen und eine Hälfte im Linken Teil des Skins und eine im rechten Teil darstellen, so dass dies auch 3D bleibt. Den Datenstrom selbst hab ich, weil der EVR Presenter zurück an MP gibt, was dann die Overlays rendert.

    Wenn du aber einen gute Erkennungs Modus hast der recht zuverlässlich ist, wäre das schon mal etwas. Kann man dann ja immer noch einbauen bzw. mal ausgiebig testen. Ob das paar Sekunden dauert soll dann mal egal sein. Ist eben eine Option für den User.

    TV/Beamer umschalten:. Ob nun über CEC/IR/Seriell soll mal egal sein. Was über die existierenden Kanäle schicken ist nun kein Problem vom Event aus. Was immer am HTPC und Display vorhanden ist. Allerdings CEC = stark limitiert in Sachen Kommandos. IR leider zu oft auch, da selten discrete Codes zum Umschalten existieren. Und an das was im HDMI Frame mit drin ist kommen wir nicht so einfach dran um dort was einzuschleusen. Aber ich glaube da ist auch nichts drin. Beim Abspielen von Blurays geht z.B. ein Optoma Beamer nicht direkt in den 3D Modus. Muss man auch immer manuell einschalten.

    Das Ganze 3D @ home ist eben ein echt dreckiger Hack der Hersteller gewesen...
     

    Marcus Venturi

    MP Donator
  • Premium Supporter
  • March 23, 2012
    614
    745
    57
    Home Country
    Germany Germany

    Users who are viewing this thread

    Top Bottom