แสดงการชนกันของการเคลื่อนไหวช้า ๆ อย่างผ่อนคลายหรือไม่?


11

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

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

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

อะไรที่ถูกต้อง?

ภาพเคลื่อนไหวช้าเพิ่มการใช้ CPU / GPU หรือลดลงหรือไม่

คำตอบ:


4

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

สมมติว่าคุณกำลังเรียกใช้ฟิสิกส์ของคุณด้วยการอัปเดต 200 ครั้งต่อวินาที เช่น. อัปเดตหนึ่งครั้งทุก0.005วินาทีของเวลาการจำลอง เมื่อรันเกมด้วยการอัปเดต 50 ครั้งต่อวินาทีนั่นจะส่งผลให้มีการอัปเดตทางฟิสิกส์ 4 รายการต่อการอัปเดตการแสดงผล ตอนนี้คุณจะรันเกมในแบบสโลว์โมชั่นนั่นหมายความว่าคุณกำลังชะลอเวลาการจำลอง ดังนั้นถ้าเกมยังคงทำงานที่ 50 การปรับปรุงต่อวินาที ( 0.02วินาทีของเวลาจำลอง) แต่คุณกำลังแสดงโลกในการเคลื่อนไหวช้า (สมมติว่าครึ่งหนึ่งของความเร็ว) จากนั้นหนึ่งเฟรมจะเทียบเท่ากับ0.01วินาทีของเวลาการจำลอง ดังนั้นมีเพียง 2 ฟิสิกส์อัปเดตต่อเฟรมที่แสดงผล การคำนวณทางฟิสิกส์น้อยลงต่อเฟรมที่แสดงผล

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

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


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

เขาบอกว่ามันสูงกว่าต่อการชนแต่นั่นเป็นเพราะการปะทะกันนั้นใช้เวลานานกว่า ในฐานะที่เป็นประโยคสุดท้ายของวรรคแรกพูดว่า
MichaelHouse

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

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

2
@ Byte56 คำถามคือ "ฉากการเคลื่อนไหวช้าเพิ่มการใช้งาน CPU / GPU หรือไม่" [เกือบ] นี้แสดงถึงการใช้งานต่อเวลาแน่นอนไม่ใช่ต่อการชน ดังนั้นฉันคิดว่าคำตอบเท่าที่เป็นไปของ GPU คือมันไม่เปลี่ยนแปลง ฉันนำสิ่งนี้มาเท่านั้นเพราะมันไม่ชัดเจนว่าย่อหน้าแรกพยายามสื่ออะไร
ไม่ใช่

3

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

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

จนกระทั่งสิ่งหนึ่งกระทบกับสิ่งอื่น ดูสิในฟิสิกส์คุณมีสิ่งที่เรียกว่าไทม์ซ นี่คือระยะเวลาที่การดำเนินการของระบบฟิสิกส์ครอบคลุม หากไทม์สของคุณครอบคลุม 1 / 30th ของวินาที (30fps สำหรับการอัปเดตฟิสิกส์) ดังนั้นการอัปเดตฟิสิกส์แต่ละครั้งจะย้ายวัตถุ 33.3 มิลลิวินาทีในอนาคต

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

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

หากคุณมีการชนกันมากมายภายในหนึ่งครั้งคุณสามารถฆ่า framerate ของคุณได้ อย่างไรก็ตามโอกาสของการชนหลายครั้งภายในหนึ่งครั้งลดลงตามขนาดของเวลาที่ลดลง ซิมแข่งรถระดับไฮเอนด์อย่าง Forza และ Gran Turismo ใช้ระบบฟิสิกส์ของพวกเขาในเฟรมที่เหลือเชื่อ ฉันคิดว่าหนึ่งในนั้นจะได้รับการอัปเดตทางฟิสิกส์มากถึง 300 + fps

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

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


1

ก่อนอื่นสิ่งนี้ทำเพื่อเอฟเฟ็กต์ภาพไม่ใช่เหตุผลด้านประสิทธิภาพ

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

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

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

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

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

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

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

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