Mehr

Umgang mit Text, der für mehrere Karten gleich bleiben muss, sich aber gemäß der Attributtabelle ändert change

Umgang mit Text, der für mehrere Karten gleich bleiben muss, sich aber gemäß der Attributtabelle ändert change


Wie bei den meisten Dingen von Esri gibt es wahrscheinlich einige Möglichkeiten, mein Problem anzugehen, also hoffe ich, dass jemand einen guten Vorschlag hat, der weder Python noch mystische Beschwörungen erfordert. Ich bin derzeit auf 10.0, werde aber wahrscheinlich in Kürze auf 10.2 umsteigen, daher sind Lösungen für beide willkommen.

Ich habe einen Satz von 10 oder so MXDs, die sich alle auf denselben Bereich beziehen, aber unterschiedliche Dinge darüber zeigen. Die Daten für alle 10 MXDs stammen aus derselben GDB und alle haben unterschiedliche Layouts, die dieselben grafischen Informationen wiederverwenden, aber unterschiedlich gestalten oder bestimmte gemeinsame Informationen in ihrer Umgebung weglassen/einschließen.

Ich möchte dem MXD eine zentrale Tabelle für diese Informationen zur Verfügung stellen, auf die das Layout zugreifen würde, um seine grafischen Elemente zu füllen. Es gibt mehr als 50 Bit grafischen Texts für jede Karte, die für das Layout in einem bestimmten MXD benötigt werden oder nicht.

Driven Pages klingt vielversprechend, scheint aber auf bestimmte Dinge beschränkt zu sein (Speicherdatum, Seitennummer usw.). Als Lo-Fi-Workaround hatte ich eine Point-Feature-Class mit allen darin enthaltenen Daten und unsichtbarer Symbologie erstellt, bei der ich Beschriftungen über dem Punkt platzieren und den Punkt dann an die Stelle auf der Karte verschieben konnte, an der ich die Informationen haben wollte erscheinen. Dies funktionierte bei mehreren MXDs für dasselbe Gebiet in Ordnung, aber als ich 10 Karten für ein neues Gebiet erstellen musste, befanden sich alle meine raumbezogenen Punkte wieder im alten Gebiet und mussten mithilfe topologischer in das neue Untersuchungsgebiet übertragen werden bearbeiten, um sie zusammenzuschieben. Klunky, und ging auch nicht auf Situationen ein, in denen eine Information an einer Stelle auf einer Karte sein musste, sondern an einer anderen Stelle auf einer anderen, in diesem Fall musste ich 2 Punkte mit den gleichen Informationen in ihren Beschriftungen haben… Insgesamt kein toller Ansatz.

Letztendlich möchte ich eine Excel-Datei mit allen grafischen Elementinformationen für ein Gebiet verwalten, 10 MXDs mit unterschiedlichen Layouts dieser Informationen haben, die alle auf diese Excel-Tabelle zugreifen, und wenn es an der Zeit ist, Karten für ein neues Gebiet zu erstellen, erstelle ich eine neue Excel-Tabelle für die allgemeinen grafischen Daten, kopiere meine 10 MXDs, ändere die Links zu den neuen räumlichen Daten und der Excel-Tabelle, und die Karten sind in vollem Gange mit Layouts und neuen Informationen in der Umgebung. Ich wäre genauso glücklich, wenn es eine Attributtabelle mit den grafischen Elementdaten sein müsste, so oder so brauche ich nur eine Tabelle mit Informationen zum grafischen Inhalt, die von Karte zu Karte unterschiedlich gestaltet sind.

Wird dies mit den Driven Pages in 10.2 für mich erledigt? Gibt es eine andere Art und Weise? Jemand hat mich für meine 10.0-Installation an MapBook verwiesen, aber es scheint auch nicht für den Zugriff auf eine zu erstellende Informationstabelle gedacht zu sein.

Alle Vorschläge sind willkommen!

… BEARBEITEN: hmmm… die Python-Lösung scheint sehr kompliziert zu sein, und ich habe die ESRI-Python-Einführungskurse und Programmierkurse besucht, versuche jedoch, einen Weg zu finden, dies ohne sie zu tun. Vielleicht muss man die Python-Bücher aber abstauben…

Aber ich bin mir nicht sicher, ob ich das Problem gut genug erklärt habe, da diese Lösung ein paar Dinge enthält, die ich nicht brauche, also werde ich versuchen, es etwas anders zu erklären.

Das Interessengebiet ändert sich nicht von Karte zu Karte, nennen wir es Gebiet A. Ich habe Karte A, Karte B, Karte C… Jede Karte zeigt Gebiet A, aber jede Karte hat ein anderes Layout. Es gibt gemeinsame Map-Surround-Elemente für jede dieser Maps, und es gibt einige Surround-Info-Bits speziell für Map B, einige speziell für Map C.

Maps A, B und C passieren nicht alle gleichzeitig, ich beginne mit Map A und wenn die Produktion fortschreitet und ich zu Map B und C gehe, kehre ich oft zu Map A zurück, um Änderungen und Aktualisierungen vorzunehmen. Oft sind es die Surround-Infos, die sich ändern, manchmal sind sie räumlich und alles, was ich tun muss, ist die Neuausgabe mit dem neuen räumlichen Zustand.

Nehmen wir an, Karte A hat ein grafisches Textelement in der oberen rechten Ecke, das "License No:" und "ABC123" sagt, Karte B hat auch dasselbe grafische Textelement, aber stattdessen hat es in der unteren rechten Ecke. Karte C muss keine Lizenz-Nr. also lässt es es weg, aber es muss ein grafisches Textelement zeigen, das "Fach:" und "5" sagt, Karte A zeigt auch Fach sowie Lizenz, aber an anderen Stellen auf der Seite. Weder die Lizenznummer noch das Fach sind räumlich, sondern nur Informationen, die in einer Excel-Tabelle gespeichert sind, die alle Informationen über Bereich A an einem einzigen Ort zur Aktualisierung und Anzeige durch Personen ohne ArcMap zusammenfasst.

Sagen wir nun die Lizenz-Nr. ändert sich in "XYZ321" und wird in der Excel-Tabelle von der entsprechenden Person aktualisiert, damit alle ihre jeweiligen Dokumente sehen und aktualisieren können. Momentan muss ich Map A öffnen, das grafische Textelement finden und den Text darin in "XYZ321" ändern, dann Map B öffnen, das Element dort finden und auch manuell ändern. Ich muss diese Karten nicht sofort ausgeben, stellen Sie nur sicher, dass die Informationen synchron bleiben. Irgendwann werde ich jede Karte neu ausgeben, aber separat, da sie mit den neuesten Daten angefordert werden.

Idealerweise möchte ich nicht jede Karte mit diesem grafischen Element öffnen und den Text manuell ändern müssen, ich möchte, dass der Text des Felds aktualisiert wird, als ob ich einen .mdb-Tabellenattributwert in Access geändert und dann den FC geöffnet hätte in ArcMap und sah die Änderung, da dieses Attribut für die Beschriftung des Features verwendet wurde. Bei diesen grafischen Textelementen gibt es jedoch keine Funktion, die dem Text zugeordnet werden kann, es gibt nur Text in einer Tabelle.

Dieser Ansatz ist ein bisschen wie eine Kalkulationstabelle, bei der eine Zelle einen Verweis auf eine andere Zelle anzeigt, eine Zelle auf einem Blatt ändert und die anderen Zellen an anderer Stelle aktualisiert werden, aber ich möchte dies auf einer Karte zu nicht-räumlichen Objekten tun. Als ob ich sagen könnte "Platzieren Sie ein Textobjekt hier, und damit der Text angezeigt wird, schauen Sie in diese Tabellenzelle".

Scheint eine einfache Idee für eine Software zu sein, bei der es darum geht, dynamische Informationen anzuzeigen, es ist nur die nicht-räumliche Komponente, die das Knifflige scheint.

Zurück zu unserem hypothetischen Beispiel, sagen wir, ich habe jetzt Area B in Produktion und muss mit der Produktion von Map A und Map C beginnen, aber noch nicht von B. Aktuell schnappe ich mir das Excel-Sheet für Area B, kopiere meine Vorlage für Map A und Map C in einen neuen Produktionsordner, öffne sie und muss die Lizenz- und Compartment-Infos aus dem Excel-Sheet manuell in beide Maps in die entsprechenden Areas übertragen. Es wäre toll, wenn ich nur meine Vorlagen für Map A und Map C kopieren, sie öffnen und auf die Tabelle Area B verweisen müsste, und Lizenz/Fach würde automatisch mit dem Text aus der Tabelle ausgefüllt.

Wie ich im ursprünglichen Beitrag erwähnt habe, kann es mehr als 50 Informationsbits geben, die als grafisches Element auf jeder Karte erscheinen können, und es gibt mehr als 10 Kartenvorlagen, in denen ich über einen langen Zeitraum hin und her springe, während ich in Produktion. Eine Möglichkeit zu finden, eine Karte nicht mehr öffnen zu müssen, das grafische Textelement zu finden, es manuell auf den Wert zu ändern, den ich in der Tabelle nachschlage, zu speichern, zu schließen und die nächste Kartenvorlage zu öffnen, um denselben Textaustausch durchzuführen, wäre brillant.

Vielleicht ist Python die einzige Möglichkeit, dies innerhalb der Grenzen von ArcDesktop zu tun, hoffentlich nicht.


Dies scheint für eine datengesteuerte Seitenlösung zu kompliziert zu sein. Der folgende Workflow verwendet Python/Arcpy.

  1. Erstellen Sie eine grafische Nachschlagetabelle, die die folgenden Spalten/Informationen enthält:

MapArea | AreaOfInterestFCPfad | Textname | TextPositionXY | Textgröße | Textfarbe

  1. Erstellen Sie ein Python-Skript-Tool, das den Benutzer auffordert, aus einem Dropdown-Menü des Kartenbereichs auszuwählen
  2. Sobald das Skript ausgeführt wird, verwendet es den gefundenen MapArea-Namen als Skriptparameter und führt einen Suchcursor/Filter in der Grafiktabelle durch, um die anderen zugehörigen Informationen zu sammeln (z (s) (verwenden Sie arcpy, um den Namen des Textelements zu suchen und zu ändern), TextPositionXY (verwenden Sie arcpy, um das Textelement zu positionieren)… usw.)
  3. Verwenden Sie als Nächstes arcpy, um das PDF der Karte zu exportieren, nachdem alles eingestellt ist
  4. Verwenden Sie schließlich Python, um zum nächsten Kartendokument zu gelangen, und wiederholen Sie die Schritte 3 und 4 für jedes Kartendokument

Der folgende Link bietet Ihnen einen Einstieg in die Grundlagen, Klassen und Funktionen von Python:

Eine kurze Tour durch ArcPy


Text, der aus div fließt

Wenn der Text ist ohne Zwischenraum und mehr als die div-Größe 200px es fließt heraus Die Breite ist als 200px definiert Ich habe meinen Code hier http://jsfiddle.net/madhu131313/UJ6zG/ Sie können die folgenden Bilder sehen bearbeitet: Ich möchte, dass der Text in die nächste Zeile springt


13 Antworten 13

Sie möchten das Kamera-Ansichtsfenster auf Hoch- oder Querformat beschränken (je nach Ihren Anforderungen), indem Sie die Eigenschaft camera.orthographicSize berechnen, damit Sie Ihre 2D-Szene unabhängig von Seitenverhältnis und Auflösung erstellen können:

Wenn Sie mehr Informationen dazu benötigen, fragen Sie bitte und ich werde antworten. ) Grüße und Prost.

AKTUALISIEREN: Verwenden Sie das Objektverankerungsskript von Eliot Lash zusammen mit diesem, um bei Bedarf Objekte an Schlüsselpositionen auf dem Bildschirm zu platzieren (relativ zu Bildschirmecken/-rändern).

Vorschau, die Bildschirme mit verschiedenen Seitenverhältnissen simuliert:

Normalerweise benötigen Sie keine unterschiedlichen Größen von Assets - importierte Texturen und Sprites mit automatisch generierten Mip-Maps sehen gut aus, wenn sie mit einer Größe gerendert werden, die kleiner oder gleich der ursprünglichen Pixelgröße des Bildes ist.

Das Szenenlayout ist die Herausforderung. Ein guter Ansatz ist wie folgt (und zu Ihrer Information verwende ich eine 3D-Kamera, die 2D-Inhalte betrachtet, die bei z = 0 positioniert sind):

  1. Entscheiden Sie sich willkürlich für eine minimale "logische" Anzeigegröße in Pixeln oder Kacheln. Dies muss keiner realen Auflösung entsprechen, aber es sollte spiegeln das schmalste/kürzeste Seitenverhältnis wider, das Sie unterstützen möchten. Für ein Spiel im Querformat würde ich beispielsweise nicht 480 x 320 wählen, da dies ein breiteres Seitenverhältnis als das iPad ist. Ich könnte also 1024 x 768 - oder sogar 480 x 360 wählen, was mir ein originales Koordinatensystem in iPhone-Größe zum Arbeiten und das gleiche Seitenverhältnis wie jedes iPad (einschließlich iPad Air 2 usw.) gibt. Beachten Sie auch, dass Sie genauso gut in Kachelkoordinaten als in Pixelkoordinaten arbeiten können - zum Beispiel 15x11,25.
  2. Programmieren Sie Ihre Spiellogik so, dass alles Wichtige innerhalb Ihrer minimalen Displaygröße positioniert ist (oder platziert werden kann), aber seien Sie bereit, zusätzlichen Raum an den Seiten mit zusätzlichem Inhalt zu füllen, selbst wenn es nur dekorative Füllung ist.
  3. Bestimmen Sie, wie stark Sie Ihren Inhalt skalieren müssen, damit entweder die Breite oder die Höhe dem Mindestwert entspricht und die andere Achse größer oder gleich dem erforderlichen Mindestwert ist. Um diese "Anpassung skalieren" durchzuführen, dividieren Sie die Bildschirmpixelgröße durch die minimale Anzeigegröße und nehmen Sie den kleineren der resultierenden Skalierungswerte als Gesamtansichtsmaßstab.
  4. Verwenden Sie den Ansichtsmaßstab, um die effektive (tatsächliche) Anzeigegröße für spiellogische Zwecke zu berechnen.
  5. Skalieren Sie Ihren Inhalt tatsächlich, indem Sie die Kamera entlang der Z-Achse bewegen.

Wenn Sie die Balken verwenden, ist es eigentlich ziemlich einfach zu implementieren (ich poste dies, obwohl das OP der Meinung war, dass es inakzeptabel ist, da es den Vorteil hat, dass es auf dem Handy nicht annähernd so schlimm ist und es eine einfache Lösung ist, die erfordert keinerlei Code)

Camera.orthographicSize ist eine Variable innerhalb der Orthokamera (die die meisten 2D-Spiele verwenden), die der gemessenen Anzahl von Spieleinheiten vertikal auf dem Bildschirm entspricht (geteilt durch 2) (Quelle). Wählen Sie daher ein Seitenverhältnis, das für die überwiegende Mehrheit der Geräte geeignet ist (ich habe 16:9 gewählt, da die meisten von mir recherchierten Bildschirme 16:9, 16:10, 3:2) sind, und fügen Sie eine Maske hinzu, die das in einem Verhältnis überlagert.

In meinem Spiel (hier nicht aufgeführt, da dies keine Werbung ist, kann auf Wunsch in Kommentaren nachgefragt werden) verwenden wir den Porträtmodus. Um ein schönes einfaches 16:9 zu machen, habe ich meine Ortho-Kamera auf Größe 16 gemacht. Das bedeutet, dass die Kamera 32 Spielhöheneinheiten (y: 16 bis -16 in meinem Fall) an die Vertikale des Geräts des Bildschirms anpasst.

