ทำไมกราฟิกเกมไม่สวยงามเหมือนภาพยนตร์การ์ตูน?


60

ฉันจำได้ว่ากำลังดูตัวอย่าง Tomb Raider ที่แสดงล่วงหน้าและต้องการกราฟิกเหล่านั้นในเกม

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

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

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


1
ฉันไม่เห็นว่าคำตอบที่ตอบรับนั้นตรงกับคะแนนของคำถามของคุณอย่างไร คุณสามารถแสดงความคิดเห็นได้ที่นี่เป็นบทสรุปของสิ่งที่คุณเข้าใจจากมันคือข่าวอะไรที่นำมาให้คุณดังนั้นตอนนี้คุณจึงเข้าใจปัญหาที่คุณไม่เคยทำมาก่อน?
Bogdan Alexandru

4
ไม่แน่ใจว่าคุณสับสนอะไร คำถามคือชื่อ; โพสต์ที่ยอมรับตอบคำถามนั้น
jhocking

2
ที่จริงฉันเข้าใจ 80% จากคำตอบ ส่วนที่เหลือครอบคลุม 20% โดยเฉพาะฉันได้เรียนรู้มากมายจากคำตอบของ @ Vladimir (ดูด้านล่าง) บางคำตอบแม้จะพูดถึงสิ่งที่ฉันไม่ได้คิดเช่นเพิ่มรายละเอียดหลังจากแสดงผล และเพื่อตอบคำถามคุณฉันเลือกคำตอบเพราะฉันคิดว่ามันนำมาซึ่งความเข้าใจในระดับที่ลึกกว่า (ไม่เพียง แต่เขาพูดถึงประเด็นต่างๆ และเมื่อถึงเวลานั้นฉันก็อ่านข้อความนี้จบคำตอบอื่น ๆ ก็น่าทึ่งมาก! มันยากที่จะเลือกว่าอันไหนดีที่สุด แต่คนก็ดูเหมือนจะชอบแบบนั้นเช่นกัน! ฉันจะทำเครื่องหมายพวกเขาทั้งหมด!
cowboysaif

อาจเป็นเพราะผู้พัฒนาเกมไม่มีความสนใจในการใช้เงิน $ 50,000,000 + กับเอฟเฟกต์บางสิ่งที่ผู้ผลิตภาพยนตร์ทำกันเป็นประจำทุกวันนี้
Pieter Geerkens

คำตอบ:


109

คุณกล่าวถึงหนึ่งในจุดกลาง: เวลา

ในกระบวนการที่อยู่เบื้องหลังการแสดงผลภาพเคลื่อนไหวความคมชัดสูงวิธีการที่แตกต่างกันหลายรูปแบบและขั้นตอนวิธีการใช้ (ทั้งหมดรวมกันมักจะอยู่ภายใต้คำว่า"โลกสว่าง" ) กับRay-ติดตามเป็นหนึ่งในคนที่พบมากที่สุด (คนอื่น ๆ รวมถึงตัวอย่างRadiosityและAmbient Occlusion )

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

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

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

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

ในทำนองเดียวกันเกมมักจะใช้ตาข่ายที่แตกต่างกันสำหรับวัตถุโดยขึ้นอยู่กับว่าพวกมันอยู่ไกลแค่ไหนโดยที่วัตถุที่อยู่ไกลออกไปนั้นมีรายละเอียดน้อยลง (คำศัพท์: LoD = ระดับของรายละเอียด )

สรุป:ในกราฟิกแบบเรียลไทม์ (เช่นเกมและการจำลอง) กระบวนการแสดงผลที่มีรายละเอียดและซับซ้อนนี้แน่นอนว่าจะไม่ทำงานเพื่อสร้างฉากลื่นไหลหรือลื่นไหล คุณต้องการอย่างน้อย 20 เฟรมเรนเดอร์ต่อวินาทีเพื่อให้ได้เอฟเฟกต์เคลื่อนไหว / การเคลื่อนไหวของเหลวสำหรับดวงตามนุษย์ ในอีกด้านหนึ่งการเรนเดอร์เฟรมเดียว (!) ในภาพยนตร์แอนิเมชั่นสามารถกินอะไรจากสองสามชั่วโมงจนถึงหลายวันขึ้นอยู่กับปัจจัยหลายอย่างเช่นจำนวนรังสีที่ใช้ใน Ray-Tracing หรือจำนวนตัวอย่างสำหรับ Ambient การบดเคี้ยว (ดูพิกซาร์หน้า 1 / พิกซาร์หน้า 2เหล่านี้ สำหรับภาพหน้าจอของ 16 และ 256 ตัวอย่าง) รวมถึงความละเอียดของภาพยนตร์ที่ต้องการ ดูบทความนี้ด้วยเกี่ยวกับกระบวนการเบื้องหลังภาพยนตร์อนิเมชันของMonsters University ที่ให้ข้อมูลเชิงลึกที่น่าสนใจและยังกล่าวถึงเวลาในการแสดงภาพ 29 ชั่วโมงต่อเฟรม

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

แต่แน่นอนคุณภาพในแอปพลิเคชันแบบเรียลไทม์เพิ่มขึ้นตลอดเวลาด้วยเหตุผลสองประการ:

  1. ฮาร์ดแวร์ที่แข็งแกร่ง: เมื่อคอมพิวเตอร์ (เล่นเกม) ดีขึ้น (= มากกว่า [ขนาน] พลังการประมวลผลการส่งข้อมูลที่สูงขึ้นระหว่างส่วนประกอบคอมพิวเตอร์หน่วยความจำมากขึ้นและเร็วขึ้น ฯลฯ ) ความเที่ยงตรงของภาพก็เพิ่มขึ้นเช่นกันเพราะการคำนวณใช้เวลามากขึ้น เป็นไปได้ในระบบเรียลไทม์
  2. วิธีการ / สูตรที่ชาญฉลาดกว่านั้นได้รับการพัฒนาและนำไปใช้ซึ่งสามารถสร้างเอฟเฟกต์ที่เหมือนจริงได้โดยไม่จำเป็นต้องมีการถ่ายภาพรังสี สิ่งนี้มักเกี่ยวข้องกับการประมาณและบางครั้งข้อมูลที่คำนวณล่วงหน้า ตัวอย่างบางส่วน:


4
@cowboysaif ไม่คุณไม่สามารถทำได้บน GPU "ตามที่เป็นอยู่" คุณจะต้องได้รับ HW พิเศษ อย่างไรก็ตามมีความพยายามที่จะทำ raytracing เรียลไทม์โดยใช้ CUDA หรือเทคโนโลยีที่คล้ายกัน
wondra

4
มีเทคนิคอื่น ๆ อีกมากมายนอกเหนือจาก raytracing ที่ใช้ในการเรนเดอร์ออฟไลน์เมื่อสร้างภาพยนตร์คุณภาพระดับมืออาชีพ แต่อย่างที่คุณพูดพวกเขาใช้การเรนเดอร์แสงและเทคนิคการแรเงาที่มีราคาแพง
MrCranky

40
คำตอบนี้อธิบายว่าทำไมภาพเคลื่อนไหวที่แสดงล่วงหน้าใช้เวลามากขึ้น แต่ไม่ได้ให้ความรู้สึกถึงระดับ ความแตกต่างนั้นใหญ่มาก ! เกมจะต้องสร้างเฟรมภายในเวลาไม่เกิน 1/30 วินาทีในขณะที่ภาพยนตร์จะใช้เวลาหลายวันในการแสดงแต่ละเฟรม
jhocking

9
"วัน" เป็นที่แน่นอนปลายสูงของขนาดเวลา แต่ใช่ภาพยนตร์ไม่บางครั้งใช้เวลานานกว่า 1 วันจะทำให้กรอบเดียว (โปรดดูที่นี่เช่นventurebeat.com/2013/04/24/... ) และแม้กระทั่งที่ค่าเฉลี่ย เวลาในการเรนเดอร์มันยังคงเหมือนครึ่งวันต่อเฟรมซึ่งยังคงรอนานกว่าเกมที่ต้องเรนเดอร์ เหตุผลที่ภาพยนตร์เรื่องนี้ใช้เวลาแสดงไม่ถึงทศวรรษก็เพราะพวกเขามีฟาร์มเรนเดอร์เช่น หลายร้อยเครื่องแสดงผลในเวลาเดียวกัน
jhocking

7
ข้อเท็จจริงบางประการ: raytracing ถูกนำมาใช้ทุกที่มันไม่ใช่เทคนิคเฉพาะ VRay เป็น CPU เท่านั้น VRayRT เป็น GPU เท่านั้น GPU ไม่เหมาะสำหรับการผลิตเพราะฉากมักใช้ RAM จำนวนมากและไม่เหมาะกับ GPU (แต่บางครั้งก็ช่วยได้) ภาพของเราใช้เวลา 1-2 ชั่วโมง / เฟรมในซีพียูระดับสูงและไม่นานขนาดนั้น JackAidley ผิดอย่างสิ้นเชิง
Calvin1602

44

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

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

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


12
จุดที่ไม่ควรประมาท การเรนเดอร์เฟรมคงที่ช่วยให้โฟกัสได้อย่างสมบูรณ์ในเฟรมเหล่านั้นสิ่งใดก็ตามที่ทำให้เกิดปัญหาในแต่ละเฟรมสามารถจัดการได้ด้วยตนเอง
aaaaaaaaaaaa

9
Heck นี้มักใช้กับเกมที่ทำฉากตัดฉาก "live in engine" ซึ่งเป็นสาเหตุที่ฉากตัดยังคงดูดีขึ้น
trlkly

เกมหนึ่งที่ฝ่าฝืนกฎข้อนี้ IMHO คือพี่น้อง: นิทานสองเรื่องลูกผู้ชายต่างก็พยายามอย่างหนักเพื่อให้แน่ใจว่ากล้องจะจบลงในตำแหน่งที่ถูกต้องและให้ความรู้สึกเป็นธรรมชาติเช่นกัน
พื้นฐาน

12
แล้วภาพยนตร์แอนิเมชั่นที่ใช้เวลาหลายชั่วโมงทำให้มันสวยงามมากในขณะที่การเรนเดอร์สดในเกมมีความสวยงามน้อยกว่า (จากมุมมองทั่วไป)

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

หากคุณได้รับโอกาสขุดหนึ่งใน 'Roughnecks: The Starship Trooper Chronicles' เพราะพวกเขามีบทวิจารณ์โดยบรรณาธิการและอนิเมเตอร์เกี่ยวกับลูกเล่นที่พวกเขาต้องทำเมื่อพวกเขาเริ่มตกหลังกำหนดการส่งมอบ - สิ่งต่าง ๆ เช่น รีไซเคิลภาพ แต่หมุนแกนดังนั้นจึงไม่ชัดเจนแก้ไขสีปิดบังสิ่งที่พวกเขาไม่ชอบเพิ่มในการระเบิด ฯลฯ


เอ็นจิ้นเกมยังทำเช่นนั้น! ;-)
Adrian Maire

