Sprite กับ Texture แตกต่างกันอย่างไร?


27

ฉันมีงานที่ต้องส่งสำหรับมหาวิทยาลัยและงานของฉันคือการพูดคุยเกี่ยวกับพื้นผิวที่ใช้ในวิดีโอเกมและวิธีการที่พวกเขามีวิวัฒนาการ

คำถามหลักของฉันคืออะไรแตกต่างพื้นฐานระหว่างการใช้สไปรต์หรือใช้วิธีการพื้นผิวอื่น ๆ คืออะไร?

หลังจากทำวิจัยเล็กน้อยด้วยตัวเองฉันดูเหมือนว่า Sprites จะเก็บรูปภาพไว้ในไฟล์เดียวและสามารถใช้สำหรับการเคลื่อนไหวและอื่น ๆ และมักใช้กับวิดีโอเกมรุ่นเก่าโดยทั่วไปใช้ sprite เป็นภาพเกม ขณะนี้ด้วยเกมที่ทันสมัยสไปรต์ฉันเชื่อว่ามีแนวโน้มที่จะใช้น้อยลงเนื่องจากความก้าวหน้าทางเทคโนโลยีและพื้นผิวอื่น ๆ ที่มีอยู่เช่นการทำแผนที่การชน แม้ว่าสไปรท์ยังคงใช้มาจนถึงทุกวันนี้เพื่อรองรับคุณสมบัติเช่นแถบสุขภาพหรือพื้นผิวทางไกล

แต่อะไรคือข้อได้เปรียบหลักของการใช้งานพื้นผิว



5
หนึ่งคือเครื่องดื่มและอีกอันไม่ใช่ (ฉันขอโทษสำหรับมุขตลกนี้)
CAD97

คำตอบ:


37

ในตอนท้ายของวันสไปรท์และพื้นผิวเป็นเพียงรูปภาพ - บล็อกของข้อมูลสีแบบแรสเตอร์ (แม้ว่าบางครั้งเราจะดันขอบเขตเล็กน้อยเพื่อใส่ข้อมูลที่ไม่ใช่ภาพลงในภาพ) ความแตกต่างเป็นส่วนใหญ่ในวิธีที่เราใช้พวกเขา

เรามักจะเรียกภาพ (หรือส่วนหนึ่งของภาพที่มีชิ้นส่วนแยกกันจำนวนมาก) "สไปรต์" หากวัตถุประสงค์การแสดงผลตั้งใจวาดลงบนกริด 2 มิติของหน้าจอโดยตรงโดยไม่มีการบิดเบือนมุมมอง ดังนั้นสิ่งที่คุณเห็นในเกมที่กำลังเล่นอยู่นั้นเป็นสิ่งที่คุณเห็นในไฟล์ภาพนั้นเอง (นอกเหนือจากการเปลี่ยนสี / เอฟเฟ็กต์สี / จานสี / ความโปร่งใส) สิ่งนี้ใช้กับกระเบื้องพื้นหลังและตัวละคร / วัตถุแบบโต้ตอบในเกม 2D, การ์ด "บิลบอร์ด" เช่นอนุภาคและรูปแบบเก่าของการแสดงผลต้นไม้และไม้พุ่มและองค์ประกอบองค์ประกอบส่วนติดต่อผู้ใช้และไอคอนในเกม 3D ด้วย

ในทางกลับกันถ้าเราใช้ภาพเพื่อให้รายละเอียดพื้นผิวสำหรับรูปหลายเหลี่ยมของวัตถุ 3 มิติที่อาจวาดในมุมมองเรามักจะเรียกภาพนั้นว่า "พื้นผิว" ชื่อนั้นนำไปใช้กับข้อมูลภาพอื่น ๆ เพื่อปรับการแสดงผลอย่างอื่นแม้ว่าพวกเขาจะไม่ได้สัมผัสกับพื้นผิวในแง่ที่คุณรู้สึกได้ด้วยปลายนิ้วของคุณ - สิ่งต่าง ๆ เช่นภาพสะท้อนแผนที่บิดเบือนภาพซ้อนทับหน้ากากหรืออื่น ๆ การใช้งานทั่วไปของรูปภาพที่เราไม่รู้สึกว่าต้องการตั้งชื่อโดยเฉพาะอย่างยิ่งมีแนวโน้มที่จะตกอยู่ภายใต้ "พื้นผิว" ในระบบการตั้งชื่อแบบหลวม ๆ ของเรา