Ich habe dann schwarze Masken mit einem Spiel zwischen -9 und +9 platziert. Voila, der Bildschirm des Spiels sieht auf allen Geräten genau gleich aus und auf Geräten, die etwas breiter sind, etwas schmaler. Ich habe absolut keine negativen Rückmeldungen zu den Masken erhalten. Um Querformat zu machen, drehen Sie einfach diese Werte um und dann würden Sie die Kamera der Größe 9 machen. Ändern Sie die Werte so, dass sie mit dem übereinstimmen, was Sie für Ihre Spieleinheitsskalierung entschieden haben.

Der einzige Ort, an dem wir beobachtet haben, dass der schwarze Balken deutlich sichtbar ist, ist auf dem iPad bei 3:2. Selbst dann hatte ich keine Beschwerden.

Ich mache das in einem Spiel, an dem ich gerade arbeite. Ich habe ein Hintergrundbild mit 1140 x 720. Die wichtigsten Bits (die niemals beschnitten werden sollten) sind im mittleren Bereich von 960x640 enthalten. Ich führe diesen Code in der Startfunktion meiner Kamera aus:

Ich definiere auch andere Größen als die Schriftgröße für Schaltflächen und dergleichen. Es funktioniert gut auf jedem Seitenverhältnis, das ich getestet habe. Es ist schon eine Weile her, seit ich es eingerichtet habe, daher fehlt mir möglicherweise ein Schritt. Lassen Sie mich wissen, wenn es nicht wie erwartet funktioniert und ich schaue, ob ich etwas ausgelassen habe.

@Marcels Antwort und Code sind großartig und haben mir geholfen zu verstehen, was passiert ist. Es ist die endgültige Antwort. Ich dachte nur, jemand könnte auch nützlich sein, was ich für meinen speziellen Fall gemacht habe: Da ich etwas wirklich sehr einfaches wollte, ein Sprite immer auf dem Bildschirm zu sehen, habe ich mir diese paar Zeilen einfallen lassen:

Ich habe dies der Kamera hinzugefügt und mein Sprite (das ist mein Hintergrund) auf die einzige Eigenschaft des Skripts gezogen. Wenn Sie keine schwarzen Balken (horizontal oder vertikal) möchten, können Sie einen größeren Hintergrund hinter diesen setzen.

Es gibt einige Möglichkeiten, dieses Problem anzugehen, und es gibt keine perfekte Lösung (zumindest habe ich noch keine gefunden) und die Art der Lösung, die Sie wählen, hängt stark von der Art Ihres Spiels ab Entwicklung.

Unabhängig davon, was Sie tun, sollten Sie zunächst die niedrigstmögliche Auflösung auswählen, die Sie unterstützen möchten, und Ihre Sprites auf diese Auflösung aufbauen. Wenn Sie also daran interessiert sind, für iOS zu entwickeln, beträgt die niedrigste iOS-Geräteauflösung laut http://www.iosres.com/ 480 x 320.

Von dort aus können Sie die Sprites hochskalieren, um die höheren Auflösungen zu erfüllen. Der Nachteil dabei ist, dass Sie irgendwann feststellen werden, dass die Sprites mit zunehmender Skalierung verschwimmen. In diesem Fall können Sie zu einem anderen Satz von Sprites wechseln, der für höhere Auflösungen erstellt wurde.

Oder Sie können die Skalierung vollständig ignorieren und einfach mehr vom Spielbildschirm für höhere Auflösungen anzeigen (ich glaube, Terraria macht das zum Beispiel so). Für viele Spiele ist dies jedoch beispielsweise nicht für kompetitive Spiele geeignet.

Die Verwendung von schwarzen Balken oben oder unten ist heutzutage inakzeptabel.

Ist es? Viele Spiele, die 4:3-Seitenverhältnisse erzwingen möchten, tun dies. Da Sie Unity verwenden, können Sie dabei das Skript AspectRatioEnforcer verwenden.

Es gibt mehrere Möglichkeiten, dieses Problem zu lösen, es hängt von Ihrem Spiel ab und was am besten funktioniert. Bei unserem Spiel Tyrant Unleashed haben wir zum Beispiel einfach breite Karten mit unwichtigen Details an den Seiten erstellt, sodass es in Ordnung ist, die Seiten bei schmaleren Geräten abzuschneiden. Andere Spiele sind jedoch möglicherweise besser mit einem Ansatz, bei dem Sie Schaltflächen oder etwas verschieben, um besser auf den Bildschirm zu passen.

(Auch Teil unseres Ansatzes ist es, auf allen Geräten eine einheitliche Höhe beizubehalten, nur die Breite zu variieren. Dies erleichtert uns sicherlich das Leben, aber auch dies kann für Ihr spezielles Spiel gut sein oder auch nicht. Es spielt keine Rolle in unseren Kunststil, wenn die Bilder auf verschiedenen Bildschirmen ein wenig skaliert werden, während dies für so etwas wie Pixelkunst von Bedeutung sein könnte. Im Grunde ist dies der Ansatz "lass Unity handhaben")

Ich verwende das folgende Skript, das der Kamera einen targetAspect-Parameter hinzufügt und ihre orhgraphicSize in Bezug auf das Bildschirmverhältnis anpasst (mehr Details in diesem Blog-Beitrag):

Meine Methode ähnelt größtenteils den von anderen gegebenen Lösungen :) Ich werde versuchen, den Ansatz, den ich verfolge, um das Spiel unabhängig von der Bildschirmgröße zu machen, im Detail zu erklären.

Bildschirmausrichtung

Abhängig von der Bildschirmausrichtung (Querformat oder Hochformat) müssen Sie berücksichtigen, ob die Kamera mit einer festen Höhe oder einer festen Breite skaliert. Meistens wähle ich eine feste Breite für Spiele im Querformat und eine feste Höhe für Spiele im Hochformat.

Kameraskalierung

Wie besprochen kann dies entweder eine feste Höhe oder eine feste Breite sein.

Feste Höhe: Der vertikale Bereich des Spiels passt sich immer der Bildschirmhöhe an. Und wenn sich das Seitenverhältnis des Bildschirms ändert, wird links und rechts des Bildschirms zusätzlicher Platz hinzugefügt. Um dies zu implementieren, müssen Sie nichts codieren, dies ist das Standardverhalten der Unity-Kamera.

Feste Breite: Der horizontale Bereich des Spiels entspricht immer der Bildschirmbreite. Und zusätzlicher Platz wird oben und unten hinzugefügt, wenn sich das Seitenverhältnis des Bildschirms ändert. Um dies zu implementieren, müssen Sie einen kleinen Code schreiben. Stellen Sie später sicher, dass Sie die Aktualisierungsfunktion für das Codeformular entfernen und in den Modus "Wake" stellen.

Im Editor können Sie die targetWidth ändern, um den anzuzeigenden Weltraumbereich zu definieren. Dieser Code wird im folgenden Video zusammen mit vielen anderen Praktiken für 2D-Spiele erklärt :)

Seitenverhältnis

Das folgende Seitenverhältnis ist vom breitesten bis zum schmalsten aufgelistet und deckt fast alle Bildschirmgrößen für Android und iOS ab

Normalerweise stelle ich alle diese Seitenverhältnisse in der angegebenen Reihenfolge unter dem Spielfenster ein, da es beim Testen für verschiedene Bildschirmgrößen praktisch ist :)

Verbrauchbarer Bereich

Dies ist der Bereich, der je nach gewählter Kameraskalierung seitlich oder oben/unten zum Bildschirm hinzugefügt wird.

Für eine feste Höhe sollten alle Spielelemente vorzugsweise in das 16:9-Verhältnis passen, das am schmalsten ist. Und der Hintergrund sollte sich erstrecken, bis er das Verhältnis 5:4 abdeckt. Das stellt sicher, dass Ihr Spiel niemals schwarze Streifen an den Seiten hat.

Für feste Breite ist es fast das gleiche, aber hier sollten die Elemente im Verhältnis 5:4 passen und das BG sollte bis 16:9 reichen.

Manchmal können wir den Verbrauchsbereich-Ansatz nicht verwenden, da wir den gesamten verfügbaren Bildschirm für das Spiel nutzen müssen.

Betrachten Sie zum Beispiel ein Porträtspiel mit fester Höhe, bei dem Sie die vom Himmel fallenden Münzen auffangen. Dabei müssen wir dem Spieler die Möglichkeit geben, sich horizontal über die verfügbare Bildschirmbreite zu bewegen.

Daher benötigen wir die Grenzen der Kamera in Bezug auf die Weltkoordinaten, um zu wissen, wo genau die linke, rechte, obere oder untere Ecke der Kamera an der Weltposition abschneidet.
Wir können diese Grenzen auch verwenden, um Spielelemente oder die Benutzeroberfläche an einer gewünschten Seite der Kamera zu verankern.

Mit Camera.ViewportToWorldPoint können wir die Grenzen erhalten. Der Viewport-Raum ist normalisiert und relativ zur Kamera. Die untere linke Seite der Kamera ist (0,0) die obere rechte ist (1,1). Die z-Position ist in Welteinheiten von der Kamera. Für 2D/orthographisch spielt das z keine Rolle.

Für die Benutzeroberfläche können wir die gleichen Konzepte anwenden, die wir für die Spielelemente verwendet haben. Nach der Einführung der Unity5-Benutzeroberfläche und der Verfügbarkeit von Plugins wie NGUI wird dies kein großes Problem sein :)

Ich habe das Unity-Asset 'Resolution Magic 2D' erstellt, um genau dieses Problem zu lösen (Anzeige: Sie können es im Unity Asset Store erhalten oder weitere Details unter grogansoft.com einsehen).

Ich habe das Problem wie folgt angegangen.

Definieren Sie einen Bereich des Bildschirms, der unabhängig von Seitenverhältnis/Auflösung immer sichtbar sein muss, und verwenden Sie eine einfache Rechtecktransformation, um diesen Bereich zu „schablonieren“. Dies ist Ihre ideale Bildschirmform. Mit einem einfachen Algorithmus zoome ich dann die Kamera, bis der durch das Rechteck ausgeblendete Bereich so groß wie möglich ist und für die Kamera noch zu 100% sichtbar ist.

Dann nimmt Ihr Hauptspielbereich immer so viel Bildschirm wie möglich ein. Und solange genügend „zusätzlicher“ Inhalt (z. B. Ihr Hintergrund) außerhalb des zuvor definierten Rechteckbereichs vorhanden ist, sehen Spieler, deren Bildschirm nicht das gleiche Seitenverhältnis wie Ihr „ideales“ Rechteck hat, den zusätzlichen Inhalt dort, wo sonst schwarze Balken wären gehen.

Mein Asset enthält auch eine Logik zum Platzieren der Benutzeroberfläche, die jedoch aufgrund des neuen UI-Systems von Unity größtenteils veraltet ist.

Mein Asset bietet dies sofort mit minimalem Setup und funktioniert auf allen Plattformen wirklich gut.

Wenn Sie diese Technik (oder mein Vorteil) verwenden, stellen Sie einfach sicher, dass Sie Ihr Spiel so gestalten, dass es rundherum „optionalen“ Platz hat, um Bildschirme aufzunehmen, die breiter oder höher als Ihr Ideal sind (um schwarze Balken zu vermeiden).

Ich persönlich mache keine 3D-Spiele, daher weiß ich nicht, ob das in 3D funktionieren würde (oder ob es überhaupt notwendig ist).

Ohne Bilder ist es wirklich schwer zu erklären, also besuche bitte meine Website (Resolution Magic 2D)

Die beste Lösung für mich ist, das Theorem der sich schneidenden Linien zu verwenden, damit es weder an den Seiten abgeschnitten noch eine Verzerrung der Spielansicht gibt. Das bedeutet, dass Sie je nach unterschiedlichem Seitenverhältnis vor- oder zurückgehen müssen.

Dies ist eine über 5 Jahre alte Frage, aber sie ist immer noch nicht nur sehr relevant, sondern wird im Laufe der Jahre auch immer komplexer, da es heutzutage noch mehr Bildschirmverhältnisse auf mobilen Geräten gibt, als selbst wenn diese Frage gestellt wurde.

Seitdem diese Frage gestellt wurde, wurden in Unity (insbesondere bei Unity 2018) einige zusätzliche Optionen angegeben. Dennoch gibt es einige Tipps & Tricks zum Umgang mit dem Bildschirmverhältnis, damit es passt fast alle Bildschirmgrößen.

Erstens ist die beste universelle Methode ironischerweise die alte Methode: Erstellen Sie dynamisch alle bildschirmbezogenen Assets in Echtzeit, wenn beispielsweise eine Szene gestartet wird. Dies ist vergleichbar mit dem, was für Websites verwendet wird, auf denen Sie basierend auf den Bildschirmgrößen eine andere Art von GUI- und Amp-Erfahrung erstellen. Ein Bildschirm mit weniger als 800 Pixeln würde beispielsweise eine Art von GUI haben, während ein Bildschirm mit mehr als 2000 Pixel eine andere Art hätte. Es ist wirklich zeitaufwendig und relativ komplex zu bauen (daher anfälliger für Bugs und Fehler), bietet aber die beste Vielseitigkeit für jede Art von Setup. Auf diese Weise ist es Ihr Ziel, sicherzustellen, dass alle Tasten und Texte immer groß genug sind, um von Menschen mit großen Fingern gedrückt und / oder von jedermann gelesen zu werden.

Der Hauptunterschied zwischen einer Spiel-Engine (wie Unity) und HTML5 für das Web besteht darin, dass Sie nicht an einer einzigen "Szene" in der Spiel-Engine festhalten, während HTML5 möglicherweise erfordert, dass Sie in einer einzigen arbeiten Webseite, da Umleitungsskripte vom Browser des Benutzers blockiert werden könnten. Dies bedeutet, dass Sie Ihr Spiel mit einer benutzerdefinierten Flash-Szene starten können (z. B. einer benutzerdefinierten Szene, in der Ihr Firmenlogo angezeigt wird) und in dieser Szene ein Häkchen anwenden, das die Bildschirmgrößen erkennt. Danach erstellen Sie Ihr Szenenübergangsskript, um zu entscheiden, welche "Szene" je nach Bildschirmpixelgröße geladen werden soll. Dies ist viel einfacher, als alles in einer einzigen Szene zu skripten.

Der zweite Weg ist recht einfacher und schneller, kann aber je nachdem, wie gut die Optimierung angewendet wurde, einige Auswirkungen auf die Leistung haben. Einfach gesagt, Verwenden eines 3D-Raums (in Unity als "World Canvas" bekannt) basierte GUI kann Ihnen eine Menge Arbeit erspart. Im Gegensatz zu anderen Arten von Canvas wird der World Canvas (3D-basierter Canvas) automatisch an die Höhe des Bildschirms basierend auf seiner aktiven Bildschirmdrehung angepasst. Dies beinhaltet sogar ein eingebautes Anti-Aliasing sowie eine wirklich gute Pixelverhältnis-Konvertierung der Texturen in der GUI, was bedeutet, dass die GUI so aussieht, als ob sie speziell für diese Bildschirmauflösung gemacht wurde, solange jede angezeigte Textur dies tut ' ihre maximale Auflösung nicht überschreiten. Ein weiterer wirklich wichtiger Teil dieser Methode, der im Moment einzigartig ist und nicht mit anderen verwendet werden kann, ist, dass Sie mit dieser Methode auch grundlegende VECTORS-basierte Grafiken verwenden können. Ja, seit einiger Zeit kann Unity SVG-Dateien mit flachen Farben rendern. Es ist nur noch nicht mit der GUI 5.x kompatibel, weshalb dies mit anderen GUI-Methoden nicht funktioniert, da diese die einzige ist, die den richtigen Z-Buffer und ein anderes eingebautes System der Engine zum Rendern verwendet die Benutzeroberfläche (aus diesem Grund können Sie sowohl UI- als auch 3D-Modelle in die Leinwand einfügen). Beachten Sie, dass ich vorerst nur einfache Vektor-basierte Grafiken verwenden kann, wie flache Farben und wirklich einfache Farbverläufe (etwa wie das eingeschränkte HTML5-SVG-basierte Code-Rendering). Es können (noch?) keine Umrisse oder Stile oder irgendeine Art komplexer "gerenderter" Magie gemacht werden.