@AdrianMaire: พวกเขาอาจทำสิ่งอื่น ๆ แต่พวกเขาไม่มีมนุษย์ที่นั่นทำหน้าที่เป็นบรรณาธิการและปรับแต่งสิ่งต่าง ๆ เมื่อจำเป็น ฉันรู้ว่าฉันพูดถึงวิธีที่พวกเขาปรับแต่งสิ่งต่าง ๆ แต่ประเด็นหลักของฉันคือว่ามีมนุษย์เข้ามาเกี่ยวข้องกับสิ่งที่แสดงผลล่วงหน้า ..
Joe

10

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

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

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

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


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

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

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

7
ภาพยนตร์แสดงผลด้วยเวลาในการคำนวณประมาณ 10-12 ชั่วโมงต่อเฟรม และตามกฎของ Blinnทุกครั้งที่พลังในการคำนวณดีขึ้นพวกเขาแค่เพิ่มสิ่งต่าง ๆ เข้าไปในฉากเพื่อให้มันไม่เคยเร็วขึ้นเลย การเรนเดอร์ภาพยนตร์มีแนวโน้มที่จะใช้โซลูชัน 'แน่นอน' ที่เป็นรูปแบบปิดสำหรับสมการเรนเดอร์ทั้งหมดโดยที่เกมทำการประมาณจำนวนมากเนื่องจากต้องเร็วกว่าภาพยนตร์หนึ่งล้านเท่า
Chuck Walbourn

