ฉันจะหมุนสไปรต์ภาพพิกเซลโดยไม่ทำลายความสวยงามได้อย่างไร


12

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

ถ้าฉันใช้ Bilinear Interpolation อนิเมชั่นก็ใช้งานได้ แต่มันก็ดูเหมือน "ไฮบริด - อิช" และรูปแบบศิลปะก็หายไป ฉันอาจทำให้ภาพเคลื่อนไหวของฉันยุ่งเหยิงหรือทำให้ภาพศิลปะแย่ลง ฉันมองไม่เห็นทั้งคู่

มีวิธีอื่นในการแก้ปัญหานี้หรือไม่?

ป้อนคำอธิบายรูปภาพที่นี่


4
นั่นคือเกมของคุณคุณเป็นผู้ตัดสินใจ :)
Vaillancourt

การแก้ไขแบบ "เชิงเส้นเดียว" (ปกติเรียกว่า "การประมาณเชิงเส้น") เป็นตัวเลือกหรือไม่
ฟิลิปป์

1
ฉันตั้งคำถามใหม่เพื่อให้เสียงอิงความคิดเห็นน้อยลง
ฟิลิปป์

รออะไร? ฉันไม่ต้องการอนุมัติหรือไม่ : D
OC_RaizW

1
นอกจากนี้ยังมีความเป็นไปได้ของการหมุนโดยการตัดซึ่งจะย้ายพิกเซลอินพุตโดยไม่ต้องทำซ้ำ / ลบเลือน / ผสม
DMGregory

คำตอบ:


14

การหมุนพิกเซลแบบอัตโนมัติโดยมุมอื่น ๆ ที่เกิน 90 °มักจะผิด หากคุณต้องการรักษาความสวยงามของภาพพิกเซลคุณจะไม่สามารถวาดภาพศิลปะของคุณในแต่ละมุมได้

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

นี่คือตัวอย่างของสไปรท์ที่มีขนาดดั้งเดิมลดอัตราการคูณด้วยปัจจัย 3 โดยไม่มีการแก้ไขแล้วหมุนด้วย 30 °ด้วยการประมาณเชิงเส้น:

ป้อนคำอธิบายรูปภาพที่นี่


1
โดยพื้นฐานแล้วแต่ละพิกเซลจะกลายเป็น 10x10 พิกเซลหรืออย่างนั้น
จอห์น

2
@ จอห์นใช่นั่นคือสิ่งที่ฉันหมายถึงกับมารยาทย้อนยุค 10x10 อาจมีขนาดค่อนข้างใหญ่ (ขึ้นอยู่กับความละเอียดของแพลตฟอร์มฮาร์ดแวร์ที่คุณกำหนดเป้าหมายแน่นอน) แต่นั่นเป็นแนวคิด คุณมีผีสางซึ่งดูเหมือนชิ้นงานศิลปะ 16x32 พิกเซล แต่จริงๆแล้วเป็นพื้นผิว 48x96 โดยแต่ละพิกเซล "มองเห็น" จริง ๆ แล้วเป็น 3x3 พิกเซลที่มีสีเดียวกัน
ฟิลิปป์

thaaat เป็นเรื่องเดียวกันกับที่ฉันคิด ....
OC_RaizW

วิธีการเดียวกันนี้อยู่ใน Starbound เมื่อพิกเซล "มองเห็นได้" เป็นสี่เหลี่ยมจริง 3x3 จริง
trollingchar

16

มีลักษณะที่RotSprite

RotSprite เป็นอัลกอริทึมการปรับขนาดและการหมุนสำหรับ Sprite ที่พัฒนาโดย Xenowhirl มันสร้างสิ่งประดิษฐ์น้อยกว่าอัลกอริทึมการหมุนเพื่อนบ้านที่ใกล้ที่สุดและเช่นเดียวกับ EPX จะไม่แนะนำสีใหม่ให้กับภาพ (ซึ่งแตกต่างจากระบบการแก้ไขส่วนใหญ่)

ตัวอย่างของ RotSprite

อัลกอริทึมแรกปรับขนาดภาพเป็น 8 เท่าของขนาดดั้งเดิมด้วยอัลกอริธึม Scale2 ×ที่แก้ไขซึ่งถือว่าพิกเซลที่เหมือนกัน จากนั้นจะคำนวณว่าการหมุนแบบใดที่จะชดเชยการใช้งานโดยเลือกจุดตัวอย่างที่ไม่ใช่พิกเซลขอบเขต จากนั้นภาพที่หมุนจะถูกสร้างขึ้นด้วยอัลกอริธึมการปรับขนาดและการหมุนที่ใกล้เคียงที่สุดซึ่งจะลดขนาดภาพใหญ่ให้กลับไปเป็นขนาดดั้งเดิมและหมุนภาพ ในที่สุดรายละเอียดของพิกเซลเดี่ยวที่ถูกมองข้ามจะถูกกู้คืนหากพิกเซลที่สอดคล้องกันในภาพต้นฉบับนั้นแตกต่างกันและพิกเซลปลายทางมีเพื่อนบ้านสามคนที่เหมือนกัน

คุณสามารถใช้อัลกอริทึมนี้เป็นส่วนหนึ่งของรหัสวาดเกมของคุณหรือใช้เพื่อสร้างสินทรัพย์หมุนเวียนก่อน เครื่องมือภาพพิกเซลAsepriteได้รวม RotSprite เข้าเป็นส่วนหนึ่งของโปรแกรมแก้ไขภาพสไปรต์

GIF ของ rotsprite ที่ใช้งานจริง

นอกจากนี้ให้ดูที่กระทู้ในฟอรัม Unityเกี่ยวกับวิธีใช้ RotSprite ใน Unity รวมถึงข้อมูลทั่วไปเพิ่มเติมเกี่ยวกับ RotSprite


jeez ฉันดาวน์โหลดมันเพื่อความเป็นเอกภาพและทดสอบมัน - และผลลัพธ์มันยิ่งแย่ไปกว่าการเรนเดอร์พิกเซลแบบเอกภาพ .. แต่ขอบคุณ
OC_RaizW

@OC_RaizW ไม่น่าจะเกิดขึ้น คุณอาจต้องการติดต่อผู้พัฒนาเนื้อหาของ Unity
Rudey

-4

ด้านบนซ้ายของหน้าเป็นตัวเลือก: เลือกอัตโนมัติ: กลุ่ม & เลเยอร์ เลือกตัวเลือกเลเยอร์แล้วหมุน นั่นคือวิธีที่ไม่มีใครบอกคุณ


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