Der dritte Weg ist schließlich die Verwendung des "Leinwand Scaler"-Komponente auf demselben GameObject wie die Canvas-Komponente. Normalerweise ergibt sich das beste Ergebnis, wenn Sie den UI-Skalierungsmodus "Skalieren mit Bildschirmgröße" verwenden und entscheiden, ob der Bildschirm entweder der Breite oder Höhe des Zielgeräts entsprechen soll. Diese Methode kommt mit einigen Einschränkungen und erfordert, dass Sie etwas entwerfen, das in eine Richtung mit einer großen Auswahl an Bildschirmgrößen gut eingestellt werden kann. Dafür empfehle ich immer die Verwendung von etwas, das ich nenne fraktales UI-Design. Dies bedeutet, dass Sie Ihre Menüs in kleinere Abschnitte schneiden und gleichzeitig die "Tiefe" der Menüs erhöhen ODER ein Menüdesign erhalten, das es Ihnen ermöglicht, begrenzte Informationen gleichzeitig anzuzeigen.

Das beste Beispiel, das ich geben könnte, wie man ein Menü in kleinere Abschnitte schneidet, die die Menütiefe erweitern, ist das Erstellen eines Optionsmenüs mit Registerkarten wie Sounds, Grafik, Gameplay usw. Jede dieser Registerkarten hätte jeweils 1 bis 5 Optionen . Dies lässt sich sowohl auf kleinen als auch auf großen Bildschirmen gut darstellen. Sie opfern vielleicht 60-80 Pixel für die Tabs-Schaltflächen, aber Sie gewinnen ein Vielfaches der verbleibenden Pixelmenge. Die kleinste noch verwendete Android-basierte Bildschirmgröße beträgt beispielsweise 240 x 320 Pixel. Ja, es ist ziemlich klein, aber es wird überraschenderweise immer noch von einigen kleinen Geräten in besiedelten Gebieten Chinas verwendet. Wenn Sie diese vermeiden, vermeiden Sie einen winzigen Teil des Marktes und Sie haben die Wahl. Persönlich konzentriere ich mich normalerweise auf ein Basisverhältnis von 480 x 800 Pixeln als Grundverhältnis und minimale Bildschirmgrößen, aber ich schaue mir ab und zu die GUI in 240 x 320 an, um sicherzustellen, dass sie noch "nutzbar" ist.

Die Qualität der 3. Methode besteht darin, dass Sie das Spiel mit dieser Methode sanft starten und zu einem späteren Zeitpunkt bei Bedarf ein Update installieren können, mit dem Sie die 1. Methode implementieren können. Es ist sehr nützlich, wenn Sie ein knappes Budget und/oder Zeitkontingent haben.

Der Nachteil der dritten Methode (und der ersten) besteht hauptsächlich darin, dass Sie ziemlich viel Mathe machen müssen, wenn Sie versuchen, die Dinge richtig zu synchronisieren. Sprite-basierte Animationen mit der richtigen Aktualisierungsrate basierend auf der Bildschirmgröße zu haben, weil das Sprite über die Bildschirmbreite oder -höhe gekachelt ist, ist wirklich mühsam, ohne Verrücktheit richtig einzustellen.

Als Beispiel hat eines meiner Projekte ein Hauptmenü mit 2 animierten Zahnrädern, die sich drehen und 2 Ketten, die sich nach oben oder unten bewegen, wenn der Benutzer die Menüauswahl ändert. Es ist alles in 2D und die Ketten sind mit 100 % Pixeltreue gekachelt. Dies bedeutet, dass die Kette auf einem kleineren Bildschirm "größer" erscheint, auf einem größeren Bildschirm schlanker, aber sie hat keine seltsamen Pixel, selbst wenn der Bildschirm Tausende von Pixeln in der Höhe erreicht. Die Sprites der Ketten sind jedoch 53x254 und 33x254 und sie sind alle Teil einer einzigen Atlas 1024x1024 Textur. Um die Zeit zu verkürzen, die benötigt wird, um die Benutzeroberfläche richtig zu animieren, habe ich ein allgemeines GUI-Animationsskript erstellt. Etwas, das es mir ermöglicht, einfach eine Liste von GUI-Elementen einzurichten, so dass sie entweder durch Rotation, Sprite-Änderung oder durch Bewegung (Übersetzung) animiert werden können und auf die Aktion dieses Skripts per Referenz aus der Ferne zugegriffen werden kann. Ziemlich geradlinig, wenn Sie mich fragen. Um es halbuniversal zu machen, musste ich jedoch einige zusätzliche Optionen (als boolesche Parameter) hinzufügen, die es mir ermöglichen zu entscheiden, ob die Animation vom Bildschirmverhältnis beeinflusst wird und in welcher Richtung, wenn dies der Fall ist. Ich habe festgestellt, dass dies erforderlich ist, als ich das Hauptmenü auf einem alten LG Android-Telefon ausprobiert habe, das ein heutzutage unbeliebtes Bildschirmverhältnis hat, da die Kettenanimation (die auf der Sprite-Umschaltgeschwindigkeit wie eine Sub-Framerate basiert) ebenfalls 1,4x betrug langsam, während es auf gängigeren Bildschirmverhältnissen (wie Android-Tablets) in Ordnung war, auf denen ich es getestet habe.


7 Antworten 7

Der richtige Weg, dies zu tun, besteht darin, mehrere Tabellen zu verwenden und sie in Ihren Abfragen zu JOIN.

Die person_fruit-Tabelle enthält eine Zeile für jede Frucht, mit der eine Person verknüpft ist, und verknüpft die person_fruit-Tabellen effektiv miteinander, d.h.

Wenn Sie eine Person und alle ihre Früchte zurückholen möchten, können Sie Folgendes tun:

Der Grund dafür, dass es in SQL keine Arrays gibt, ist, dass die meisten Leute es nicht wirklich brauchen. Relationale Datenbanken (SQL ist genau das) arbeiten mit Relationen, und meistens ist es am besten, wenn Sie jedem "Bit an Information" eine Zeile einer Tabelle zuordnen. Wenn Sie beispielsweise denken: "Ich möchte hier eine Liste mit Dingen", erstellen Sie stattdessen eine neue Tabelle und verknüpfen Sie die Zeile in einer Tabelle mit der Zeile in einer anderen Tabelle.[1] Auf diese Weise können Sie M:N-Beziehungen darstellen. Ein weiterer Vorteil besteht darin, dass diese Links die Zeile mit dem verknüpften Element nicht überladen. Und die Datenbank kann diese Zeilen indizieren. Arrays werden normalerweise nicht indiziert.

Wenn Sie keine relationalen Datenbanken benötigen, können Sie z.B. ein Schlüsselwertspeicher.

Lesen Sie bitte mehr über die Datenbanknormalisierung. Die goldene Regel lautet: "[Jeder] Nicht-Schlüssel [Attribut] muss eine Tatsache über den Schlüssel, den ganzen Schlüssel und nichts als den Schlüssel liefern.". Ein Array macht zu viel. Es hat mehrere Fakten und speichert die Reihenfolge (die nicht mit der Beziehung selbst zusammenhängt). Und die Leistung ist schlecht (siehe oben).

Stellen Sie sich vor, Sie haben einen Personentisch und einen Tisch mit Telefonanrufen von Personen. Jetzt können Sie jede Personenzeile mit einer Liste ihrer Telefongespräche versehen. Aber jeder Mensch hat viele andere Beziehungen zu vielen anderen Dingen. Bedeutet das, dass meine Personentabelle ein Array für jedes einzelne Ding enthalten sollte, mit dem er verbunden ist? Nein, das ist kein Attribut der Person selbst.

[1]: Es ist in Ordnung, wenn die verlinkende Tabelle nur zwei Spalten hat (die Primärschlüssel jeder Tabelle)! Wenn die Beziehung selbst jedoch zusätzliche Attribute hat, sollten diese in dieser Tabelle als Spalten dargestellt werden.


Sie können dies in einem einzigen Ersatzbefehl wie diesem tun

Die ( und ) markieren den Regex-Unterausdruck, der mit allem übereinstimmt Innerhalb die ( und ) in der Eingabezeile. Bei der Ersetzung steht 1 für das, was auch immer zuerst (in diesem Fall die nur) markierten Unterausdruck als übereinstimmend markiert.

In Worten könnten Sie den Ersatzbefehl wie folgt beschreiben: Suchen Sie nach einem "(" gefolgt von allem gefolgt von ")". Ersetzen Sie das durch "[" gefolgt von dem gleichen "anything" gefolgt von "]".

Sie können diesen einfachen :s-Befehl verwenden (oder besser zwei :))

Sie können dies sogar in einem Durchgang tun, Sie definieren Ihre Ersetzungen zuerst wie folgt:

Hier definieren wir zunächst ein Wörterbuch mit den Schlüsseln dessen, was Sie ersetzen möchten. Wir brauchen also einen Schlüssel ( mit dem Wert [ da das das gewünschte Ersatzzeichen ist . Außerdem wollen wir den Schlüssel ) mit dem Wert ] .

Dann können wir ein sub-replacement-special verwenden, um das Ersatzzeichen mit dem bereitgestellten Ersetzungswörterbuch dynamisch auswerten zu lassen.


5. Blicken Sie hinter die Kulissen Ihrer Pivot-Tabelle

Hier ist eine weitere Pivot-Tabellen-Technik, die unglaublich einfach ist, Ihnen aber jede Menge Zeit und das Durchsuchen Ihrer Daten spart: Sie können jede Zahl, die in Ihrer Pivot-Tabelle erscheint, einfach durch Doppelklicken detailliert betrachten.

Jason sieht sich beispielsweise eine Pivot-Tabelle an, die seine Bierverkäufe nach Größe und Quartal im Jahr 2017 anzeigt, und er möchte detaillierte Informationen zu seinen Verkäufen von einem halben Fass im ersten Quartal sehen. Er muss nur auf diese Zahl in der Zelle doppelklicken, und Excel öffnet detaillierte Informationen in einem neuen Arbeitsblatt.


JCL, KHG, JK, HRM, SAT, SAL, LTK, JPS, JL und ECL wurden vom Staat Kalifornien unterstützt. JCL, JK, SAT, SAL, LTK, JPS, JL und ECL wurden vom US-Gesundheitsministerium und dem US-Heimatschutzministerium unterstützt. JCL dankt dem Schweizerischen Nationalfonds (200021-172578) und dem beigefügten Mobilitätsstipendium. SAT würdigt die vom US Office of Foreign Disaster Assistance (130492) und den Centers for Disease Control and Prevention (126280) bereitgestellten Mittel. LTK würdigt die von den Centers for Disease Control and Prevention (5U01CK000538-03) und der University of Utah Immunology, Inflammation & Infectious Disease Initiative (26798 Seed Grant) bereitgestellten Mittel. Diese Arbeit wurde auch mit Computing-Service-Credits von Amazon Web Services und allgemeiner vom Johns Hopkins Health System und dem Office of the Dean der Johns Hopkins Bloomberg School of Public Health unterstützt.

Diese Autoren trugen gleichermaßen bei: Joseph C. Lemaitre, Kyra H. Grantz, Joshua Kaminsky, Hannah R. Meredith und Shaun A. Truelove.

Zugehörigkeiten

Labor für Ökohydrologie, Fakultät für Architektur, Bau- und Umweltingenieurwesen, École Polytechnique Fédérale de Lausanne, Lausanne, Schweiz

Abteilung für Epidemiologie, Johns Hopkins Bloomberg School of Public Health, Baltimore, MD, USA

Kyra H. Grantz, Joshua Kaminsky, Hannah R. Meredith, Stephen A. Lauer, Javier Perez-Saez, Justin Lessler und Elizabeth C. Lee

Department of International Health, Johns Hopkins Bloomberg School of Public Health, Baltimore, MD, USA

International Vaccine Access Center, Johns Hopkins Bloomberg School of Public Health, Baltimore, MD, USA

Abteilung für Epidemiologie, Abteilung für Innere Medizin, University of Utah, Salt Lake City, UT, USA

Unabhängig, San Francisco, USA

Unabhängig, Baltimore, USA

Sie können auch in PubMed Google Scholar nach diesem Autor suchen

Sie können auch in PubMed Google Scholar nach diesem Autor suchen

Sie können auch in PubMed Google Scholar nach diesem Autor suchen

Sie können auch in PubMed Google Scholar nach diesem Autor suchen

Sie können auch in PubMed Google Scholar nach diesem Autor suchen

Sie können auch in PubMed Google Scholar nach diesem Autor suchen

Sie können auch in PubMed Google Scholar nach diesem Autor suchen

Sie können auch in PubMed Google Scholar nach diesem Autor suchen

Sie können auch in PubMed Google Scholar nach diesem Autor suchen

Sie können auch in PubMed Google Scholar nach diesem Autor suchen

Sie können auch in PubMed Google Scholar nach diesem Autor suchen

Sie können auch in PubMed Google Scholar nach diesem Autor suchen

Sie können auch in PubMed Google Scholar nach diesem Autor suchen

Beiträge

K.H.G., J.K., H.R.M., S.A.T., L.T.K., J.L. und E.C.L. schrieb den ersten Entwurf des Manuskripts. J.C.L., J.K., K.H.G. und S.A.T. schrieb den Kernmodellcode. K.H.G. und H.R.M. bereitete die handschriftlichen Figuren vor. H.R.M. das ergänzende Material vorbereitet. S.S., J.W., K.K. und J.P.S. trug zur Modell- und Codeoptimierung und Dokumentation bei. J. L. und E. C. L. leitete die Planung, Analyse und Durchführung des Projekts. J.C.L., K.H.G., J.K., H.R.M., S.A.T., S.A.L., L.T.K., J.P.-S., J.L. und E.C.L. zum Studiendesign und zur Analyse beigetragen. Alle Autoren steuerten Modellcode bei und überprüften das Manuskript.

Korrespondierender Autor


Methoden für die Informationsarchitektur

Unser beruflicher und gesellschaftlicher Alltag verlangt selten, dass wir detaillierte Architekturen unseres Wissens und der Verknüpfung dieser Informationsstrukturen erstellen. Doch ohne eine solide und logische organisatorische Grundlage wird Ihre Website nicht gut funktionieren, selbst wenn Ihr grundlegender Inhalt korrekt, attraktiv und gut geschrieben ist.

Es gibt fünf grundlegende Schritte, um Ihre Informationen zu organisieren:

  • Inventarisieren Sie Ihre Inhalte: Was hast du schon? Was brauchen Sie?
  • Einrichtung einer hierarchische Gliederung Ihrer Inhalte und erstellen Sie ein kontrolliertes Vokabular, damit die wichtigsten Inhalte, die Site-Struktur und die Navigationselemente immer konsistent identifiziert werden.
  • Aufteilen: Teilen Sie Ihre Inhalte in logische Einheiten mit modularem Aufbau.
  • Zeichnen Diagramme die die Site-Struktur und die groben Umrisse von Seiten mit einer Liste der wichtigsten Navigationslinks zeigen.
  • Analysieren Sie Ihr System durch interaktives Testen der Organisation mit echten Benutzern, durch Kartensortierübungen, Papier-Prototyping und andere Benutzerforschungstechniken, die nach Bedarf überarbeitet werden.