นั่นทำให้ขอบเขตระหว่างทั้งสองไม่ชัดเจนและไม่เข้มงวดเป็นพิเศษ หากฉันมีภาพที่มีลำดับของไฟและควันพวยเพื่อใช้ในการวาดอนุภาคป้ายโฆษณาสำหรับเอฟเฟกต์การระเบิดฉันอาจเรียกว่า "spritesheet" หรือ "flipbook texture" สลับกันได้ หรือถ้าฉันมีภาพชุดไพ่ที่ประกอบด้วยพื้นหลังทั้งหมดสำหรับเกม 2D ฉันอาจเรียกว่า "แผนที่พื้นผิว" วันนี้โดยเปรียบเทียบกับพื้นผิวแผนที่สำหรับเกม 3D แม้ว่าข้อมูลและการใช้ในเกม 2D ของฉันนั้นแยกไม่ออก จากสิ่งที่คนอื่นจะเรียกว่าสไปรต์แผ่น หากฉันมีรูปสี่เหลี่ยมผืนผ้าเรขาคณิตที่มีวัตถุประสงค์เพื่อนำเสนอภาพเดียวไปยังหน้าจอฉันอาจเรียกว่า "รูปสี่เหลี่ยมพื้นผิว" หรือ "สไปรต์" ขึ้นอยู่กับสิ่งที่ฉันต้องการเน้นเกี่ยวกับการใช้งาน

(หมายเหตุในตัวอย่างสุดท้ายนี้ที่ "สไปรท์" หมายถึงทั้งส่วนภาพต้นฉบับในเนื้อหาเกมของเราและตัวอย่างของเอนทิตีเกมที่แสดงผลซึ่งใช้กลุ่มรูปภาพนี้ - อีกวิธีหนึ่งที่เราใช้คำศัพท์นี้อย่างไม่สอดคล้องกัน)

คุณจะพบว่าเอ็นจิ้นและห้องสมุดบางแห่งเข้ารหัสความแตกต่างนี้เพื่อแสดงเจตนาในระบบการตั้งชื่อของพวกเขาเอง ตัวอย่างเช่นใน Unity คุณสามารถเลือกที่จะนำเข้าเนื้อหารูปภาพเป็น "Sprite" - ซึ่งจะช่วยให้มีตัวเลือกชุดพิเศษที่เป็นที่ต้องการโดยทั่วไปสำหรับภาพ UI หรือเนื้อหาเกม 2D เช่น spritesheet slicing & packing และความสามารถในการอ้างอิง ส่วนต่างๆของภาพเป็นเอนทิตี้แบบแยกส่วนในฉากและการตั้งค่าวัตถุของคุณ ในกรณีเหล่านี้ "Sprite" มักจะหมายถึง "รูปภาพ (พื้นผิว) และข้อมูลเมตา " - แต่มันก็ยังแสดงผลเหมือนพื้นผิวธรรมดาภายใต้ประทุน บรรจุภัณฑ์พิเศษนั้นมีความสะดวกสบายดังนั้นเราไม่จำเป็นต้องลดขนาด UV micromanage และทุกที่ที่เราต้องการใช้ภาพ


"พื้นผิว" มักจะรวมหรืออนุญาตสำหรับพิกเซลแบบโปร่งใสหรือไม่? ฉันคิดว่าวัตถุที่ทำหน้าที่เป็นพื้นผิวเรียบที่ทำพิกเซลแบบแมปซึ่งมีพิกเซลโปร่งใสเป็น "sprite" ไม่ว่าพื้นผิวจะตั้งฉากกับแกนกล้องหรือไม่
supercat

2
แน่นอนพวกเขาสามารถทำได้โดยไม่ต้องสละชื่อ "พื้นผิว" เป็นเรื่องปกติที่จะเห็นผู้คนอ้างถึงรูปภาพสำหรับการแสดงผลพูดใบไม้หรือรั้วการเชื่อมโยงโซ่เป็น "พื้นผิวใบ" หรือ "พื้นผิวรั้ว" แม้ว่าพวกเขาจะแสดงผลด้วยความโปร่งใส alpha-test / dithered หรืออัลฟาผสม . เราอาจเรียกกรณีใบไม้ว่า "ใบสไปรต์" ถ้ามันกลายเป็นป้ายโฆษณาที่หันหน้ากล้อง แต่มันจะผิดปกติที่จะใช้ชื่อสไปรต์ถ้ามันถูกใช้กับเรขาคณิตมุมมองเหมือนรั้วสามมิติ
DMGregory