2
ไม่เคยได้ยินกฎของ Blinn มาก่อนเลยลิงก์นั้นเยี่ยมมาก
จ๊อค

8

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

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

ตัวอย่างของรถพ่วงในคำถามคือเมื่อนักบำบัดพยักหน้าและให้รอยยิ้ม "ไม่เลว"และเมื่อลาร่าจับที่เท้าแขนกระตุกขาของเธอหรือมองไปที่ถ้ำด้วยความกลัว สิ่งเล็ก ๆ เหล่านี้ (หรือการขาดของพวกเขาและตัวละคร "พลาสติก" ที่เกี่ยวข้อง) ส่งผลกระทบต่อความสมจริงที่รับรู้มากกว่าการปรับปรุงกราฟิกเล็กน้อย

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


8

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

ผลประการหนึ่งที่สำคัญที่ยากที่จะอบสำหรับวิดีโอเกมเป็นดินกระเจิง (SSS) น่าเสียดายที่เอฟเฟกต์นี้สำคัญมากในการสร้างผิวหนังมนุษย์ที่ดูสมจริง นั่นเป็นเหตุผลว่าทำไมตัวละครในเกม "สมจริง" หลายตัวจึงออกมามองพลาสติก

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


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

6

ในการตอบคำถามหนึ่งข้อ OP ขอให้แสดงความคิดเห็น:

"ดังนั้นใครควรเป็นผู้ร้ายหลัก? ระดับรูปหลายเหลี่ยมหรือการติดตามเรย์?"

คำถามนี้ยากกว่าที่คิด ฉันคิดว่ากฎง่ายๆคือสมการต่อไปนี้ (ซึ่งฉันทำตามวิธี):

number of calculations = {polygons} * {light sources} * {effects}

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

อย่างไรก็ตามในทางปฏิบัติในเกมระดับไฮเอนด์ที่ใหม่กว่าและโดยเฉพาะภาพยนตร์ผู้ร้ายคือ "ตามปกติ" การติดตามรังสี ทำไม? ด้วยเหตุผลสองประการ ฉันจะให้เหตุผลทางคณิตศาสตร์ก่อนจากนั้นความเห็นของฉันเกี่ยวกับเหตุผลที่แท้จริงในตอนท้าย


เหตุผลทางคณิตศาสตร์:

อัปเดต: คำอธิบายเชิงคณิตศาสตร์นี้อาจไม่แม่นยำอย่างสมบูรณ์ โปรดดูคำอธิบายของ CrazyCasta ในความคิดเห็นเพื่อดูรายละเอียดเพิ่มเติม

สมมติว่าคุณมี 1,000 รูปหลายเหลี่ยมและ 3 แหล่งกำเนิดแสง จำนวนเรย์ที่น้อยที่สุดที่คุณต้องใช้คือ 3 * 1,000

หากเราทำให้สถานการณ์ง่ายขึ้นและสมมติว่าการคำนวณ 1 เรย์ = 1 การคำนวณ (การประเมินต่ำเกินไป) เราจะต้องคำนวณ 3000 ครั้ง

แต่ตอนนี้ให้สมมติว่าคุณต้องการมีการสะท้อนเช่นกัน

การตั้งค่าเริ่มต้นสำหรับภาพสะท้อนในโปรแกรมฟรีแวร์ของBlenderคือ:

max reflections  = 2
ray length limit = None
...

สำหรับการตั้งค่าเหล่านี้เราสามารถคาดเดาได้ว่าในสถานการณ์กรณีที่ดีที่สุดการสะท้อนที่ง่ายสุด ๆ นี้จะทำให้ต้นทุนการคำนวณของโมเดลของคุณเพิ่มขึ้นเป็นสองเท่า

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

ตัวพิมพ์และจุด: ลองแสดงการสะท้อนด้วยgloss=1(ค่าเริ่มต้นใน Blender) จากนั้นเปลี่ยนความเงาไปที่ 0.01 และเปรียบเทียบการแสดงผลสองครั้ง คุณจะพบว่าชิ้นที่มีความเงา 0.01 จะช้ากว่ามาก แต่ความซับซ้อนของแบบจำลองนั้นไม่ได้เปลี่ยนแปลงเลย


เหตุผลเชิงคุณภาพ แต่เหมือนจริงมากขึ้น:

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

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


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


2
พระเจ้าของฉันนี่คือจุดที่ฉันกำลังตามหา แม้ว่ามันจะไม่ใช่คำถามของฉัน (ฉันสับสนเล็กน้อยว่าฉันควรถามอะไร) แต่ฉันคิดว่ามันเป็นอย่างนั้น!
cowboysaif

1
@cowboysaif ดีใจที่ได้ช่วย! :)
Vladimir

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