Inventarisieren und Auditieren von Inhalten

Ein Inhaltsinventar ist eine detaillierte Auflistung grundlegender Informationen über den gesamten Inhalt einer umzugestaltenden Site oder in einigen Fällen einer neu zu erstellenden Site aus vorhandenen Inhaltsressourcen. Obwohl die Erstellung eines Inhaltsinventars oft mühsam und zeitaufwändig ist, ist es ein wesentlicher Bestandteil jeder rationalen Umfangsplanung für ein Webprojekt. Inhaltsinventare sind in der anfänglichen Projektplanungs- und Informationsarchitekturphase am nützlichsten, aber eine detaillierte Inhaltsinventur ist während des gesamten Projekts sowohl für die Planung als auch für den Aufbau der Site nützlich. Das Navigieren durch eine vorhandene Site und das Aufzeichnen von Informationen auf jeder Seite ist detailliert, aber es ist auch einfach, sich auf die Teammitglieder aufzuteilen, die verschiedene Unterabschnitte oder Verzeichnisse der Site durcharbeiten. Die Teammitglieder, die das Site-Inventar erstellen, müssen sowohl Zugriff auf die Site-Seiten in einem Webbrowser haben als auch in der Lage sein, die Site-Struktur im CMS oder auf dem Server anzuzeigen, um sicherzustellen, dass alle Inhaltsabschnitte inventarisiert werden.

Webinhaltsinventare vorhandener Sites haben normalerweise die Form einer Tabellenkalkulationsdatei mit mehreren Arbeitsblättern, die lange Auflistungen jeder Seite der Site sowie wesentliche Merkmale wie den Seitentitel, die URL, die für den Inhalt verantwortlichen Personen usw. enthalten. Jede Seite erhält normalerweise eine Zeile in der Tabelle mit Spalten, die grundlegende Informationen auflisten wie:

  • Eindeutige ID-Nummer für Projektzwecke
  • Seitenname
  • Seitenvorlage oder -typ
  • Abteilungsname
  • URL
  • Kurze Beschreibung
  • Datum der letzten Aktualisierung
  • Inhaltseigentümer

Eine Bestandsaufnahme ist ein wichtiger Ausgangspunkt. Ein strategischer Ansatz bedeutet jedoch, sich auf Inhalte zu konzentrieren, die die Projektziele erfüllen und für die Zielgruppe relevant sind. Um die Entscheidungsfindung zu unterstützen und den Inhalt voranzubringen, fügen Sie handlungsorientierte Spalten in das Inhaltsinventardokument ein, wie z.

  • Aktion (erstellen, bearbeiten, verschieben, löschen)
  • Priorität (hoch, mittel, niedrig)
  • Verantwortliche Person
  • Fälligkeitsdatum
  • Status (zu erledigen, in Bearbeitung, veröffentlicht)

Site-Analyse-Anwendungen wie SEO Spider können bestehende Sites crawlen und automatisch eine tabellenbasierte Auflistung von Seitenüberschriften und URLs für jede Seite der Site erstellen. Es berichtet auch über defekte Links, suboptimale Überschriften- und Markup-Probleme und (wie Sie sich vorstellen können) eine Analyse des Seiteninhalts in Bezug auf die Suchmaschinenoptimierung (SEO).Diese Art von Bericht ist kein Ersatz für ein Inhaltsinventar, kann aber eine Möglichkeit sein, den Prozess der Informationssammlung zu beschleunigen.

Hierarchien und Taxonomien

Hierarchische Organisation ist eine virtuelle Notwendigkeit im Web. Die meisten Sites hängen von Hierarchien ab, um ihre übergeordneten Navigationskategorien zu erstellen, die sich von der umfassendsten Übersicht der Site (der Startseite) nach unten durch immer spezifischere Untermenüs und Inhaltsseiten bewegen. In der Informationsarchitektur erstellen Sie Kategorien für Ihre Informationen und ordnen die Bedeutung jeder Information danach, wie allgemein oder spezifisch diese Information im Verhältnis zum Ganzen ist. Allgemeine Kategorien werden zu hochrangigen Elementen der Informationshierarchie spezifische Informationsblöcke werden in der Hierarchie weiter unten positioniert. Informationsblöcke werden nach Wichtigkeit geordnet und nach Relevanz für eine der Hauptkategorien geordnet. Nachdem Sie in Ihren Inhaltsskizzen eine logische Reihe von Prioritäten und Beziehungen festgelegt haben, können Sie eine Hierarchie von den wichtigsten oder allgemeinen Konzepten bis hin zu den spezifischsten oder detailliertesten Themen aufbauen.

Taxonomien und kontrollierte Vokabulare

Taxonomie ist die Wissenschaft und Praxis der Klassifikation. In der Informationsarchitektur ist eine Taxonomie eine hierarchische Organisation von Inhaltskategorien, die einen spezifischen, sorgfältig entworfenen Satz beschreibender Begriffe und Bezeichnungen verwendet. Wie Ihnen jeder erfahrene Redakteur oder Bibliothekar sagen kann, besteht eine der größten Herausforderungen bei der Organisation großer Informationsmengen darin, ein System zu entwickeln, das konsistent auf dieselben Dinge Bezug nimmt: ein kontrolliertes Vokabular im bibliothekswissenschaftlichen Sprachgebrauch. Eine der wichtigsten Aufgaben des Informationsarchitekten besteht darin, einen konsistenten Satz von Namen und Begriffen zu erstellen, um die Hauptinhaltskategorien der Site, die wichtigsten Navigationslinks und die wichtigsten Begriffe zur Beschreibung der interaktiven Funktionen der Site zu beschreiben. Dieses kontrollierte Vokabular wird zu einem grundlegenden Element der Inhaltsorganisation, der Benutzeroberfläche, der Standardnavigationslinks auf jeder Seite der Site und der Datei- und Verzeichnisstruktur der Site selbst.

Inhalte organisieren

Wenn Sie eine neue Website entwerfen oder eine bestehende umfassend überarbeiten, kann es hilfreich sein, sich von den Details des Inhaltsinventars zu entfernen und einen neuen Blick auf die Organisation Ihrer Informationen und die zugrunde liegenden Paradigmen zu werfen, die Gespräche über Inhalt und Website führen Organisation.

Einige gängige zugrunde liegende Paradigmen für die Site-Organisation sind:

  • Identitätsseiten: Dominiert von projizierter Organisationsidentität und Marketing. Die meisten allgemeinen Unternehmenswebsites fallen in diese Kategorie.
  • Navigationsseiten: Dominiert von Navigation und Links, normalerweise für Websites mit sehr umfangreichen Informationen, wie Nachrichten- oder Referenzseiten.
  • Neuheits- oder Unterhaltungsseiten: Dominiert von Nachrichten und &ldquowas&rsquos Neueren&rdquo wie Buzzfeed oder The Onion.
  • Die Organigramm-Site: Entwickelt um die Organisation des Unternehmens. Abteilungsstandorte sind oft so organisiert, und solange es sich nicht um stark genutzte Servicestandorte handelt, kann dies sinnvoll sein. Oft die Grundlage einer verwirrten oder schlechten Standortorganisation (siehe unten).
  • Service-Sites: Nach Service-, Inhalts- oder Produktkategorien organisiert. Hier sollte immer der schnelle Zugriff auf Services dominieren, wie etwa Helpdesk-Sites oder Enterprise-Personal-Sites.
  • Websites mit visueller Identität: Verwenden Sie Interaktion und visuellen Flash, um die Identität einer Marke zu definieren und ein Publikum hauptsächlich durch visuelle Sensation zu gewinnen. Viele Websites von Restaurant- und Luxuskonsumentenmarken fallen in diese Kategorie.
  • Toolorientierte Seiten: Um eine Werkzeug- oder Servicetechnologie herum organisiert. Google- oder Bing-Suchmaschinen sind offensichtliche Beispiele, aber beliebte Online-Softwaredienste wie Basecamp, Dropbox und Evernote sind andere werkzeugorientierte Websites.

In einem bestimmten Kontext sind einige Paradigmen oder Site-Themen eindeutig besser als andere: Es ist selten ratsam, sich in eine bestimmte Site-Organisation zu verlieben, bevor Sie eine klare Begründung für ihre Verwendung haben oder Ihre Identität so weit projizieren, dass Sie die Motivationen unterordnen und Anliegen Ihrer potenziellen Leser und Nutzer. Gute Websites bieten ein ausgewogenes Verhältnis zwischen den Anforderungen Ihrer Nutzer und der Verbreitung Ihrer Botschaft an die Welt. Es gibt keine Formel, um das richtige Organisationsparadigma zu finden, aber Sie sollten in der frühen Planung immer Ihre bestehenden Vorurteile überprüfen und diese explizit begründen.

Unbeholfene &ldquoOrg-Chart-Sites&rdquo, die nur nach der Art und Weise geordnet sind, wie die Organisation verwaltet wird, sind ein ständiger Witz unter Webdesignern, aber viel weniger amüsant für Benutzer, die das finden, wonach sie suchen, weil sie nicht verstehen, &mdasseine Pflege&mdash organisiert ist. Die überwiegende Mehrheit der Benutzer möchte Produkte, Informationen oder Dienstleistungen von Ihrer Website, aber viele Verwaltungsstrukturen folgen dieser serviceorientierten Organisation nicht.

In manchen besonderen Situationen möchten Benutzer wirklich wissen, wie Sie organisiert sind und finden Kontaktinformationen und Inhalte mit einer Navigation nach Geschäftsbereichen einfacher. In Business-to-Business-Beziehungen (B2B) möchte ein Käufer oder Verkäufer beispielsweise wirklich wissen, wer welche Teile eines Unternehmens verwaltet. Aber in den meisten Fällen spiegeln &ldquoOrg-Diagramm-Websites&rdquo ein schlechtes Verständnis dafür wider, was Ihre Leser und Nutzer von Ihnen benötigen.

Wenn Sie feststellen, dass diese zugrunde liegenden Denkweisen und Managementsilos die frühen Diskussionen über die Standortorganisation vorantreiben oder verzerren, legen Sie sie zur Diskussion und zum Brainstorming auf den Tisch. Jeder hat mentale Modelle, Lieblingsparadigmen und blinde Flecken. Stellen Sie sicher, dass Sie Ihre zugrunde liegenden Annahmen und Vorurteile anerkannt und untersucht haben und das beste Organisationsthema für Ihre Website ausgewählt haben.

Fünf Hutablagen: Themen zum Organisieren von Informationen

In seinem Buch Information Anxiety postuliert Richard Saul Wurman, dass es fünf grundlegende Möglichkeiten gibt, Informationen zu organisieren: die &ldquofünf Hutablagen&rdquo, an denen Informationen aufgehängt werden können.

Kategorie

Ort

Alphabetisch

Kontinuum

Inhaltszuordnung

Auch wenn die Hauptkategorien Ihrer Inhaltsorganisation dem Designteam klar sind, kann es immer noch schwierig sein, zu sortieren, wohin die einzelnen Inhalte gehören oder welches Organisationsschema für Ihre Benutzer am intuitivsten und vorhersehbarsten erscheint. Benutzerforschung kann entscheidend sein, um kontrollierte Vokabulare für die Beschriftung und Navigation zu erstellen.

In großen biomedizinischen Forschungskrankenhäusern gibt es beispielsweise viele Arten von „Ärzten&rdquo (Personen mit Doktorgrad), daher werden Ärzte in der Fachsprache oft als „Ärzte&rdquo unterschieden. Aber die meisten Laien, die medizinische Hilfe suchen, suchen nicht nach „Ärzten&rdquo sie wollen einen Arzt. Sowohl &ldquophysician&rdquo als auch &ldquodoctor&rdquo sind geeignete Begriffe, aber wie und wo Sie die einzelnen Begriffe verwenden, hängt davon ab, was Ihr Publikum erwartet und versteht.

Card Sorting, auch Content Mapping genannt, ist eine gängige Technik zum Erstellen und Auswerten von Inhaltsorganisation und Website-Strukturen sowie zum Klären und Verfeinern von kontrollierten Vokabulare. Bei klassischen Kartensortiertechniken werden Karteikarten mit den Namen der wichtigsten und sekundären Inhaltskategorien beschriftet und einzelne Teammitglieder oder potenzielle Site-Benutzer werden dann gebeten, die Karten zu sortieren und sie auf eine intuitive und logische Weise zu organisieren. Benutzer können auch aufgefordert werden, neue oder bessere Namen für Kategorien vorzuschlagen. Die resultierende Inhaltsskizze jedes Teilnehmers wird aufgezeichnet, normalerweise in einer Tabelle, und alle einzelnen Inhaltsschemata werden auf Gemeinsamkeiten und Bereiche mit größeren Unstimmigkeiten verglichen. Die besten Kartensortierungsdaten stammen aus einzelnen Sitzungen mit repräsentativen aktuellen oder potenziellen Benutzern Ihrer Website. Wenn Sie genügend Teilnehmer haben, führt die Kombination der Ergebnisse jeder Card-Sorting-Sitzung zu einer leistungsstarken Aggregation vieler individueller Urteile darüber, welche Inhaltsorganisation sinnvoll ist. Diese vom Benutzer abgeleiteten (oder vom Benutzer informierten) Kategorie-Taxonomien werden manchmal als &ldquofolksonomien&rdquo bezeichnet, ein Neologismus, der vom Informationsarchitekten Thomas Vander Wal geprägt wurde und &ldquofolk&rdquo und &ldquotaxonomie kombiniert

Kartensortierungsübungen gibt es in einigen Varianten, und die Übungen können mit Gruppen von Teilnehmern durchgeführt werden, die zusammenarbeiten, oder mit einzelnen Teilnehmern, die jeweils für sich arbeiten. Bei der offenen Kartensortierung werden die Probanden aufgefordert, ihre eigenen Namen für die Hauptkategorien und Unterkategorien der Site zu erstellen. Die Themen beginnen in der Regel mit leeren Karteikarten und einer schriftlichen Beschreibung der Site und ihres Zwecks und wahrscheinlichen Inhalts, werden jedoch ermutigt, Hauptkategorien nach eigenem Ermessen zu benennen und Unterkategorien nach ihrer eigenen Logik zu gruppieren, wo die Dinge hinein gehören jede Hauptkategorie. Der Informationsarchitekt, der die Card-Sorting-Recherche durchführt, kombiniert dann die beliebtesten Kategorienamen zu einer Taxonomie. Dies ist oft hilfreich, wenn Sie vermuten, dass Ihr internes Team möglicherweise nicht das gleiche Vokabular verwendet, das von Ihren Zielgruppen verwendet wird.

Bei der häufigeren Sortierung nach geschlossenen Karten werden vorgedruckte Karteikarten verwendet, und jeder Teilnehmer erhält einen vollständigen Satz von Haupt- und Unterkategoriekarten. Der Teilnehmer wird dann aufgefordert, einige Hauptkategorien auszuwählen und eigene Namen für Hauptkategorien zu erstellen, wenn die vorhandenen Namen nicht richtig erscheinen, um die verbleibenden Karten logisch innerhalb jeder Kategorie zu platzieren, um eine Site-Taxonomie zu bilden, die für diesen Teilnehmer sinnvoll ist. Die Karten sollten sorgfältig von Hand bedruckt werden, um eine maximale Lesbarkeit zu gewährleisten, oder Sie können mit Laserdruckern kompatible Avery-Karteikartenblätter verwenden, um die Karten von Ihrem Computer aus zu erstellen. Dies ist oft die beste Option, wenn Sie große Kartengruppen zum Testen erstellen müssen.

