วิธีการป้องกัน“ การมองเห็นใต้น้ำ” ในเกม


19

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

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

มีวิธีตรรกะในการแก้ปัญหานี้หรือไม่? อัลกอริทึม? ดูเหมือนจะยังไม่มีวิธีแก้ปัญหาใด ๆ เกิดขึ้นเนื่องจากหลาย ๆ เกมยังมีสิ่งนี้ ฉันไม่ต้องการทำผิดพลาดเหมือนกัน


4
เกมสมัยใหม่มีเฉดสีที่แตกต่างกันสำหรับเหนือและใต้น้ำ ทุกวันนี้มันดูไม่เหมือนอย่างนี้เลย ฉันเชื่อว่า Crysis มีการเรนเดอร์ใต้น้ำขั้นสูง: youtube.com/watch?v=yXxEZJdFjeM
MartinTeeVarga

9
@ sm4: ฉันคิดว่าเกมนี้มีคุณสมบัตินี้ด้วย แต่ปัญหาคือกล้องไม่ได้กระดิ่งน้ำอยู่ด้านบนและคุณสามารถดูด้านล่างได้เนื่องจากมีการตัดใกล้
Kikaimaru

@ คิคิมารุฉันเข้าใจแล้วฉันไม่เข้าใจคำถามทั้งหมด อย่างไรก็ตาม Crysis ดูเหมือนจะไม่มีปัญหานี้
MartinTeeVarga

2
อืม, แต่ฉันควรจะดูว่ามีไข่มุกที่ก้นแม่น้ำอีกไหม? (Elder Scrolls Oblivion): D
Singular1ty

1
บางทีคุณสามารถตรวจสอบว่าตัวละคร "หัว" ใต้น้ำแทนที่จะเป็นกล้องถ่ายรูปและไม่อนุญาตให้กล้องถ่ายใต้น้ำเว้นแต่ตัวละครจะอยู่ใต้น้ำด้วยหรือไม่
ลุคบี

คำตอบ:


16

ถ้าอย่างนั้นไม่อนุญาตให้สถานการณ์เช่นนี้?

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

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

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

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

ฉันยังไม่เห็นเกมที่ไม่เฉพาะที่แม้แต่พยายามทำให้สภาพแวดล้อมใต้น้ำถูกต้อง ...


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

ฉันเชื่อว่าเกมส่วนใหญ่ไม่ทำเช่นนี้เพียงเพราะไม่มีใครอยากลงใต้น้ำหากพวกเขาไม่เห็นอะไรเลย หรือบางทีตัวละครหลักของเกมทั้งหมดได้รับการฝึกฝนโดยชาวมอแกน! news.nationalgeographic.com/news/2004/05/…
MartinTeeVarga

1
ในการพัฒนาเกมหมอ "แบบนี้มันเจ็บเมื่อฉันทำแบบนี้" โดยปกติแล้วทางออกที่ดีที่สุด
เทรเวอร์พาวเวลล์

1
@ TrevorPowell: ฉันอ่านความคิดเห็นของคุณหลายครั้งและฉันยังไม่เข้าใจประเด็นของคุณ บางทีคุณต้องการที่จะอธิบายอย่างละเอียด?
แพนด้า Pyjama

2
ขอโทษ! มันมีการอ้างอิงถึงเรื่องตลกเพลงเก่า เรื่องตลกเป็นแบบนี้: ผู้ป่วย: "หมอมันเจ็บเมื่อฉันทำอย่างนี้!" หมอ: "อย่าทำอย่างนั้น!" ฉันแค่หมายถึงพูดว่าในเกมบ่อยครั้งวิธีที่ง่ายที่สุดในการแก้ปัญหาคือการหยุดเกมไม่ให้เข้าสู่สถานะที่ต้องแก้ปัญหา (เช่น: วิธีที่ง่ายที่สุดในการแก้ไข "กราฟิกดูผิดเมื่อระนาบใกล้คลิปตัดกับผิวน้ำ" คือ "อย่าปล่อยให้ระนาบใกล้คลิปตัดกับผิวน้ำ")
Trevor Powell

7

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

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

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

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

เราใช้เทคนิคแบบนี้ใน Guild Wars 2


3

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

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

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


(มีปัญหาหากพื้นผิวของน้ำเป็นตาข่าย แต่ยังคงเป็นคำตอบที่ดีโดยทั่วไป)
Will

0

ฉันมีสองวิธี; หนึ่งใช้ shader อีกคนหนึ่งสามารถใช้ GUI ทั้งสองจะเริ่มต้นเหมือนกัน:

"ดั้งเดิม" - If, Object(Camera) is in 3d Space(Water bounding box/whatever you choose) trigger a shader/GUI.

Shader จะให้ความสมจริงมากกว่านี้คุณสามารถใช้การบิดเบือนแบบนี้

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

สิ่งนี้ถูกใช้ในเกมสยองขวัญที่เรียกว่า Drea D Out หากผู้เล่นเข้าหาผีหน้าจอจะกลายเป็นหมอก แม้ว่ามันจะไม่ได้ใช้ใต้น้ำ แต่ก็ให้ผลเหมือนกัน :)

คุณสามารถเลือกวิธีการทั้งสองได้ตลอดเวลาหรือสร้าง shader ที่จะเปลี่ยนสี

http://media.indiedb.com/images/games/1/21/20833/Demo_update_SS01.png

Taken from : http://sahdan-share.blogspot.com/2013/04/dreadout.html
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.