2
เคล็ดลับเก่า ๆ จากการใช้ POVRay ในวันที่ 486 ถ้าคุณต้องการรู้ว่าส่วนใดในฉากของคุณที่มีราคาแพงที่สุดให้แสดงหลายมุมมองของเวทีทั้งหมดกับนักแสดงและอุปกรณ์ประกอบฉากทั้งหมดและดูส่วนที่ช้า raytracer เพื่อรวบรวมข้อมูล ขยายส่วนเหล่านั้นและหาประสิทธิภาพที่ดีที่สุดและใช้งบประมาณส่วนใหญ่ในการแสดงผลในเฟรมซึ่งรวมองค์ประกอบเหล่านั้น หากคุณมีตารางการเรนเดอร์ที่รัดกุมลองพิจารณา reframing บางช็อต
Tom B

1
@TomB คำแนะนำที่ดี! ฉันเพิ่มไปว่าหากคุณคาดว่าจะมีฉากใดฉากหนึ่งช้าคุณสามารถทำมันออกมาบนเว็บและแสดงทุกอย่างในพื้นที่
Vladimir

4

ควรเพิ่มว่าภาพยนตร์อนิเมชั่นมักจะใช้กลอุบายภาพเพื่อทำให้การรับรู้การเคลื่อนไหวลื่นไหลมากขึ้น

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

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

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

ในการตอบคำถามของคุณ:

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

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

ซึ่งหมายความว่าศิลปินวิดีโอเกมมีลำดับความสำคัญแตกต่างกันมากซึ่งเกี่ยวข้องกับคุณภาพของแบบจำลองและคุณภาพการแสดงผลขั้นสุดท้ายมากกว่าศิลปินภาพยนตร์ ทั้งสองต้องการทักษะจำนวนมาก แต่แต่ละคนต้องการเทคนิคที่แตกต่าง ฉันคาดหวังว่าเทคนิคเหล่านี้จะมาบรรจบกันมากขึ้นในขณะที่ฮาร์ดแวร์การแสดงผลระดับผู้บริโภคยังคงดำเนินต่อไปและอัจฉริยะทางคณิตศาสตร์เพิ่มเติมยังคงปรากฏใน SIGGRAPHs และ GDC ของคุณ


1
Oooh คุณเพิ่งพูดถึงสิ่งที่ฉันต้องการพูดคุยเกี่ยวกับ การเปลี่ยนรูปแบบตาข่าย? มันจะเรียกว่าตาข่ายปรับปรุง มีโมดิฟายเออร์ที่ฉันใช้ในขณะที่ฉัน tinkered ด้วย unity 3d เรียกว่า mega- fiers ( west-racing.com/mf/?page_id=2 ) แม้ว่า Unity 3d จะรองรับอนิเมชั่นจากกระดูกเท่านั้นคุณคิดว่าในที่สุดเทคโนโลยีเกมจะรับมือกับมันได้หรือไม่? ฉันไม่รู้เกี่ยวกับเอ็นจิ้นเกมอื่น ๆ !
cowboysaif