Die resultierenden Taxonomien&mdashone von jedem Teilnehmer&mdashare wurden dann sowohl statistisch als auch informell mit der Taxonomie verglichen, die von den Site-Designern oder dem Informationsarchitekten erstellt wurde. In den meisten Fällen ähnelt die Zusammenfassung der Taxonomien der Forschungsteilnehmer der Taxonomie des Designteams, aber der primäre Wert der Kartensortierung besteht darin, die Fälle zu finden, in denen sich die Logik des Designteams von der Zielgruppe unterscheidet, in der es darum geht, wo eine bestimmte Kategorie innerhalb zu finden ist die Website-Navigation.

Bei einer umgekehrten Kartensortierung wird dem Teilnehmer eine Taxonomie der Hauptkategorien und Unterkategorien vorgelegt, und der Teilnehmer erhält eine Beispielaufgabe, die er ausführen muss, indem er die Kategoriekarte findet, die die Stelle in der Taxonomie am besten repräsentiert, an der der Teilnehmer die Aufgabe erledigen. Reverse Card Sorts werden normalerweise erst spät in der Forschungsphase durchgeführt, da der primäre Wert von Reverse Card Sorts darin besteht, die Wirksamkeit einer vorgeschlagenen Taxonomie zu bewerten und nicht, eine neue zu generieren.

Für kleinere oder weniger formelle Site-Projekte können Sie Whiteboard-Gruppensitzungen mit Techniken durchführen, die dem Kartensortieren ähneln. Die Teilnehmer werden gebeten, Karten oder Haftnotizen zu sortieren, die mit den Namen der wichtigsten Inhaltselemente beschriftet sind, die dann auf einem Whiteboard veröffentlicht und von der Gruppe sortiert werden, bis ein Konsens darüber besteht, welche Gesamtorganisation oder Taxonomie am sinnvollsten ist. In den meisten Fällen erzielen Sie einen schnellen Konsens über die wichtigsten Inhalts- und Navigationskategorien, und die Whiteboard-Organisation wird zu einem nützlichen ersten Blick auf das Organigramm der Website, der der Gruppe helfen kann, die problematischeren Fragen zu lösen, welcher Inhalt in welche Kategorie gehört. Verwenden Sie Ihr Telefon, um Schnappschüsse der verschiedenen Schritte auf dem Weg und des fertigen Whiteboards zu machen. Post-it verfügt über eine Smartphone-App, die beim Aufzeichnen und Teilen von Whiteboard-Post-it-Sitzungen nützlich sein kann.

Einige praktische Tipps zum Sortieren von Karten:

  • Benennen Sie die Hauptkategorien so klar wie möglich, ohne Doppelspurigkeiten oder Redundanzen in der Terminologie.
  • Wenn Kategorienamen nicht offensichtlich oder mehrdeutig sind, versuchen Sie zu Beginn Ihrer Recherche, eine &ldquoopen&rdquo-Kartensortierung zu verwenden, damit die Benutzer ihre eigenen Namen für Kategorien erstellen können.
  • Verschaffen Sie sich ein vollständiges Inventar aller Ihrer Hauptkategorien und Unterkategorien von Inhalten, wobei jede Kategorie auf einer eigenen Karte steht.
  • Begrenzen Sie die Gesamtzahl der Karten auf etwa vierzig. Wenn Ihre Website groß und komplex ist, teilen Sie den Inhalt in überschaubarere Abschnitte mit jeweils nicht mehr als vierzig Kategoriekarten auf.
  • Verwenden Sie echten Karton, kein zerschnittenes Papier. Papier-&ldquocards&rdquo gewonnen&rsquot halten länger als ein oder zwei Sitzungen.
  • Bereiten Sie gründliche Anweisungen für die einzelnen Kartensortiersitzungen vor.
  • Versichern Sie allen Teilnehmern, dass es keine &bdquofalschen&rdquo-Antworten gibt und dass sie völlig frei sind, Dinge zu ordnen und umzubenennen, wie sie es für richtig halten.
  • Nicht jede Karte findet einen Platz in der Organisation. Sagen Sie den Teilnehmern, dass sie die Karte einfach beiseite legen und weitermachen sollten, wenn sie einen logischen Platz für eine bestimmte Karte finden.
  • Unterlassen Sie es, Teilnehmer aufzufordern oder zu coachen.
  • Entmutigen Sie niemals eine Idee eines Benutzers, selbst wenn Sie denken, dass es sich um eine falsche Idee handelt, und erlauben Sie ein kostenloses Brainstorming.
  • Haben Sie viel Zubehör für neue Kategorien und verbesserte Terminologie.
  • Bringen Sie eine gute Digitalkamera mit ausreichender Auflösung mit, um die vorgeschlagenen Kartensortierungsorganisationen und Whiteboard-Layouts aufzuzeichnen. Überprüfen Sie Ihre Fotos auf Lesbarkeit aller Etiketten und Notizen.

Während kleine Projekte mit einigen Dutzend Kategorien und Unterkategorien möglicherweise keine Softwaretools erfordern, können größere Projekte mit umfangreichen Inhalten und/oder vielen Forschungsteilnehmern zum Aufzeichnen und Analysieren von Kartensortierungssoftware profitieren. xSort (nur Macintosh) und UXSort (nur Windows) sind kostenlose, aber durchaus leistungsfähige Anwendungen zum Entwerfen und Durchführen von Kartensortierübungen. OptimalSort ist eine professionelle webbasierte Kartensortierungsanwendung, die sich gut für komplexe Informationsbestände und eine große Anzahl von Forschungsteilnehmern eignet, insbesondere wenn die Forschungsteilnehmer geografisch verstreut sind. Mit OptimalSort können Sie eine vorläufige Informationsarchitektur und ein kontrolliertes Vokabular aufbauen, Kartensortierungsübungen entwerfen und die Kommunikation mit Testteilnehmern über das Web und E-Mail koordinieren. Der Hauptwert von Tools wie OptimalSort liegt wahrscheinlich in der Analyse- und Berichtsphase, in der die Daten verarbeitet und fertige Diagramme erstellt werden können, die die Ergebnisse all Ihrer Kartensortierungssitzungen zusammenfassen.

Unabhängig von den genauen Methoden, die Sie verwenden, kann das Kartensortieren ein kostengünstiges, aber wertvolles Mittel sein, um Ihre Ideen an repräsentativen Mitgliedern Ihres potenziellen Publikums zu testen. Sie brauchen keine große Anzahl von Forschungsteilnehmern, um nützliche Daten zu erhalten. Methodenforschung hat gezeigt, dass Sie mit nur fünf Testteilnehmern etwa 80 Prozent des Wertes von Benutzertests erzielen können und mit nur fünfzehn Testbenutzern praktisch 100 Prozent des Wertes der Forschung. Kartensortiertechniken werden seit vielen Jahren verwendet. Wenn Sie repräsentative oder potenzielle Benutzer Ihrer Website sorgfältig auswählen, bieten sie eine &ldquoreale&rdquo-Validierung der Ideen Ihrer Sponsoren, Interessengruppen und Teammitglieder.

Segmentierungsinformationen

Die meisten Informationen im Web werden in Kurzreferenzdokumenten gesammelt, die nicht fortlaufend gelesen werden sollen. Dies gilt insbesondere für Websites, deren Inhalt hauptsächlich technische oder administrative Dokumente sind. Lange bevor das Web erfunden wurde, entdeckten technische Redakteure, dass Leser kurze Informationsblöcke auf Seiten schätzen, die schnell nach Titeln, Untertiteln und Aufzählungslisten durchsucht werden können. Diese Methode der Informationspräsentation lässt sich aus mehreren Gründen gut auf das Web übertragen:

  • Nur wenige Web-Reader, die auf der Suche nach Informationen sind, werden lange unstrukturierte Textpassagen auf dem Bildschirm lesen. Visuelle Scanhilfen wie viele Titel und Untertitel, Listen und Tabellen helfen dem Leser, relevante Informationen schnell zu finden.
  • Diskrete Informationsblöcke eignen sich für Weblinks. Der Benutzer eines Weblinks erwartet in der Regel, dass der Link eine bestimmte Einheit relevanter Informationen bereitstellt und kein allgemeiner Inhalt eines Buches.
  • Chunking kann dabei helfen, Informationen in einem modularen Layout zu organisieren und zu präsentieren, das auf der gesamten Site konsistent ist. Auf diese Weise können Benutzer nicht nur frühere Erfahrungen mit einer Site auf zukünftige Suchen und Erkundungen anwenden, sondern auch vorhersagen, wie ein unbekannter Abschnitt einer Website organisiert sein wird.
  • Prägnante Informationsblöcke eignen sich besser für den Computerbildschirm, der eine eingeschränkte Sicht auf lange Dokumente bietet. Die begrenzten Darstellungsbereiche mobiler Geräte wie Tablets und Smartphones machen es noch wichtiger, Ihre Inhalte prägnant und sorgfältig zu gestalten, um wichtige Themen und Schlüsselwörter hervorzuheben.

Inhaltsblöcke

In verlinkten Hypertextsystemen wie dem Web sind Inhalte oft in modularen, konsistent organisierten &ldquorchunks&rdquo (von einigen Autoren auch &ldquorhetorische Cluster&rdquo genannt) von Informationen zu bestimmten Themen organisiert. Wenn Sie auf einen Weblink zu einem bestimmten Thema klicken, erwarten Sie, dass der Link Sie zu einem bestimmten Inhalt und nicht zur Homepage von Wikipedia führt. Sie erwarten beispielsweise, dass ein Weblink für &ldquoChicken Saltimbocca Sie zu einem Rezept oder einem kurzen Artikel über das Gericht führt, nicht zur ersten Seite eines ganzen Buches über italienische Küche. In gedruckten Bänden erfolgt eine solche spezifische Verlinkung oder Fußnotierung mit der Grundeinheit des Drucks, einer nummerierten Seite. Im Web kann eine &ldquo-Seite&rdquo beliebig lang sein, aber wenn ein Weblink auf saltimbocca Sie an die Spitze einer fünftausend–Wort-Webseite bringt, die (irgendwo) den Begriff &ldquochicken saltimbocca&rdquo enthält, würden Sie sich irregeführt fühlen. Warum führte Sie der Link zu spezifischen Informationen über Hühnchen-Saltimbocca? Um diese Nutzererwartungen für bestimmte Informationsblöcke zu erfüllen, die weder zu groß noch mit Nebensächlichkeiten überladen sind, müssen Ihre Inhalte idealerweise in modulare Einheiten &ldquochunked&rdquo, strukturiert und organisiert werden, um die Erwartungen der Webbenutzer zu erfüllen.

Das Konzept eines Informationsblocks muss flexibel sein und dem gesunden Menschenverstand entsprechen, logisch im Kontext Ihrer Themen organisiert und bequem zu verwenden sein. Lassen Sie die Art des Inhalts vorschlagen, wie er unterteilt und organisiert werden sollte. Obwohl kurze, sorgfältig strukturierte Webseiten im Allgemeinen besser sind als lange weitläufige Seiten, macht es manchmal wenig Sinn, ein langes Dokument willkürlich in mehrere kurze Seiten zu unterteilen, insbesondere wenn Sie möchten, dass Benutzer das Dokument in einem Schritt einfach drucken oder speichern können.

Ihr Content-Management-System (CMS) kann auch so strukturiert sein, dass es eine Reihe von Inhalts- &ldquochunks zulässt.&rdquo Zum Beispiel hat ein längerer Artikel oder Blog-Beitrag oft sowohl ein Hauptartikelfeld als auch ein separates Feld für kurze oder abstrakte Versionen des Artikels, da sowie Stichworte und Links zu Abbildungen. CMS-Software wie Drupal ermöglicht es Ihnen auch, benutzerdefinierte Artikelstrukturen und kontrollierte Vokabulare von Schlüsselwörtern zu erstellen, wenn Ihr Inhalt mehr Struktur benötigt als die typischen Standardkonfigurationen von title&ndashshort version&ndashfull article&ndashkeywords für CMS-Inhalte.Inhalte sind viel leistungsfähiger und anpassungsfähiger, wenn sie konsistent in modularen Formaten organisiert sind, die flexibel auf Websites, mobilen Apps und Social-Media-Plattformen bereitgestellt werden können, alles aus derselben Kerndatenbank.


7. Medien-Captures und Capture-Szenen

In diesem Abschnitt wird beschrieben, wie Anbieter den Inhalt von Medien für Verbraucher beschreiben können.¶

7.1. Medienaufnahmen

Media Captures sind die grundlegenden Darstellungen von Streams, die ein Gerät übertragen kann. Was ein Media Capture tatsächlich darstellt, ist flexibel:¶

  • Es kann die unmittelbare Ausgabe einer physischen Quelle (z. B. Kamera, Mikrofon) oder „synthetischer“ Quelle (z. B. Laptop, DVD-Player) darstellen.¶
  • Es kann die Ausgabe eines Audio-Mixers oder Video-Composers darstellen.¶
  • Es kann ein Konzept wie 'der lauteste Sprecher' darstellen.¶
  • Es kann eine konzeptionelle Position wie 'der Strom ganz links' darstellen.¶

Um mehrere Capture-Instanzen zu identifizieren und zu unterscheiden, haben Captures eine eindeutige Identität. Zum Beispiel VC1, VC2, AC1 und AC2 (wobei sich VC1 und VC2 auf zwei verschiedene Video-Captures und AC1 und AC2 auf zwei verschiedene Audio-Captures beziehen).¶

Einige wichtige Punkte zu Media Captures:¶

  • Ein Medien-Capture hat einen einzigen Medientyp (z. B. Audio oder Video).¶
  • Ein Medien-Capture wird in einer Capture-Szene definiert und erhält eine eindeutige Advertisement-Identität. Auf die Identität kann außerhalb der Capture-Szene verwiesen werden, die sie über ein MCC definiert.¶
  • Ein Media Capture kann mit einer oder mehreren CSVs verknüpft sein.¶
  • Ein Media Capture hat genau einen Satz räumlicher Informationen.¶
  • Ein Media Capture kann die Quelle von höchstens einer Capture-Kodierung sein.¶

Jedes Media Capture kann mit Attributen verknüpft werden, um zu beschreiben, was es repräsentiert.¶

7.1.1. Medien-Capture-Attribute

Media Capture-Attribute beschreiben Informationen zu den Captures. Ein Anbieter kann die Media Capture-Attribute verwenden, um die Captures zugunsten des Verbrauchers der Ankündigungsnachricht zu beschreiben. Alle diese Attribute sind optional. Zu den Media Capture-Attributen gehören:¶

  • Räumliche Informationen wie Aufnahmepunkt, Punkt auf Aufnahmelinie und Aufnahmebereich (die alle zusammen das Aufnahmefeld beispielsweise einer Kamera definieren).¶
  • Andere beschreibende Informationen, die dem Verbraucher bei der Auswahl zwischen Captures helfen (z. B. Beschreibung, Präsentation, Ansicht, Priorität, Sprache, Personeninformationen und Typ).¶

Die folgenden Unterabschnitte definieren die Capture-Attribute.¶

7.1.1.1. Erfassungspunkt

Das Attribut Point of Capture ist ein Feld mit einem einzelnen kartesischen (X, Y, Z) Punktwert, der die räumliche Position des Aufnahmegeräts (z. B. einer Kamera) beschreibt. Bei einer Audioaufnahme mit mehreren Mikrofonen definiert der Aufnahmepunkt den nominellen Mittelpunkt der Mikrofone.¶