เมื่อเรนเดอร์วัตถุทึบแสงที่แมปพื้นผิวเอ็นจิ้นการเรนเดอร์ไม่จำเป็นต้องกังวลเกี่ยวกับลักษณะภายในของวัตถุเหล่านั้นเนื่องจากพื้นผิวทึบแสงจะซ่อนด้านใน ฉันคิดว่าบางสิ่งบางอย่างเช่นต้นไม้หรือรั้วเชื่อมโยงโซ่จะแสดงผลได้ดีที่สุดโดยการทำส่วนทึบแสงและจากนั้นให้แสดงชิ้นส่วนที่โปร่งใสบางส่วนเป็นพื้นผิวที่โปร่งใสบางส่วนที่ไม่ต่อเนื่อง ในขณะที่พวกเขาอาจไม่ตรงกับสิ่งที่บางคนเรียกว่า "สไปรท์" หากพวกเขาไม่หันหน้าเข้าหากล้องพวกเขาจะไม่เหมือนกับวัตถุ "ปกติ" เช่นกัน
supercat

โดยปกติจะเป็นวิธีการทำ รูปทรงเรขาคณิตสำหรับเสารั้วและลำต้นมีการแสดงผลในแบบทึบแสงจากนั้นรูปทรงเรขาคณิตสำหรับช่วงรั้วและใบไม้ / กิ่งไม้จะแสดงผลในการทดสอบอัลฟาหรืออัลฟาผสม
DMGregory

1
ฉันมักจะได้ยิน "พื้นผิวโปร่งใส" หรือ "พื้นผิวอัลฟ่า" / "พื้นผิวด้วยอัลฟ่า" - บางทีบางครั้ง "cutout" / "พื้นผิวคัตเอาท์" ถ้ามันเป็นโปร่งใสโปร่งใสยาก / อัลฟาทดสอบ
DMGregory

7

สไปรต์เป็นสิ่งที่สืบทอดมาจากประวัติศาสตร์ของเกมคอมพิวเตอร์ คิดว่า Ataris 8 บิตรอบ ๆ 1980. ภาพเล็ก ๆ มักจะมี bitmask ที่ครอบคลุม (หรือสีพิเศษ "โปร่งใส") ที่มีตำแหน่งบนหน้าจอและถูกรวมเข้ากับหน้าจอในบางวิธี กับหลุมที่มี "หลุม" ในสไปรต์ตามแผนที่ครอบคลุม โดยปกติจะอยู่ในรูปแบบ "ทำงานได้ดี" และในลักษณะที่อนุญาตให้ภาพลวงตาของสิ่งต่าง ๆ เคลื่อนที่ไปมาได้อย่างง่ายดายโดยบันทึกและเรียกคืนพิกเซลหน้าจอต้นฉบับที่เขียนทับ

เคยเป็นเทพดาที่มีคุณสมบัติฮาร์ดแวร์ในคอมพิวเตอร์เคยเป็นคุณสามารถวาด / ถอนพวกเขาด้วยเนื้อหาหน้าจอจะถูกบันทึกโดยอัตโนมัติเคยเป็นคุณจะมีจำนวน จำกัด เท่านั้น (และไม่ทับซ้อนใช่!) และเคยเป็นเช่นนั้นพวกมันค่อนข้างเล็ก (เช่น 16x16) และถูก จำกัด

เคอร์เซอร์เมาส์คือสิ่งที่มาใกล้เคียงกับเทพดาในปัจจุบัน (และเคยเป็นมันเป็นเทพดาที่เกิดขึ้นจริงในบางระบบจนบาง ~ 10-15 ปีที่ผ่านมา)

ทุกวันนี้ไม่มีสิ่งนั้นอยู่จริง แต่คำนั้นยังคงอยู่ สไปรท์นั้นเป็นภาพ 2D ขนาดเล็กที่คุณวาด (ประกอบ) ที่ไหนสักแห่ง โดยปกติแล้วการวาดรูปสี่เหลี่ยมขนาดเล็กที่มีพื้นผิว

ในทางกลับกันพื้นผิวเป็นแนวคิดของภาพที่อ่านได้ที่ใช้ในกราฟิก API ที่ค่อนข้างทันสมัยกว่า หรืออย่างแม่นยำยิ่งขึ้นขอบเขตของหน่วยความจำ ("บัฟเฟอร์" ในแง่ของ API ที่ทันสมัย) พร้อมกับข้อมูลเพิ่มเติมที่เกี่ยวข้องเช่นขนาดซึ่งสามารถสุ่มตัวอย่างได้จากวิธีการบางอย่าง โดยปกติแล้ว แต่ไม่จำเป็นว่าจะต้องมี shader ที่ทำงานบนหน่วยประมวลผลกราฟิก โดยปกติแล้ว แต่ไม่จำเป็นต้องมีพิกัดปกติและโดยปกติแล้ว แต่ไม่จำเป็นต้องมีการกรอง (และการทำแผนที่และโหมดเส้นขอบบางอย่างโดยเฉพาะและและและและและ ... )