1
เอฟเฟ็กต์แบบนั้นน่าจะเข้ากันได้กับเทคนิคการทำอนิเมชั่นใด ๆ ตราบใดที่คุณใช้การบิดเบือนทางคณิตศาสตร์แบบจำลองทั้งหมดพร้อมกับจุดสุดยอด Shader (อาจเป็นสิ่งที่ อีกสองสามวิธีคือ: * มีตาข่าย "เป้าหมาย" ซึ่งเป็นตาข่ายที่สองซึ่งบิดเบี้ยวอย่างสมบูรณ์และใช้จุดยอดของคุณเพื่อย้ายจุดยอดในตาข่ายของคุณไปยังจุดยอดที่ตรงกันในตาข่ายที่สอง; * การเปลี่ยนรูปแบบให้เป็นแบบของคุณเองและใช้ภาพเคลื่อนไหวแบบเฟรม * ทำบิดเบือนของคุณโดยใช้ภาพเคลื่อนไหวโครงกระดูกโดยเฉพาะการวางกระดูกพิเศษตามความจำเป็น ...
ทอม B

1
ฉันแน่ใจว่าแอนิเมชันประเภทนี้เป็นไปได้ซักพักแล้วและในระดับหนึ่งก็มีการใช้งานแล้ว แต่ส่วนใหญ่ฉันสามารถจำอินสแตนซ์ในเกมที่มีสิ่งมีชีวิต blobby และโมเดลยืดหยุ่นได้ (เช่น Gish, Tower of Goo, Octodad) . ส่วนที่ยากมาจากการหาว่าเมื่อใดควรใช้เอฟเฟกต์โดยเฉพาะอย่างยิ่งเมื่อต้องใช้การทวีคูณหรือรอยเปื้อน ทิศทางของการเคลื่อนไหวของกล้องมีผลต่อสิ่งที่เกิดขึ้นหลาย ๆ หรือ smear ควรมีลักษณะ ฉันสงสัยว่าแนวทางที่นักสร้างภาพเคลื่อนไหวใช้จะเป็นจุดเริ่มต้นที่ดี แต่ลองนึกถึงความสนุกที่จะได้รับจากการทดลอง!
Tom B

3

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

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

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

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

เอฟเฟกต์ราคาแพงเหล่านี้บางอย่างที่ทำให้ภาพยนตร์มีเปลวไฟเพิ่ม

  • แสงกระเด้ง ในชีวิตจริงแสงกระเด้งจนกระทั่งมันถูกดูดซับอย่างสมบูรณ์โดยพื้นผิวที่มันเด้ง ต้องทำการคำนวณแหล่งกำเนิดแสงแต่ละครั้ง ลองถือวัตถุที่มีสีอยู่ติดกับแผ่นกระดาษสีขาวคุณจะเห็นสีตกไปที่กระดาษ
  • เกมมีข้อ จำกัด อย่างรุนแรงต่อจำนวนของรูปหลายเหลี่ยมที่ใช้ภาพยนตร์ที่แสดงล่วงหน้าไม่มีข้อ จำกัด เหล่านี้ใช้เวลาในการแสดงผลนานกว่า กลับไปที่แสงใหญ่ถ้าเรามีรูปหลายเหลี่ยมมากกว่านั้นมีการคำนวณแสงมากขึ้นสำหรับภาพที่ดีขึ้น แต่ค่าใช้จ่ายของค่าใช้จ่ายที่เพิ่มขึ้นชี้แจง
  • ขนาดพื้นผิวการ์ดกราฟิกสามารถเก็บข้อมูลได้จำนวนหนึ่งเท่านั้นและการเปลี่ยนข้อมูลนี้มีราคาแพง พื้นผิวทั่วไปขนาด 1024x1024 รวมถึงแผนที่ Shader ทั้งหมดสามารถใช้การ์ด GFX ขนาด 1GB ได้สองเปอร์เซ็นต์ เมื่อการ์ดต้องการเปลี่ยนข้อมูลจะมีค่าใช้จ่าย เห็นได้ชัดว่าเราไม่สนใจเรื่องนี้มากเมื่อแสดงภาพยนตร์ล่วงหน้า นอกจากนี้ในภาพยนตร์ที่เราต้องการพื้นผิวความละเอียดสูงที่กล้องเข้าใกล้สำหรับเกมที่เราต้องการสิ่งนี้สำหรับแต่ละวัตถุผู้เล่นสามารถเข้าใกล้
  • Pathfinding มีความต้องการอย่างมากในซีพียู ยกตัวอย่างเช่นอัลกอริทึมการค้นหาเส้นทางทำให้ศัตรูค้นหาเส้นทางมาหาคุณหรือทำให้เครื่องเล่นของคุณเดินไปตามเส้นทางเมื่อคุณคลิกที่ใดที่หนึ่ง การค้นพบเส้นทางเหล่านี้อาจมีค่าใช้จ่ายสูงเมื่อมีคะแนน 10,000 จุด (ซึ่งเป็นเพียงตารางเมตรแต่ละตารางบนแผนที่ 100 ม. x 100 ม.) จากนั้นก็เป็นไปได้ที่เราจะต้องสำรวจทุกจุดเหล่านี้ในเฟรมเดียว มีหลายวิธีที่จะทำให้ราคาถูกขึ้นอยู่กับความต้องการ แต่ความจริงก็คือเราไม่ต้องการสิ่งนี้สำหรับฉากที่แสดงล่วงหน้า

Simpy ใส่เราต้องมากับเทคนิค "ถูก" เพื่อให้เกมดูดี แต่ดวงตาของมนุษย์ยากที่จะหลอก

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