7.1.1.2. Punkt auf der Erfassungslinie

Das Attribut Point on Line of Capture ist ein Feld mit einem einzelnen kartesischen (X, Y, Z) Punktwert, der die Position eines zweiten Punkts auf der Achse des Aufnahmegeräts im Raum beschreibt, in die Richtung, in die der erste Punkt zeigt als Point of Capture (siehe oben).¶

Der Erfassungspunkt und der Erfassungspunkt definieren zusammen die Richtung und Achse des Erfassungsgeräts, beispielsweise die optische Achse einer Kamera oder die Achse eines Mikrofons. Der Medienkonsument kann diese Informationen verwenden, um anzupassen, wie er die empfangenen Medien rendert, wenn er dies wünscht.¶

Für eine Audioaufnahme kann der Medienkonsument diese Informationen zusammen mit dem Audioaufnahme-Empfindlichkeitsmuster verwenden, um ein dreidimensionales Aufnahmevolumen zu definieren, bei dem erwartet wird, dass Töne von dem Mikrofon aufgenommen werden, das diese spezifische Audioaufnahme bereitstellt. Wenn der Verbraucher eine Audioaufnahme mit einer Videoaufnahme verknüpfen möchte, kann er dieses Volumen mit dem Aufnahmebereich für Videomedien vergleichen, um zu überprüfen, ob die Audioaufnahme tatsächlich mit der Videoaufnahme räumlich verknüpft ist. Zum Beispiel wäre ein Videoaufnahmebereich, der sich überhaupt nicht mit der Audiolautstärke der Aufnahme überschneidet oder sich in einem so großen radialen Abstand vom Aufnahmepunkt des Mikrofons befindet, dass der Audiopegel sehr niedrig wäre, ungeeignet.¶

7.1.1.3. Erfassungsbereich

Der Erfassungsbereich ist ein Feld mit einem Satz von vier (X, Y, Z) Punkten als Wert, der die räumliche Position dessen beschreibt, was "erfasst" wird. Dieses Attribut gilt nur für Video-Captures, nicht für andere Medientypen. Durch den Vergleich des Aufnahmebereichs für verschiedene Videoaufnahmen innerhalb derselben Aufnahmeszene kann ein Verbraucher die räumlichen Beziehungen zwischen ihnen bestimmen und sie korrekt rendern.¶

Die vier Punkte MÜSSEN koplanar sein und ein Viereck bilden, das die Interessenebene für das jeweilige Medien-Capture definiert.¶

Wenn der Aufnahmebereich nicht angegeben ist, bedeutet dies, dass das Video-Capture möglicherweise räumlich mit anderen Captures in derselben Szene verbunden ist, aber es gibt keine detaillierten Informationen über die Beziehung. Bei einer umgeschalteten Erfassung, die zwischen verschiedenen Abschnitten innerhalb eines größeren Bereichs wechselt, MUSS der Erfassungsbereich Koordinaten für den größeren potentiellen Bereich verwenden.¶

7.1.1.4. Mobilität der Erfassung

Das Attribut Mobilität der Eroberung gibt an, ob die Werte für den Eroberungspunkt, den Eroberungspunkt und den Eroberungsbereich im Laufe der Zeit gleich bleiben oder sich voraussichtlich (möglicherweise häufig) ändern werden. Mögliche Werte sind statisch, dynamisch und hochdynamisch.¶

Ein Beispiel für "dynamisch" ist eine auf einem Stativ montierte Kamera, die gelegentlich von Hand getragen und an verschiedenen Positionen platziert wird, um den besten Winkel für die Aufnahme einer Arbeitsaufgabe zu bieten. Eine Kamera, die eine Person trägt, die sich im Raum bewegt, ist ein Beispiel für „hochdynamisch“. In beiden Fällen ändert sich der Erfassungspunkt, die Erfassungsachse und der Erfassungsbereich mit der Zeit.¶

Der Erfassungspunkt einer statischen Erfassung DARF sich während der Lebensdauer der CLUE-Sitzung NICHT bewegen. Der Erfassungspunkt dynamischer Erfassungen wird durch eine Positionsänderung, gefolgt von einer angemessenen Stabilitätsperiode kategorisiert – in der Größenordnung von Minuten. Hochdynamische Captures werden nach einem sich ständig bewegenden Erfassungspunkt kategorisiert. Wenn die Attribute „Erfassungsbereich“, „Erfassungspunkt“ und „Punkt auf der Erfassungslinie“ in dynamischen oder hochdynamischen Erfassungen enthalten sind, geben sie zum Zeitpunkt der Ankündigung räumliche Informationen an.¶

7.1.1.5. Empfindlichkeitsmuster für die Audioaufnahme

Das Attribut „Audio Capture Sensitivity Pattern“ gilt nur für Audio Captures. Dieses Attribut gibt Informationen über das nominale Empfindlichkeitsmuster des Mikrofons, das die Quelle des Captures ist. Mögliche Werte sind Muster wie Kugel, Schrotflinte, Niere und Hyperniere.¶

7.1.1.6. Beschreibung

Das Description-Attribut ist eine für Menschen lesbare Beschreibung (die in mehreren Sprachen vorliegen kann) des Captures.¶

7.1.1.7. Präsentation

Das Präsentationsattribut gibt an, dass das Capture von einem Präsentationsgerät stammt, d. h. einem, das einer Konferenz durch Folien, Videos, Standbilder, Daten usw. zusätzliche Informationen liefert. Wenn mehr Informationen über das Capture bekannt sind, KANN es hierarchisch erweitert werden um die verschiedenen Arten von Präsentationsmedien anzuzeigen, zB Präsentation.Folien, Präsentation.Bild, etc.¶

Hinweis: Es wird erwartet, dass eine Reihe von Schlüsselwörtern definiert werden, die mehr Details zur Art der Präsentation liefern. Informationen zum Erweitern des Modells finden Sie in [RFC8846].¶

7.1.1.8. Aussicht

Das Ansichtsattribut ist ein Feld mit Aufzählungswerten, die angeben, auf welchen Ansichtstyp sich das Capture bezieht. Der Verbraucher kann diese Informationen verwenden, um auszuwählen, welche Media Captures er erhalten möchte. Mögliche Werte sind wie folgt:¶

Raum: Erfasst die gesamte Szene¶ Tisch: Erfasst den Konferenztisch mit sitzenden Personen¶ Individuell: Erfasst eine einzelne Person¶ Rednerpult: Erfasst den Bereich des Rednerpults einschließlich des Moderators, zum Beispiel in einem Konferenzraum im Stil eines Klassenzimmers¶ Publikum: Erfasst eine Region, die das Publikum in einem Konferenzraum im Stil eines Klassenzimmers zeigt¶

7.1.1.9. Sprache

Das Attribut Language gibt eine oder mehrere Sprachen an, die im Inhalt des Media Capture verwendet werden. Aufnahmen KÖNNEN bei mehrsprachigen und/oder barrierefreien Konferenzen in verschiedenen Sprachen angeboten werden. Ein Verbraucher kann dieses Attribut verwenden, um zwischen ihnen zu unterscheiden und das geeignete auszuwählen.¶

Beachten Sie, dass das Language-Attribut sowohl für Audio- als auch für Video-Captures definiert und aussagekräftig ist. Bei Audio-Captures ist die Bedeutung offensichtlich. Bei einem Video-Capture könnte "Sprache" beispielsweise Zeicheninterpretation oder Text sein.¶

Das Language-Attribut ist gemäß [RFC5646] codiert.¶

7.1.1.10. Personendaten

Das Personeninformationsattribut ermöglicht es einem Anbieter, spezifische Informationen zu den Personen in einem Capture bereitzustellen (unabhängig davon, ob das Capture ein Präsentationsattribut hat oder nicht). Der Anbieter kann die Informationen automatisch oder manuell aus einer Vielzahl von Quellen sammeln, jedoch wird das xCard-Format [RFC6351] verwendet, um die Informationen zu übermitteln. Dadurch können verschiedene Informationen, wie z. B. Identifikationsinformationen (Abschnitt 6.2 von [RFC6350]), Kommunikationsinformationen (Abschnitt 6.4 von [RFC6350]) und Organisationsinformationen (Abschnitt 6.6 von [RFC6350]), übermittelt werden. Ein Verbraucher kann dann automatisch (d. h. über eine Richtlinie) oder manuell Erfassungen basierend auf Informationen darüber auswählen, wer sich in einer Erfassung befindet. Es ermöglicht einem Verbraucher auch, Informationen über die an der Konferenz teilnehmenden Personen bereitzustellen oder für die weitere Verarbeitung zu verwenden.¶

Der Anbieter kann einen minimalen Satz von Informationen oder einen größeren Satz von Informationen bereitstellen. Es MUSS jedoch [RFC6350] konform sein und eine "VERSION"- und "FN"-Eigenschaft bereitstellen. Ein Anbieter kann mehrere xCards pro Capture jeder Art bereitstellen (Abschnitt 6.1.4 von [RFC6350]).¶

Um CLUE-Nachrichten kompakt zu halten, SOLLTE der Anbieter einen URI verwenden, um auf jedes LOGO, FOTO oder SOUND in der xCard zu verweisen, anstatt die LOGO-, FOTO- oder SOUND-Daten in einer CLUE-Nachricht zu übertragen.¶

7.1.1.11. Personentyp

Das Attribut „Personentyp“ gibt die Art der im Capture enthaltenen Personen in Bezug auf die Besprechungsagenda an (unabhängig davon, ob das Capture über ein Präsentationsattribut verfügt oder nicht). Da ein Capture mehrere Personen umfassen kann, kann das Attribut mehrere Werte enthalten. Werte DÜRFEN jedoch innerhalb des Attributs NICHT wiederholt werden.¶

Ein Werbetreibender ordnet den Personentyp einem einzelnen Capture zu, wenn er weiß, dass ein bestimmter Typ im Capture enthalten ist. Wenn ein Werbetreibender einen bestimmten Typ nicht mit einiger Sicherheit mit einem Capture verknüpfen kann, wird er nicht berücksichtigt. Beim Empfang eines Captures mit einem Personentyp-Attribut weiß ein Konsument mit einiger Sicherheit, dass das Capture diesen Personentyp enthält. Das Capture kann andere Personentypen enthalten, aber der Werbetreibende konnte dies nicht feststellen.¶

Zu den Arten von Gefangenen gehören:¶

Vorsitzender: die Person, die für die Leitung der Sitzung gemäß der Tagesordnung verantwortlich ist.¶ Stellvertretender Vorsitzender: die Person, die den Vorsitz bei der Leitung der Sitzung unterstützt.¶ Protokollführer: die Person, die für die Aufzeichnung des Sitzungsprotokolls verantwortlich ist.¶ Teilnehmer: der Person hat keine besonderen Verantwortlichkeiten in Bezug auf die Leitung des Meetings.¶ Beobachter: ein Teilnehmer ohne das Recht, die Diskussion zu beeinflussen.¶ Moderator: die Person, die auf der Tagesordnung steht, um eine Präsentation im Meeting zu halten. Hinweis: Dies bezieht sich nicht auf die Funktion "aktiver Redner".¶ Übersetzer: die Person, die eine Art von Übersetzung oder Kommentar in der Besprechung bereitstellt.¶ Zeitnehmer: die Person, die für die Führung des Besprechungsplans verantwortlich ist.¶

Darüber hinaus kann das Attribut „Personentyp“ eine oder mehrere Zeichenfolgen enthalten, die es dem Anbieter ermöglichen, benutzerdefinierte besprechungsspezifische Typen anzugeben.¶

7.1.1.12. Priorität

Das Attribut Priorität gibt eine relative Priorität zwischen verschiedenen Media Captures an. Der Anbieter legt diese Priorität fest, und der Verbraucher KANN die Priorität verwenden, um zu entscheiden, welche Captures er erhalten möchte.¶

Das Priority-Attribut ist eine ganze Zahl, die eine relative Priorität zwischen Captures angibt. Es ist beispielsweise möglich, zwischen zwei Präsentations-Captures eine Priorität zuzuweisen, die es einem entfernten Endpunkt ermöglicht, zu bestimmen, welche Präsentation wichtiger ist. Die Priorität wird auf der einzelnen Capture-Ebene zugewiesen. Es stellt die Ansicht des Anbieters bezüglich der relativen Priorität zwischen Captures mit einer Priorität dar. Dieselbe Prioritätsnummer KANN für mehrere Captures verwendet werden. Es zeigt an, dass sie gleich wichtig sind. Wenn keine Priorität zugewiesen wird, können keine Annahmen bezüglich der relativen Bedeutung des Captures getroffen werden.¶

7.1.1.13. Eingebetteter Text

Das Attribut Eingebetteter Text gibt an, dass ein Capture eingebettete Textinformationen bereitstellt. Beispielsweise kann die Videoaufnahme aus dem Videobild zusammengesetzte Sprache-zu-Text-Informationen enthalten.

7.1.1.14. Im Zusammenhang mit

Das Attribut Related To gibt an, dass das Capture zusätzliche ergänzende Informationen zu einem anderen Capture enthält. Der Wert gibt die Identität des anderen Captures an, für das dieses Capture zusätzliche Informationen bereitstellt.¶

Beispielsweise kann eine Konferenz Übersetzer oder Moderatoren einsetzen, die einen zusätzlichen Audiostream bereitstellen (d. h. eine Übersetzung oder Beschreibung oder einen Kommentar der Konferenz). Wenn mehrere Captures verfügbar sind, kann es für einen Verbraucher von Vorteil sein, anstelle oder zusätzlich zu einem Capture, auf das es sich bezieht, ein ergänzendes Capture auszuwählen.¶

7.2. Erfassung mehrerer Inhalte

Der MCC zeigt an, dass ein oder mehrere Single Media Captures (zeitlich und/oder räumlich) gemultiplext oder in einem Media Capture gemischt werden. In jeder MCC-Instanz ist nur ein Aufnahmetyp (d. h. Audio, Video usw.) zulässig. Das MCC kann einen Verweis auf die Single Media Captures (die ihre eigenen Attribute haben können) sowie Attribute enthalten, die mit dem MCC selbst verbunden sind. Ein MCC kann auch andere MCCs enthalten. Das MCC KANN auf Captures innerhalb der Capture-Szene verweisen, die es definiert, oder aus anderen Capture-Szenen. Die Reihenfolge, in der Captures in einem Kundencenter erscheinen, bedeutet keine Reihenfolge. Ein MCC darf keine Verweise auf andere Captures enthalten, um darauf hinzuweisen, dass das MCC Inhalte aus mehreren Quellen enthält, aber es werden keine Informationen zu diesen Quellen angegeben. MCCs enthalten entweder die referenzierten Captures und keine anderen oder haben keine referenzierten Captures und können daher beliebige Captures enthalten.¶

In einer CSV können auch ein oder mehrere Kundencenter angegeben werden. Dadurch kann ein Werbetreibender angeben, dass mehrere MCC-Captures verwendet werden, um eine Capture-Szene darzustellen. Tabelle 14 enthält ein Beispiel für diesen Fall.¶

Wie in Abschnitt 7.1 beschrieben, hat jede Instanz des MCC eine eigene Capture-Identität, d. h. MCC1. Dadurch können alle einzelnen Captures, die im MCC enthalten sind, von einer einzigen MCC-Identität referenziert werden.¶

Das folgende Beispiel zeigt die Verwendung eines Multiple Content Capture:¶

