Ich habe einen Auftrag für die Universität, und meine Aufgabe ist es, die in Videospielen verwendeten Texturen und ihre Entwicklung zu diskutieren.
Meine Hauptfrage ist, was ist der grundlegende Unterschied zwischen der Verwendung eines Sprites oder einer anderen Texturmethode?
Nachdem ich ein wenig nachgeforscht habe, bin ich anscheinend geneigt, dass Sprites Bilder in einer einzigen Datei speichern und für Animationen usw. verwendet werden können. Sie wurden häufig mit älteren Videospielen verwendet und verwenden im Allgemeinen Sprites als all ihre visuellen Spiele. Bei modernen Spielen werden Sprites meines Erachtens weniger häufig verwendet, da technologische Fortschritte und andere Texturen wie Bump-Mapping verfügbar sind. Obwohl Sprites auch heute noch verwendet werden, um Funktionen wie eine Gesundheitsleiste oder Texturen für große Entfernungen aufzunehmen.
Aber was sind die Hauptvorteile der Verwendung von Texturen gegenüber Sprites?
quelle
Antworten:
Letztendlich sind Sprites und Texturen nur Bilder - Blöcke von Rasterfarbdaten (obwohl wir manchmal die Grenzen ein wenig verschieben, um Nicht-Bilddaten darin zu platzieren). Der Unterschied liegt hauptsächlich in der Art und Weise, wie wir sie verwenden.
Wir bezeichnen ein Bild (oder einen Teil eines Bildes, der viele separate Teile enthält) normalerweise als "Sprite", wenn der beabsichtigte Rendering-Zweck darin besteht, direkt und ohne perspektivische Verzerrung auf das 2D-Raster des Bildschirms gezeichnet zu werden. Was Sie also im laufenden Spiel sehen, ist im Grunde das, was Sie in der Bilddatei selbst sehen (abgesehen von Farbtönung / Palettentausch / Transparenzeffekten). Dies gilt für die Hintergrundkacheln und Charaktere / interaktiven Objekte in 2D-Spielen, "Billboard" -Karten wie Partikel und ältere Stile des Tree & Shrub-Renderings sowie für die Elemente und Symbole der Benutzeroberfläche in 3D-Spielen.
Wenn wir umgekehrt ein Bild verwenden, um Oberflächendetails für die Polygone eines 3D-Objekts bereitzustellen, die möglicherweise perspektivisch gezeichnet werden, nennen wir dieses Bild normalerweise eine "Textur". Dieser Name hat sich auf andere Verwendungszwecke von Bilddaten übertragen, um das Rendering von etwas anderem zu modulieren, auch wenn es nicht mehr um Textur in dem Sinne geht, wie Sie es mit Ihren Fingerspitzen fühlen könnten - etwa Reflexionen, Verzerrungskarten, Überlagerungen, Masken oder Ähnliches Die allgemeine Verwendung von Bildern, die wir nicht speziell benennen möchten, neigt dazu, in unserer losen Nomenklatur unter "Textur" zusammengefasst zu werden.
Das macht die Grenzen zwischen den beiden unscharf und nicht besonders streng. Wenn ich ein Bild habe, das eine Folge von Feuer- und Rauchfahnen enthält, die zum Zeichnen von Partikeln auf Plakatwänden für einen Explosionseffekt verwendet werden sollen, kann ich das austauschbar als "Spritesheet" oder "Flipbook-Textur" bezeichnen. Oder wenn ich ein Kachelset-Bild habe, das alle Hintergrundkacheln für ein 2D-Spiel enthält, könnte ich das heute als "Texturatlas" bezeichnen, analog zu Atlas-Texturen, die für 3D-Spiele entwickelt wurden, obwohl die Daten und die Verwendung in meinem 2D-Spiel nicht zu unterscheiden sind von dem, was jemand anderes ein Spritesheet nennen würde. Wenn ich ein Rechteck mit Geometrie habe, dessen Zweck darin besteht, ein einzelnes Bild auf dem Bildschirm darzustellen, kann ich das als "texturiertes Quad" oder "Sprite" bezeichnen, je nachdem, worauf ich bei der Verwendung besonderen Wert legen möchte.
(Beachten Sie in diesem letzten Beispiel, dass "Sprite" sowohl für das Quellbildsegment in unseren Spiel-Assets als auch für die Instanz einer gerenderten Spieleinheit steht, die dieses Bildsegment verwendet - eine andere Art und Weise, wie wir diese Terminologie etwas inkonsistent verwenden.)
Einige Engines und Bibliotheken kodieren diese Unterscheidung, indem sie Intent in ihre eigene Nomenklatur umwandeln. In Unity können Sie beispielsweise festlegen, dass ein Bild-Asset als "Sprite" importiert werden soll. Dies ermöglicht eine Reihe zusätzlicher Optionen, die häufig für Benutzeroberflächen-Images oder 2D-Spiel-Assets gewünscht werden, z Teile des Bildes als diskrete Einheiten in Ihrer Szenen- und Objekteinrichtung. In diesen Fällen bedeutet "Sprite" oft "ein Bild (eine Textur) plus Metadaten " - aber es wird immer noch wie gewöhnliche Texturen unter der Haube gerendert. Die zusätzliche Verpackung ist praktisch, sodass wir UV-Offsets und ähnliches nicht überall dort verwalten müssen, wo wir das Bild verwenden möchten.
quelle
Ein Sprite ist ein Relikt aus der Geschichte der Computerspiele. Denken Sie 8-Bit-Ataris um ca. 1980. Ein kleines Bild, normalerweise mit einer Deckungsbitmaske (oder einer speziellen "transparenten" Farbe), die eine Position auf dem Bildschirm hat und auf eine bestimmte Weise auf dem Bildschirm kombiniert wird. Mit Löchern, in denen "Löcher" im Sprite vorhanden sind, wie auf der Abdeckungskarte angegeben. Normalerweise auf eine Art und Weise, die "nur funktioniert" und auf eine Art und Weise, die leicht die Illusion von sich bewegenden Dingen ermöglicht, normalerweise durch Speichern und Wiederherstellen der überschriebenen ursprünglichen Bildschirmpixel.
Früher waren Sprites eine Hardwarefunktion auf Computern, früher konnten Sie sie mit automatisch gespeicherten Bildschirminhalten zeichnen / entzeichnen, früher konnten Sie nur eine sehr begrenzte Anzahl von ihnen haben (und nicht überlappend, yay!) Früher waren sie verdammt klein (wie 16x16) und limitiert.
Der Mauszeiger ist heutzutage das, was einem Sprite am nächsten kommt (und war auf manchen Systemen bis vor ca. 10-15 Jahren ein tatsächliches Sprite).
Heutzutage gibt es so etwas nicht wirklich, aber das Wort bleibt. Ein Sprite ist im Grunde ein kleines 2D-Bild, das Sie irgendwo zeichnen (zusammensetzen). Normalerweise durch Zeichnen eines kleinen strukturierten Quadrats.
Eine Textur ist dagegen das Konzept eines lesbaren Bildes, das in etwas moderneren Grafik-APIs verwendet wird. Oder genauer gesagt, ein Speicherbereich ("Puffer" im Sinne moderner APIs) mit einigen zugehörigen zusätzlichen Daten, wie z. B. der Größe, aus dem mit bestimmten Mitteln Daten abgetastet werden können. In der Regel, jedoch nicht unbedingt von einem Shader, der auf einer Grafikverarbeitungseinheit ausgeführt wird. Normalerweise, aber nicht unbedingt, mit normalisierten Koordinaten und normalerweise, aber nicht unbedingt, mit Filtern (und Mipmapping sowie einem bestimmten Randmodus und und und ...).
Daher kann eine Textur die Quelle der Daten sein, die Sie zum Zeichnen eines Sprites verwenden.
quelle
A00D
/AOOC
waren Opcode Sprites sicherlich der Zug- / undraw Framebuffer-modifizierende Art. BOBs, ja, das gab es auch, typische Amiga-Sache. Das war meiner Meinung nach die nächste Annäherung an eine heutige Textur (jede Größe, einmal in den Grafikprozessor hochladen, mehrmals zeichnen).Es ist eine Art Vergleich zwischen Äpfeln und Orangen. Eine Textur ist nur ein Bild, während ein Sprite ein Bild ist und wie es verwendet wird.
Wir verwenden weiterhin Sprites für 2D-Spiele und sie werden in 3D-Spielen in Partikeleffekten angezeigt. Heutzutage beziehen sich Sprites im Allgemeinen auf eine bestimmte Art von texturiertem Quad oder (selten, glaube ich) auf ein einzelnes Dreieck. Sogar UI-Elemente sind oft noch texturierte Quads - was ich Sprites nennen würde.
Früher wurden Sprites in den Speicher geladen und auf Punkte auf dem Bildschirm (buchstäblich Bildschirmspeicher) wie Stempel übertragen (Byte für Byte kopiert). In gewisser Weise machen wir das immer noch. Bei Sprite-Animationen ändern wir häufig die Beispielkoordinaten der Quelltextur, um Segmente von Texturen zu kopieren, die auf Quads gerendert werden sollen. Shader-Effekte wie Bump-Mapping werden auf die gleiche Weise aus Texturen abgetastet und können daher beispielsweise für Glow-Effekte in Sprites verwendet werden.
Insbesondere für 2D-Spiele ist dies eine stilistische Wahl. Man könnte zum Beispiel mit Sprites handgezeichnete oder gemalte Charaktere in einem Spiel komponieren. Die South Park-Spiele wären technisch ein Beispiel dafür.
Sie können also nicht wirklich nur eine Textur anstelle eines Sprites verwenden.
quelle
Hier ist eine einfache und kurze Antwort. Normalerweise stelle ich mir das Sprite als das gesamte Objekt neben den Funktionen und Texturen vor, die darauf angewendet werden sollen. Textur halte ich eigentlich nur für ein Bild, das auf etwas angewendet werden könnte.
quelle