ดังนั้นพื้นผิวอาจเป็นแหล่งของข้อมูลที่คุณใช้ในการวาดสไปรต์


3
Sprite ที่เหมาะสมจะถูกซ้อนทับในฮาร์ดแวร์ดังนั้นข้อมูลวิดีโอในหน่วยความจำจะไม่เปลี่ยนแปลงและไม่จำเป็นต้องใช้โหมดเดียวกัน (เช่นบน C64 คุณสามารถมี Sprites บิตแมปเหนือพื้นหลังข้อความ) วัตถุที่เรนเดอร์ด้วยการบันทึกบิตแมปและการแทนที่ข้อมูลเรียกว่า BOBs (Blitter OBjects)
Simon Richter

1
@SimonRichter: ฉันไม่คุ้นเคยกับ C64 ที่เล่นเป็นของเล่น แต่ Amiga ก็มีพวกนั้นด้วย 8 คนถ้าฉันจำได้ถูกต้อง ไม่แน่ใจว่ามันทำงานอย่างไรกับระดับฮาร์ดแวร์ แต่อาจมีการซ้อนทับโดยตรง (ดูเหมือนจะเป็นไปได้) บน ST สไปรท์A00D/ AOOCopcode นั้นแน่นอนว่าเป็นชนิดของการแก้ไขเฟรมการวาด / ไม่ได้วาด บ๊อบใช่ว่ามีอยู่ด้วยเหมือนกันกับสิ่งทั่วไปของเอมิ นั่นเป็นสิ่งที่ใกล้เคียงกับพื้นผิวปัจจุบันมากที่สุดฉันเดา (ขนาดใดก็ได้อัปโหลดไปยังหน่วยประมวลผลกราฟิกหนึ่งครั้งวาดหลาย ๆ ครั้ง)
Damon

4

มันจัดเรียงของแอปเปิ้ลและส้มเปรียบเทียบ พื้นผิวเป็นเพียงภาพในขณะที่ผีสางเป็นภาพและวิธีการใช้งาน

เรายังคงใช้สไปรต์สำหรับเกม 2 มิติและพวกมันแสดงในเกม 3 มิติในเอฟเฟกต์อนุภาค ทุกวันนี้สไปรท์หมายถึงรูปสี่เหลี่ยมพื้นผิวชนิดหนึ่งหรือ (ฉันไม่ค่อยคิด) สามเหลี่ยมเดียว แม้แต่องค์ประกอบของ UI ก็ยังเป็นคณะสี่คนซึ่งฉันเรียกว่าสไปรต์

มันเคยเป็นกรณีที่ sprite ถูกโหลดไว้ในหน่วยความจำและ blitted (byte-for-byte mem-copy) ไปยังจุดบนหน้าจอ (แท้จริง, หน่วยความจำหน้าจอ), เช่นแสตมป์ ในบางวิธีเรายังคงทำเช่นนั้น สำหรับภาพเคลื่อนไหวสไปรต์เรามักจะปรับเปลี่ยนตัวอย่างพิกัดของพื้นผิวแหล่งที่มาเพื่อคัดลอกส่วนจากพื้นผิวที่จะแสดงลงบนสี่คน เอฟเฟกต์ Shader เช่นการทำแผนที่แบบกระแทกตัวอย่างจากพื้นผิวในลักษณะเดียวกันและยังสามารถใช้งานได้สำหรับการพูดเอฟเฟกต์แสงในสไปร

โดยเฉพาะอย่างยิ่งกับเกม 2d มันเป็นตัวเลือกที่มีสไตล์ ยกตัวอย่างเช่นตัวละครที่วาดด้วยมือหรือทาสีในเกมโดยใช้สไปรต์ เกม South Park จะเป็นตัวอย่างของเทคนิค

ดังนั้นคุณไม่สามารถใช้เพียงพื้นผิวแทนสไปรต์ได้


3

นี่คือคำตอบที่ง่ายและสั้น ฉันมักจะคิดว่าผีสางเป็นวัตถุทั้งหมดตัวเองควบคู่ไปกับสิ่งที่ฟังก์ชั่นและพื้นผิวที่จะนำไปใช้กับมัน สำหรับพื้นผิวฉันคิดว่ามันเป็นแค่ภาพที่สามารถนำไปใช้กับบางสิ่งได้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.