Dies zeigt an, dass MCC1 ein einzelnes Capture ist, das die Captures VC1, VC2 und VC3 gemäß allen MCC1-Attributen enthält.¶

7.2.1. Kundencenter-Attribute

Media Capture-Attribute können der MCC-Instanz und den Single Media Captures zugeordnet sein, auf die das MCC verweist. Ein Anbieter sollte es vermeiden, widersprüchliche Attributwerte zwischen MCC und Single Media Captures bereitzustellen. Bei Konflikten mit den Attributen des MCC sollte ein Anbieter alle möglicherweise in den einzelnen Captures vorhandenen Attribute überschreiben.¶

Ein Anbieter KANN so viel oder so wenig der ursprünglichen Quell-Capture-Informationen enthalten, wie er benötigt.¶

Es gibt MCC-spezifische Attribute, die nur mit Multiple Content Captures verwendet werden MÜSSEN. Diese werden in den folgenden Abschnitten beschrieben. Die in Abschnitt 7.1.1 beschriebenen Attribute KÖNNEN auch mit MCCs verwendet werden.¶

Die raumbezogenen Attribute eines MCC geben seinen Aufnahmebereich und Aufnahmepunkt innerhalb der Szene an, genau wie bei jedem anderen Medien-Capture. Die räumlichen Informationen sagen nichts darüber aus, wie andere Captures in einem MCC zusammengesetzt sind.¶

Zum Beispiel: Eine virtuelle Szene könnte für die MCC-Aufnahme mit zwei Videoaufnahmen erstellt werden, wobei ein MaxCaptures-Attribut auf 2 gesetzt ist und ein Area of ​​Capture-Attribut mit einem Gesamtbereich versehen ist. Jede der einzelnen Captures könnte dann auch ein Attribut Area of ​​Capture mit einer Teilmenge der Gesamtfläche enthalten. Der Konsument würde dann wissen, wie jedes Capture zu anderen innerhalb der Szene in Beziehung steht, aber nicht die relative Position der einzelnen Captures innerhalb des zusammengesetzten Captures.

  • Aufnahmebereich=(0,0,0)(9,0,0)¶
  • (0,0,9)(9,0,9)¶
  • Aufnahmebereich=(10,0,0)(19,0,0)¶
  • (10,0,9)(19,0,9)¶
  • MaxCaptures=2¶
  • Aufnahmebereich=(0,0,0)(19,0,0)¶
  • (0,0,9)(19,0,9)¶

In den folgenden Unterabschnitten werden die Nur-Kundencenter-Attribute beschrieben.¶

7.2.1.1. MaxCapture: Maximale Anzahl von Captures innerhalb eines MCC

Das Attribut MaxCaptures gibt die maximale Anzahl einzelner Captures an, die gleichzeitig in einer Capture-Kodierung erscheinen können. Die tatsächliche Anzahl kann zu einem bestimmten Zeitpunkt kleiner oder gleich diesem Maximum sein. Daraus lässt sich ableiten, wie die Single Media Captures innerhalb des MCC räumlich und zeitlich zusammengesetzt/vertauscht sind.¶

MaxCaptures kann auf 1 gesetzt werden, sodass nur Inhalte, die sich auf eine der Quellen beziehen, gleichzeitig in der MCC-Capture-Codierung angezeigt werden, oder es kann auf einen beliebigen Wert bis zur Gesamtzahl der Quellmedien-Captures im MCC gesetzt werden.¶

Die folgenden Aufzählungszeichen beschreiben, wie sich die Einstellung von MaxCaptures im Vergleich zur Anzahl der Captures im MCC auf die Darstellung von Quellen in einer Capture-Kodierung auswirkt:¶

  • Ein Wechselfall tritt auf, wenn MaxCaptures auf <= 1 gesetzt ist und die Anzahl der Captures im MCC größer als 1 (oder nicht angegeben) im MCC ist. Null oder ein Captures können in das Capture Encoding umgeschaltet werden. Hinweis: Null ist erlaubt wegen "< #section-7.2.1.1-5.1" >¶
  • Ein Switched Case tritt auf, wenn MaxCaptures auf = 1 gesetzt ist und die Anzahl der Captures im MCC größer als 1 (oder nicht angegeben) im MCC ist. In einer Capture-Kodierung ist jeweils nur eine Capture-Quelle enthalten.¶
  • Ein geschalteter und zusammengesetzter Fall tritt auf, wenn MaxCaptures auf <= N (mit N > 1) gesetzt ist und die Anzahl der Captures im MCC größer als N (oder nicht angegeben) ist. Die Capture-Kodierung kann rein umgeschaltete Quellen enthalten (d. h. <=2 ermöglicht eine eigene Quelle) oder zusammengesetzte und umgeschaltete Quellen (d. h. eine Zusammenstellung von zwei Quellen, die zwischen den Quellen umgeschaltet wird).¶
  • Ein geschalteter und zusammengesetzter Fall tritt auf, wenn MaxCaptures auf = N gesetzt ist (mit N > 1) und die Anzahl der Captures im MCC größer als N (oder nicht angegeben) ist. Die Capture Encoding enthält zusammengesetzte und umgeschaltete Quellen (d. h. eine Zusammensetzung von N Quellen, die zwischen den Quellen umgeschaltet wurden). Es ist nicht möglich, eine einzige Quelle zu haben.¶
  • Ein geschalteter und zusammengesetzter Fall tritt auf, wenn MaxCaptures <= auf die Anzahl der Captures im MCC gesetzt wird. Die Capture-Codierung kann Medien enthalten, die zwischen einer beliebigen Anzahl (bis zu den MaxCaptures) von komponierten Quellen umgeschaltet werden.¶
  • Ein zusammengesetzter Fall tritt auf, wenn MaxCaptures = auf die Anzahl der Captures im MCC gesetzt ist. Alle Quellen sind in einem einzigen Capture Encoding zusammengefasst.¶

Wenn dieses Attribut nicht festgelegt ist, wird standardmäßig davon ausgegangen, dass alle Media Capture-Quellinhalte gleichzeitig in der dem MCC zugeordneten Capture-Codierung angezeigt werden können.¶

Die Verwendung von MaxCaptures gleich 1 in einem MCC mit drei Video-Captures, VC1, VC2 und VC3, würde beispielsweise bedeuten, dass der Werbetreibende in der Capture-Codierung zwischen VC1, VC2 und VC3 wechseln würde, da es möglicherweise nur ein Maximum gibt von jeweils einem Capture.¶

7.2.1.2. Politik

Das Policy MCC-Attribut gibt die Kriterien an, die der Anbieter verwendet, um zu bestimmen, wann und/oder wo Medieninhalte in der Capture-Codierung in Bezug auf das MCC erscheinen.¶

Das Attribut hat die Form eines Tokens, das die Richtlinie angibt, und eines Index, der eine Instanz der Richtlinie darstellt. Derselbe Indexwert kann für mehrere Kundencenter verwendet werden.¶

Die Token sind wie folgt:¶

SoundLevel: Dies zeigt an, dass der Inhalt des MCC durch einen Algorithmus zur Geräuschpegelerkennung bestimmt wird. Der lauteste (aktive) Sprecher (oder je nach Indexwert ein Vorsprecher) ist im MCC enthalten.¶ RoundRobin: Dies zeigt an, dass der Inhalt des MCC durch einen zeitbasierten Algorithmus bestimmt wird. Beispielsweise stellt der Anbieter für einen bestimmten Zeitraum Inhalte aus einer bestimmten Quelle bereit und stellt dann Inhalte aus einer anderen Quelle bereit und so weiter.¶

Ein Index wird verwendet, um eine Instanz in der Richtlinieneinstellung darzustellen. Ein Index von 0 steht für die aktuellste Instanz der Richtlinie, d. h. den aktiven Sprecher, 1 für die vorherige Instanz, d. h. den vorherigen aktiven Sprecher usw.¶

Das folgende Beispiel zeigt einen Fall, in dem der Anbieter zwei Medienstreams bereitstellt, einen mit dem aktiven Sprecher und einen zweiten mit dem vorherigen Sprecher.¶

Tabelle 3: Beispiel für die Verwendung von Richtlinien-Kundencenter-Attributen
Aufnahme von Szene Nr. 1
VC1
VC2
MCC1(VC1,VC2) Richtlinie=SoundLevel:0
MaxCaptures=1
MCC2(VC1,VC2) Richtlinie=SoundLevel:1
MaxCaptures=1
CSV(MCC1,MCC2)
7.2.1.3. Synchronisations-ID: Synchronisationsidentität

Das MCC-Attribut SynchronizationID gibt an, wie die einzelnen Captures in mehreren MCC-Captures synchronisiert werden. Um anzugeben, dass die mit MCCs verknüpften Capture-Codierungen gleichzeitig Captures aus derselben Quelle enthalten, sollte ein Anbieter dieselbe SynchronizationID auf jedem der betroffenen MCCs festlegen. Es ist der Anbieter, der die Quelle für die Captures bestimmt, sodass ein Anbieter auswählen kann, wie einzelne Medien-Captures zu einer kombinierten "Quelle" zusammengefasst werden, um sie zusammenzuschalten, um sie gemäß dem SynchronizationID-Attribut synchronisiert zu halten. Wenn sich der Anbieter beispielsweise in einer MCU befindet, kann er feststellen, dass jeder separate CLUE-Endpunkt eine Remotequelle von Medien ist. Die SynchronizationID kann medienübergreifend verwendet werden, d. h. um audio- und videobezogene MCCs zu synchronisieren.¶

Ohne dieses Attribut wird davon ausgegangen, dass mehrere MCCs zu einem bestimmten Zeitpunkt Inhalte aus unterschiedlichen Quellen bereitstellen können.¶

Tabelle 4: Beispiel für die Verwendung von SynchronizationID MCC-Attribut
Aufnahme von Szene Nr. 1
VC1 Beschreibung=Links
VC2 Beschreibung=Center
VC3 Beschreibung=Rechts
AC1 Beschreibung=Raum
CSV(VC1,VC2,VC3)
CSV(AC1)
Aufnahme von Szene 2
VC4 Beschreibung=Links
VC5 Beschreibung=Center
VC6 Beschreibung=Rechts
AC2 Beschreibung=Raum
CSV(VC4,VC5,VC6)
CSV(AC2)
Aufnahme von Szene 3
VC7
AC3
Aufnahme von Szene #4
VC8
AC4
Aufnahme von Szene Nr. 5
MCC1(VC1,VC4,VC7) Synchronisations-ID=1
MaxCaptures=1
MCC2 (VC2,VC5,VC8) Synchronisations-ID=1
MaxCaptures=1
MCC3(VC3,VC6) MaxCaptures=1
MCC4(AC1,AC2,AC3,AC4) Synchronisations-ID=1
MaxCaptures=1
CSV(MCC1,MCC2,MCC3)
CSV(MCC4)

Die obige Ankündigung würde darauf hinweisen, dass MCC1, MCC2, MCC3 und MCC4 eine Aufnahmeszene bilden. Es gäbe vier Capture-Encodings (eine für jedes MCC). Da MCC1 und MCC2 dieselbe SynchronizationID haben, würde jede Codierung von MCC1 bzw. MCC2 zusammen nur Inhalte von Capture Scene 1 oder nur Capture Scene 2 oder der Kombination von VC7 und VC8 zu einem bestimmten Zeitpunkt enthalten. In diesem Fall hat der Provider entschieden, dass die zu synchronisierenden Quellen Scene #1, Scene #2 und Scene #3 und #4 zusammen sind. Die Kodierung von MCC3 würde nicht mit MCC1 oder MCC2 synchronisiert. Da MCC4 auch dieselbe SynchronizationID wie MCC1 und MCC2 hat, wird der Inhalt des Audio Encoding mit dem Videoinhalt synchronisiert.¶

7.2.1.4. Auswahl von Teilmengen zulassen

Das MCC-Attribut Allow Subset Choice ist ein boolescher Wert, der angibt, ob der Anbieter dem Verbraucher erlaubt, eine bestimmte Untermenge der Captures auszuwählen, auf die das MCC verweist. Wenn dieses Attribut wahr ist und das MCC auf andere Captures verweist, KANN der Verbraucher (in einer Konfigurationsnachricht) eine bestimmte Untermenge dieser Captures auswählen, die in das MCC aufgenommen werden soll, und der Anbieter MUSS dann nur diese Untermenge aufnehmen. Wenn dieses Attribut falsch ist oder das MCC nicht auf andere Captures verweist, DARF der Consumer KEINE Teilmenge auswählen.¶

7.3. Szene aufnehmen

Damit die einzelnen Captures eines Anbieters von einem Verbraucher effektiv verwendet werden können, organisiert der Anbieter die Captures in einer oder mehreren Capture-Szenen, wobei die Struktur und der Inhalt dieser Capture-Szenen vom Anbieter an den Verbraucher in der Anzeige gesendet werden.¶

Eine Aufnahmeszene ist eine Struktur, die eine räumliche Region darstellt, die ein oder mehrere Aufnahmegeräte enthält, wobei jedes Aufnahmemedium einen Teil der Region darstellt. Eine Aufnahmeszene enthält eine oder mehrere Aufnahmeszenenansichten (CSVs), wobei jede CSV ein oder mehrere Medien-Captures desselben Medientyps enthält. Es kann auch Media Captures geben, die nicht in einer CSV enthalten sind. Eine Aufnahmeszene stellt beispielsweise das Videobild einer Gruppe von nebeneinander sitzenden Personen zusammen mit dem Klang ihrer Stimmen dar, die durch eine Reihe von VCs und ACs in den CSVs dargestellt werden könnten. Eine MCU kann auch in Capture Scenes beschreiben, was sie aus den empfangenen Medienstreams konstruiert.¶

Ein Anbieter KANN eine oder mehrere Aufnahmeszenen ankündigen. Was eine ganze Capture-Szene ausmacht, ist dem Anbieter überlassen. Ein einfacher Anbieter verwendet normalerweise eine Aufnahmeszene für Teilnehmermedien (Live-Video von den Raumkameras) und eine andere Aufnahmeszene für eine computergenerierte Präsentation. Bei komplexeren Systemen ist auch der Einsatz zusätzlicher Capture Scenes sinnvoll. Ein Klassenzimmer kann beispielsweise zwei Aufnahmeszenen mit Live-Video ankündigen: eine enthält nur die Kamera, die den Lehrer aufnimmt (und zugehöriges Audio), die andere enthält Kamera(s), die die Schüler (und zugehöriges Audio) aufnimmt.¶

Eine Aufnahmeszene KANN (und wird normalerweise) mehr als einen Medientyp enthalten. Eine Aufnahmeszene kann beispielsweise mehrere CSVs für Videoaufnahmen und mehrere CSVs für Audioaufnahmen enthalten. Ein bestimmtes Capture KANN in mehr als einer CSV-Datei enthalten sein.¶

Ein Anbieter KANN Räumliche Beziehungen zwischen Captures ausdrücken, die in derselben Capture-Szene enthalten sind. Es besteht jedoch keine räumliche Beziehung zwischen Medien-Captures aus verschiedenen Capture-Szenen. Mit anderen Worten, jede Aufnahmeszene verwendet ihr eigenes räumliches Messsystem, wie in Abschnitt 6 beschrieben.¶

Ein Anbieter ordnet Captures in einer Capture-Szene an, um dem Verbraucher bei der Auswahl der zu rendernden Captures zu helfen. Die CSVs in einer Capture-Szene sind verschiedene Alternativen, die der Anbieter zur Darstellung der Capture-Szene vorschlägt. Jeder CSV-Datei wird eine eindeutige Identität für Werbung zugewiesen. Die Reihenfolge der CSVs innerhalb einer Capture-Szene hat keine Bedeutung. Der Medienkonsument kann wählen, ob er für jeden Medientyp (z. B. Audio und Video) alle Medien-Captures von einer CSV-Datei erhält, oder er kann Medien-Captures auswählen, unabhängig davon, wie der Anbieter sie in CSVs anordnet. Unterschiedliche CSV-Dateien desselben Medientyps sind nicht unbedingt Alternativen, die sich gegenseitig ausschließen. Beachten Sie auch, dass das Vorhandensein mehrerer CSVs (mit möglicherweise mehreren Kodierungsoptionen in jeder Ansicht) in einer bestimmten Capture-Szene nicht unbedingt bedeutet, dass ein Anbieter alle zugehörigen Medien gleichzeitig bedienen kann (obwohl der Aufbau eines solchen überreichen Captures Szene ist wahrscheinlich in vielen Fällen nicht sinnvoll). Was ein Provider gleichzeitig senden kann, wird durch den Simultaneous Transmission Set-Mechanismus bestimmt, der in Abschnitt 8 beschrieben wird.¶

Captures innerhalb derselben CSV-Datei MÜSSEN vom selben Medientyp sein – es ist beispielsweise nicht möglich, Audio- und Video-Captures in derselben CSV-Datei zu mischen. Der Anbieter MUSS in der Lage sein, alle Captures (die eine Encoding Group haben) gleichzeitig in einer einzigen CSV zu kodieren und zu senden. Die Reihenfolge der Captures innerhalb einer CSV hat keine Bedeutung. Ein Verbraucher kann sich entscheiden, alle Captures in einer einzigen CSV-Datei zu erhalten, aber ein Verbraucher könnte sich auch dafür entscheiden, nur eine Teilmenge dieser Captures zu erhalten. Ein Verbraucher kann sich auch dafür entscheiden, Captures von verschiedenen CSVs zu empfangen, die alle den Einschränkungen unterliegen, die durch Simultanübertragungssätze festgelegt werden, wie in Abschnitt 8 beschrieben.¶

Wenn ein Anbieter eine Capture-Szene mit mehreren CSVs ankündigt, signalisiert dies im Wesentlichen, dass mehrere Darstellungen derselben Capture-Szene verfügbar sind. In einigen Fällen werden diese mehreren Ansichten gleichzeitig verwendet (z. B. eine "Videoansicht" und eine "Audioansicht"). In einigen Fällen wären die Ansichten konzeptionell Alternativen (z. B. eine Ansicht, die aus drei Videoaufnahmen besteht, die den gesamten Raum abdecken, im Vergleich zu einer Ansicht, die nur aus einer einzigen Videoaufnahme besteht, die nur die Mitte eines Raums abdeckt). In diesem letzteren Beispiel wäre eine sinnvolle Wahl für einen Verbraucher, (durch seine Konfiguration und möglicherweise durch einen zusätzlichen Angebots-/Antwortaustausch) die Captures dieser CSV-Datei anzugeben, die der Anzahl der Anzeigegeräte oder dem Bildschirmlayout des Verbrauchers am besten entsprechen.¶

Im Folgenden finden Sie ein Beispiel für vier potenzielle CSVs für einen Anbieter im Endpoint-Stil:¶

  1. (VC0, VC1, VC2) - Videoaufnahmen mit der linken, mittleren und rechten Kamera¶
  2. (MCC3) - Videoaufnahme mit dem lautesten Raumsegment verbunden¶
  3. (VC4) - Videoaufnahme verkleinerte Ansicht aller Personen im Raum¶
  4. (AC0) - Hauptaudio¶

Die erste Ansicht in diesem Beispiel einer Aufnahmeszene ist eine Liste von Videoaufnahmen, die eine räumliche Beziehung zueinander aufweisen. Die Bestimmung der Reihenfolge dieser Captures (VC0, VC1 und VC2) für Rendering-Zwecke wird durch die Verwendung ihrer Capture-Area-Attribute erreicht. Die zweite Ansicht (MCC3) und die dritte Ansicht (VC4) sind alternative Darstellungen des Videos desselben Raums, die für die Rendering-Funktionen einiger Verbraucher möglicherweise besser geeignet sind. Die Aufnahme des Audio-Captures in dieselbe Capture-Szene zeigt an, dass AC0 mit all diesen Video-Captures verknüpft ist, d. h. es stammt aus derselben räumlichen Region. Wenn also überhaupt Audio gerendert werden sollte, wäre dieses Audio die richtige Wahl, unabhängig davon, welche Video-Captures ausgewählt wurden.¶

7.3.1. Szenenattribute aufnehmen

Capture-Szenenattribute können sowohl auf Capture-Szenen als auch auf einzelne Medien-Captures angewendet werden. Auf dieser Ebene angegebene Attribute gelten für alle zugehörigen Captures. Die Attribute der Aufnahmeszene umfassen Folgendes:¶

  • Für Menschen lesbare Beschreibung der Aufnahmeszene, die in mehreren Sprachen vorliegen kann¶
  • xCard-Szeneninformationen¶
  • Skaleninformationen ("Millimeter", "Unbekannte Skala", "Keine Skala"), wie in Abschnitt 6 beschrieben¶
7.3.1.1. Szeneninformationen

Das Attribut „Szeneninformationen“ stellt Informationen zur Aufnahmeszene und nicht zu einzelnen Teilnehmern bereit. Der Anbieter kann die Informationen automatisch oder manuell aus einer Vielzahl von Quellen sammeln. Das Szeneninformationsattribut ermöglicht es einem Anbieter, Informationen wie etwa organisatorische oder geografische Informationen anzugeben, die es einem Verbraucher ermöglichen, zu bestimmen, welche Aufnahmeszenen von Interesse sind, um dann eine Aufnahmeauswahl durchzuführen. Es ermöglicht einem Verbraucher auch, Informationen bezüglich der Szene zu rendern oder für die weitere Verarbeitung zu verwenden.¶

Gemäß Abschnitt 7.1.1.10 wird das xCard-Format verwendet, um diese Informationen zu übermitteln, und der Anbieter kann eine minimale Menge an Informationen oder eine größere Menge an Informationen bereitstellen.¶

Um CLUE-Nachrichten kompakt zu halten, SOLLTE der Anbieter einen URI verwenden, um auf jedes LOGO, FOTO oder SOUND zu verweisen, das in der xCard enthalten ist, anstatt die LOGO-, FOTO- oder SOUND-Daten in einer CLUE-Nachricht zu übertragen.¶

7.3.2. Szenenansichtsattribute erfassen

Eine Aufnahmeszene kann zusätzlich zu den oben beschriebenen Attributen für die gesamte Aufnahmeszene eine oder mehrere CSV-Dateien enthalten. CSV-Attribute gelten für die CSV als Ganzes, d. h. für alle Captures, die Teil der CSV sind.¶

CSV-Attribute umfassen Folgendes:¶

7.4. Globale Ansichtsliste

Eine Anzeige kann eine optionale globale Ansichtsliste enthalten. Jedes Element in dieser Liste ist eine globale Ansicht. Der Anbieter kann mehrere globale Ansichten einschließen, damit ein Verbraucher Sätze von Erfassungen auswählen kann, die seinen Fähigkeiten oder seiner Anwendung entsprechen. Die Entscheidung, wie diese Vorschläge in der Global View-Liste für alle Szenen gemacht werden, für die der Anbieter Medien senden kann, liegt beim Anbieter. Dies ist sehr ähnlich wie jede CSV-Datei eine bestimmte Szene darstellt.¶

Nehmen wir als Beispiel an, dass eine Anzeige drei Szenen hat und jede Szene drei CSVs hat, die von einem bis drei Video-Captures in jeder CSV reichen. Der Anbieter bewirbt insgesamt neun Video-Captures in drei Szenen. Der Anbieter kann die globale Ansichtsliste verwenden, um Alternativen für Verbraucher vorzuschlagen, die nicht alle neun Videoaufnahmen als separate Medienstreams empfangen können. Um einem Verbraucher gerecht zu werden, der drei Videoaufnahmen erhalten möchte, könnte ein Anbieter eine globale Ansicht vorschlagen, die nur eine einzige CSV mit drei Aufnahmen und nichts von den anderen beiden Szenen enthält. Oder ein Anbieter könnte eine globale Ansicht vorschlagen, die drei verschiedene CSVs enthält, eine aus jeder Szene, mit jeweils einem einzelnen Video-Capture.¶

  • Die Reihenfolge der globalen Ansichten in der Liste der globalen Ansichten ist unbedeutend.¶
  • Die Reihenfolge der CSVs innerhalb jeder globalen Ansicht ist unbedeutend.¶
  • Eine bestimmte CSV-Datei kann in mehreren globalen Ansichten verwendet werden.¶
  • Der Provider muss in der Lage sein, alle Captures innerhalb der CSVs einer bestimmten Global View gleichzeitig zu kodieren und zu senden.¶

Die folgende Abbildung zeigt ein Beispiel für den Aufbau von Global Views in einer Global View List.¶


3 Antworten 3

Dies wird in Kapitel 10 von . behandelt Linux-Gerätetreiber, 3. Auflage, von Corbet et al. Es ist kostenlos online verfügbar, oder Sie können ein paar Schekel O'Reillys Weg für tote Bäume oder E-Book-Formulare werfen. Der für Ihre Frage relevante Teil beginnt auf Seite 278 im ersten Link.

Hier ist mein Versuch, diese drei Seiten zu paraphrasieren, plus andere Bits, die ich gegoogelt habe:

Wenn Sie einen gemeinsam genutzten IRQ-Handler registrieren, überprüft der Kernel Folgendes:

ein. kein anderer Handler für diesen Interrupt existiert, oder

b. alle, die sich bereits registriert haben ebenfalls angeforderte Unterbrechungsfreigabe requested

Wenn einer der beiden Fälle zutrifft, wird überprüft, ob Ihr dev_id-Parameter eindeutig ist, damit der Kernel die mehreren Handler unterscheiden kann, z. beim Entfernen des Handlers.

Wenn ein PCI¹-Hardwaregerät die IRQ-Leitung auslöst, wird der Low-Level-Interrupt-Handler des Kernels aufgerufen, und dieser wiederum ruft alle der registrierten Interrupt-Handler, wobei jeder die dev_id zurückgibt, die Sie verwendet haben, um den Handler über request_irq() zu registrieren.

Der dev_id-Wert muss maschinenspezifisch sein. Die übliche Methode besteht darin, einen Zeiger auf die gerätespezifische Struktur zu übergeben, die Ihr Treiber verwendet, um dieses Gerät zu verwalten. Da sich dieser Zeiger im Speicher Ihres Treibers befinden muss, damit er für den Treiber nützlich ist, ist er ipso facto einzigartig für diesen Treiber.²

Wenn mehrere Treiber für einen bestimmten Interrupt registriert sind, werden sie alle angerufen werden, wenn irgendein der Geräte löst diese gemeinsame Interrupt-Leitung aus. Wenn dies nicht das Gerät Ihres Treibers war, wird dem Interrupt-Handler Ihres Treibers ein dev_id-Wert übergeben, der nicht dazu gehört. Der Interrupt-Handler Ihres Treibers muss in diesem Fall sofort zurückkehren.

Ein anderer Fall ist, dass Ihr Treiber mehrere Geräte verwaltet. Der Interrupt-Handler des Treibers erhält einen der dev_id-Werte, die dem Treiber bekannt sind. Ihr Code soll jedes Gerät abfragen, um herauszufinden, welches den Interrupt ausgelöst hat.

Das Beispiel Corbet et al. geben ist das von einem PC Parallelport. Wenn er die Interrupt-Leitung aktiviert, setzt er auch das oberste Bit in seinem ersten Geräteregister. (Das heißt, inb(0x378) & 0x80 == true , unter Annahme einer Standard-I/O-Portnummerierung.) Wenn Ihr Handler dies erkennt, soll er seine Arbeit verrichten und dann den IRQ löschen, indem Sie den aus dem I/O gelesenen Wert schreiben. O Port zurück zum Port, wobei das oberste Bit gelöscht ist.

Ich sehe keinen Grund, warum ein bestimmter Mechanismus etwas Besonderes ist. Ein anderes Hardwaregerät könnte einen anderen Mechanismus wählen. Das einzig Wichtige ist, dass ein Gerät, damit es gemeinsame Interrupts zulässt, eine Möglichkeit für den Treiber haben muss lesen den Unterbrechungsstatus des Geräts und eine Möglichkeit, klar die Unterbrechung. Sie müssen das Datenblatt oder das Programmierhandbuch Ihres Geräts lesen, um herauszufinden, welchen Mechanismus Ihr spezielles Gerät verwendet.

Wenn Ihr Interrupt-Handler dem Kernel mitteilt, dass er den Interrupt verarbeitet hat, hält das den Kernel nicht davon ab, weitere für denselben Interrupt registrierte Handler aufzurufen. Dies ist unumgänglich, wenn Sie bei pegelgetriggerten Interrupts eine Interrupt-Leitung teilen möchten.

Stellen Sie sich vor, dass zwei Geräte gleichzeitig dieselbe Interrupt-Leitung aktivieren. (Oder zumindest so zeitnah, dass der Kernel keine Zeit hat, einen Interrupt-Handler aufzurufen, um die Zeile zu löschen und dadurch die zweite Assertion als getrennt zu betrachten.) Der Kernel muss alle Handler für diese Interrupt-Zeile aufrufen, um jeden zu geben eine Möglichkeit, die zugehörige Hardware abzufragen, um zu sehen, ob sie Aufmerksamkeit benötigt. Es ist durchaus möglich, dass zwei verschiedene Treiber einen Interrupt innerhalb desselben Durchlaufs durch die Handlerliste für einen gegebenen Interrupt erfolgreich behandeln.

Aus diesem Grund muss Ihr Treiber dem Gerät unbedingt mitteilen, dass es seine Interrupt-Assertion löschen soll, bevor der Interrupt-Handler zurückkehrt. Was sonst passiert, ist mir nicht klar. Die kontinuierlich geltend gemachte Interrupt-Zeile führt entweder dazu, dass der Kernel kontinuierlich die gemeinsam genutzten Interrupt-Handler aufruft, oder sie maskiert die Fähigkeit des Kernels, neue Interrupts zu sehen, sodass die Handler nie aufgerufen werden. So oder so, Katastrophe.

Ich habe oben PCI angegeben, weil alle oben genannten pegelgesteuerten Interrupts voraussetzen, wie sie in der ursprünglichen PCI-Spezifikation verwendet werden. ISA verwendete flankengetriggerte Interrupts, was die gemeinsame Nutzung bestenfalls schwierig und selbst dann nur möglich machte, wenn sie von der Hardware unterstützt wurden. PCIe verwendet nachrichtensignalisierte Interrupts Die Interrupt-Nachricht enthält einen eindeutigen Wert, den der Kernel verwenden kann, um das Round-Robin-Ratespiel zu vermeiden, das beim PCI-Interrupt-Sharing erforderlich ist. PCIe kann das Interrupt-Sharing überflüssig machen. (Ich weiß nicht, ob es das tatsächlich tut, nur dass es das Potenzial dazu hat.)

Linux-Kernel-Treiber teilen sich alle den gleichen Speicherplatz, aber ein nicht verwandter Treiber sollte nicht im Speicherplatz eines anderen herumwühlen.Wenn Sie diesen Zeiger nicht weitergeben, können Sie ziemlich sicher sein, dass ein anderer Treiber nicht versehentlich den gleichen Wert ausgibt.


Schau das Video: Hypnoterapi GI SLIPP på Uro, Tankekjør u0026 Negative Følelser Fra Fortiden. Guided Meditasjon