คำถามติดแท็ก camera

โลกของเกมถูกมองจากกล้องซึ่งเป็นมุมมองจากโลกของเกม

9
ทำไมเราถึงย้ายโลกแทนกล้อง
ฉันได้ยินมาว่าในเกม OpenGL สิ่งที่เราทำเพื่อให้ผู้เล่นเคลื่อนไหวไม่ใช่เพื่อขยับกล้อง แต่เพื่อเคลื่อนย้ายโลกทั้งใบ ตัวอย่างเช่นที่นี่เป็นส่วนหนึ่งของบทช่วยสอนนี้: OpenGL View matrix ในชีวิตจริงคุณคุ้นเคยกับการขยับกล้องเพื่อเปลี่ยนมุมมองของฉากหนึ่งใน OpenGL มันเป็นอีกมุมหนึ่ง กล้องใน OpenGL ไม่สามารถเคลื่อนที่ได้และกำหนดให้อยู่ที่ (0,0,0) หันทิศทาง Z เป็นลบ นั่นหมายความว่าแทนที่จะขยับและหมุนกล้องโลกจะถูกขยับและหมุนไปรอบ ๆ กล้องเพื่อสร้างมุมมองที่เหมาะสม ทำไมเราทำเช่นนั้น?

1
เป้าหมายของเมาส์ใน FPS
ฉันต้องการสร้าง First Person Shooter และเลื่อนกล้องด้วยเมาส์ ปัญหาคือเมื่อเคอร์เซอร์ถึงขีด จำกัด ของหน้าจอกล้องจะไม่หมุนอีกต่อไป ฉันจะทำให้เมาส์อยู่ตรงกลางและตรวจจับการเคลื่อนไหวได้อย่างไร?

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

2
การออกแบบการเลื่อนหน้าจอสไตล์ร็อคแมน
ซีรีส์ Mega Man ของ NES คลาสสิกใช้เทคนิคการเลื่อนที่เฉพาะเจาะจงมากซึ่งฉันมีปัญหาในการใช้งาน โดยพื้นฐานแล้วระดับจะแบ่งออกเป็น "หน้าจอ" ซึ่งมีขนาดเท่ากันทั้งหมด หน้าจอบางหน้าเลื่อนเข้าหากันอย่างราบรื่นสร้างภาพลวงตาของการเล่นที่กว้างขึ้น หน้าจอบางหน้าหยุดกล้องไม่ให้เลื่อนจนกว่าโปรแกรมเล่นจะถึงขอบของหน้าจอในเวลาที่มีการเปลี่ยนภาพและหน้าจอถัดไปแสดงขึ้น อาจเป็นไปได้ที่หน้าจอเดียวจะมีการเปลี่ยนแปลงมากกว่าหนึ่งครั้งตัวอย่างเช่นมีบันไดที่ขึ้นไปหนึ่งหน้าจอ แต่คุณสามารถเดินไปข้างหน้าไปยังอีกหน้าจอหนึ่งได้ การเปลี่ยนหน้าจอเหล่านี้เป็นแบบจำลองได้อย่างไร? หน้าจอ 0 เป็นหน้าจอเริ่มต้นซึ่งผู้เล่นเริ่มต้น หน้าจอ 0-3 เป็นการเลื่อนในแนวนอนอย่างราบรื่นและปรากฏต่อผู้เล่นในรูปแบบการเล่นต่อเนื่อง เนื่องจากมีการเปลี่ยนแปลงระหว่างหน้าจอ 3 และเป็นหน้าจอใกล้เคียง 4 และ 5 กล้องจะไม่เลื่อนผ่านขอบด้านขวาหรือขอบด้านบนของหน้าจอ 3 ยกเว้นว่าผู้เล่นเลื่อนไปที่ขอบนั้นและ "ดัน" ผ่านไปยังหน้าจอถัดไป เมื่อผู้เล่นย้ายไปที่ขอบการเปลี่ยนแปลงอย่างใดอย่างหนึ่งอินพุตของผู้ใช้จะถูกปิดใช้งานชั่วขณะและกล้องจะเปลี่ยนไปสู่พื้นที่ใหม่หลังจากที่อินพุตผู้ใช้ถูกกู้คืน หน้าจอสีน้ำเงิน (หน้าจอ 5) ปิดใช้งานการเลื่อนแนวนอนเพื่อให้สามารถเปลี่ยนแนวตั้งได้เท่านั้น หน้าจอสีเขียว (หน้าจอ 6) มีการเปลี่ยนแนวตั้งกลับไปที่หน้าจอ 5 แต่ยังช่วยให้การเลื่อนแนวนอนราบรื่นไปสู่หน้าจอ 7 แก้ไข : การใช้การเปลี่ยนในแง่ของห้องนำฉันไปสู่สิ่งนี้: รอยหยักขนาดเล็กที่มีลูกศรเป็นบริเวณที่เกิดการเปลี่ยนแปลงได้ แต่ละภูมิภาคมี "ทิศทาง" และโกหกเพียงด้านนอกของพื้นที่ที่มองเห็นของห้อง …
25 2d  camera  platformer 

2
กล้องเทียบกับวิวพอร์ต
ฉันไม่มีความเข้าใจที่ชัดเจนว่าอะไรคือความแตกต่างระหว่างพิกัดกล้องกับพิกัดวิวพอร์ต ใครช่วยอธิบายหน่อยได้ไหม

4
ส่งเรย์เพื่อเลือกบล็อกในเกม voxel
ฉันกำลังพัฒนาเกมที่มีภูมิประเทศคล้าย Minecraft ที่ทำจากบล็อก เนื่องจากการเรนเดอร์พื้นฐานและการโหลดชิ้นข้อมูลเสร็จสิ้นแล้วฉันต้องการใช้การเลือกบล็อก ดังนั้นฉันจึงต้องค้นหาว่าบล็อกใดที่กล้องตัวแรกกำลังเผชิญอยู่ ฉันได้ยินมาแล้วว่าไม่ได้คาดเดาฉากทั้งหมด แต่ฉันตัดสินใจว่าเพราะมันฟังดูแฮ็คและไม่ถูกต้อง บางทีฉันอาจโยนรังสีไปในทิศทางที่มองเห็นได้ แต่ฉันไม่รู้วิธีตรวจสอบการชนด้วยบล็อกในข้อมูล voxel ของฉัน แน่นอนว่าการคำนวณนี้ต้องทำบน CPU เนื่องจากฉันต้องการผลลัพธ์เพื่อดำเนินการกับเกมลอจิก แล้วฉันจะรู้ได้อย่างไรว่าบล็อกไหนอยู่หน้ากล้อง? ถ้าเป็นที่ต้องการฉันจะโยนรังสีและตรวจสอบการชนได้อย่างไร

2
การนำกล้อง / วิวพอร์ตไปใช้กับเกม 2D
วิธีการที่ใช้ประโยชน์ได้จริงในการนำกล้อง / วิวพอร์ตไปใช้กับเกม 2D คืออะไร? ฉันได้อ่านแล้วฉันควรจะเก็บตำแหน่งของวัตถุในโลกแทนตำแหน่งที่สัมพันธ์กับหน้าจอหรือไม่? สถานการณ์ปัจจุบัน: ฉันใช้เกม 2D ง่าย ๆ ที่ฉันโหลดวัตถุและระดับจากไฟล์ XML ปัจจุบันไฟล์ XML ระดับมีลักษณะดังนี้: <map> <tile obj="ground" x="0" y="555" /> <tile obj="ground" x="16" y="555" /> <tile obj="ground" x="32" y="555" /> ... </map> วัตถุทั้งหมดมี 2d-vector "position" ที่เก็บตำแหน่งปัจจุบันของพวกเขาบนหน้าจอ สิ่งที่ฉันต้องการให้เป็น: ในรูปภาพ: กล้องมีทั้งแบบ 800x600 หรือ 640x480 บล็อกและสไปรต์คือ 16x16 พิกเซล ขนาดโลกอาจแตกต่างกันไป พิกัดที่ควรจะเป็นมาตรฐานเมื่อเทียบกับโลกไม่ใช่ที่หน้าจอ? ตำแหน่งวิวพอร์ตที่สัมพันธ์กับ …
20 c++  2d  architecture  camera 

2
วิธีผสมผสานกล้องสองตัวเมื่อเดินทางผ่านพอร์ทัลใน Unity3D
ก่อนที่ฉันจะมาถึงคำถามของฉันฉันรู้ว่าวิธีแก้ปัญหาที่ชัดเจนที่สุดคือการใช้ rect port view ปกติ แต่ฉันต้องการรูปทรงที่ซับซ้อนมากกว่า rectangle และฉันได้ดูการใช้ rect port view และดูเหมือนจะไม่ เป็นทางออกของฉัน แก้ไข: บางคนสับสนกับคำถามของฉันให้ฉันเข้าไปดูรายละเอียดอีกสักหน่อย สิ่งที่เกิดขึ้นคือเมื่อผู้เล่นย้ายไปยังพอร์ทัลหนึ่งฉันสร้างตัวควบคุม FPS ของโคลนและย้ายออกจากที่อื่น มันให้กล้องสองตัวกับฉันและมุมมองที่คุณเห็นทางด้านขวาด้านบน มันเป็นเพียงการแสดงกล้องหนึ่งตัวและตัดผ่านพอร์ทัล สิ่งที่ฉันต้องการคือสิ่งที่คล้ายกับสิ่งนี้ที่กล้องผสมผสานเพื่อสร้างภาพลวงตาของการเปลี่ยนแปลงที่ราบรื่น สิ่งที่ฉันต้องการจะทำคือลบทุกอย่างจากภาพตัวตรวจสอบสีเขียวไปทางซ้ายในภาพด้านล่างและแทนที่ด้วยกล้องตัวอื่น วิธีนี้ทำให้คุณได้รับมุมมองของกล้อง A ที่พุ่งออกมาจากพอร์ทัลผสมผสานกับมุมมองของกล้อง B ที่พุ่งออกมาจากพอร์ทัลอื่นเพื่อให้ได้ภาพที่สมบูรณ์หนึ่งภาพ และในขณะที่คุณเคลื่อนที่ผ่านพอร์ทัลการเปลี่ยนแปลงที่ตัดจะเหมาะสม ฉันออกแบบระบบพอร์ทัลฉันมีทุกอย่างลงรวมถึงการให้ผู้เล่นเลื่อนผ่านพอร์ทัลได้อย่างราบรื่น ปัญหาหลักของฉันตอนนี้คือการทำให้เอฟเฟกต์การผสมผสานของกล้องทำงานได้ดี ฉันต้องการกล้องสองตัวที่ผสมผสานกันอย่างไร้รอยต่อราวกับว่าคุณแหย่ผ่านหน้าประตู และมันไม่เพียงแค่เป็นสี่เหลี่ยมมันต้องจับคู่ แต่ผู้เล่นมองผ่านพอร์ทัล เป้าหมายที่ดีที่สุดของฉันในตอนนี้คือการฉายหน้ากากลึกลงไปในแต่ละพอร์ทัลจากนั้นสร้างกล้องจากพอร์ทัลที่คุณกำลังเดินทางให้ลึกเท่านั้น จากนั้นก็ผสมกล้องสองตัวเข้าด้วยกัน ปัญหาหลักของฉันคือการหาวิธีที่ฉันทำสิ่งนี้วิธีการทำให้กล้องตัวที่สองแสดงเฉพาะสิ่งที่อยู่นอกพอร์ทัล หากคุณสามารถให้ความคิดกับฉันหรืออธิบายว่าฉันจะทำอย่างไรกับ shader หน้ากากแบบลึกที่จะช่วยได้มาก ฉันจะดำเนินการต่อในเรื่องนี้และอัปเดตเมื่อฉันฝ่าฝืน
18 c#  unity  camera  valve  portals 

4
ฉันจะโคจรกล้องไปยังจุดที่เป็นเป้าหมายได้อย่างไร
ฉันวาดฉากที่กล้องเคลื่อนไหวอย่างอิสระเกี่ยวกับจักรวาล คลาสกล้องจะติดตามตำแหน่งมุมมอง (หรือดู ) ตำแหน่งของกล้องและเวกเตอร์ขึ้น เวกเตอร์ / คะแนนเหล่านี้จะถูกส่งผ่านไปยัง gluLookAt แพนและซูมนั้นแทบไม่น่าเชื่อ อย่างไรก็ตามฉันกำลังค้นหาการหมุนเกี่ยวกับจุดที่มองว่ามีปัญหามากกว่านี้ ฉันต้องการที่จะเขียน Camera.rotate ฟังก์ชั่นที่ใช้เวลา 2 มุมหนึ่งที่หมุนขึ้น / ลงและหนึ่งที่หมุนซ้าย / ขวาพร้อมทรงกลมจินตนาการว่าเป็นศูนย์กลางเกี่ยวกับการดูที่จุด มีวิธีง่าย ๆ ในการทำเช่นนี้? ฉันอ่านสั้น ๆ เกี่ยวกับควอเทอร์เนี่ยน แต่ฉันอยากจะดูว่ามีวิธีแก้ปัญหาที่ง่ายกว่านี้หรือไม่หากการสร้างฉากของฉันค่อนข้างง่าย

2
ฉันจะแปลงการคลิกเมาส์เป็นรังสีได้อย่างไร
ฉันมีมุมมองที่ฉาย เมื่อผู้ใช้คลิกบนหน้าจอฉันต้องการคำนวณรังสีระหว่างระนาบใกล้และไกลที่ทำโครงการจากจุดเม้าส์ดังนั้นฉันจึงสามารถทำโค้ดสี่แยกเรย์กับโลกของฉันได้ ฉันใช้คลาสเมทริกซ์และเวกเตอร์และเรย์ของตัวเองและมันทำงานได้อย่างที่คาดไว้ อย่างไรก็ตามเมื่อฉันลองและแปลงรังสีเป็นพิกัดโลกไกลสุดของฉันเสมอเป็น 0,0,0 และดังนั้นรังสีของฉันไปจากการคลิกเมาส์ไปที่ศูนย์กลางของพื้นที่วัตถุมากกว่าผ่านมัน (พิกัด x และ y ใกล้และไกลเท่ากันพวกมันต่างกันเฉพาะในพิกัด z ซึ่งเป็นค่าลบของกันและกัน) GLint vp[4]; glGetIntegerv(GL_VIEWPORT,vp); matrix_t mv, p; glGetFloatv(GL_MODELVIEW_MATRIX,mv.f); glGetFloatv(GL_PROJECTION_MATRIX,p.f); const matrix_t inv = (mv*p).inverse(); const float unit_x = (2.0f*((float)(x-vp[0])/(vp[2]-vp[0])))-1.0f, unit_y = 1.0f-(2.0f*((float)(y-vp[1])/(vp[3]-vp[1]))); const vec_t near(vec_t(unit_x,unit_y,-1)*inv); const vec_t far(vec_t(unit_x,unit_y,1)*inv); ray = ray_t(near,far-near); ฉันทำอะไรผิด (คุณถอดจุดเมาส์ออกได้อย่างไร)

2
เลื่อนกล้อง XNA 2d - ทำไมต้องใช้การแปลงเมทริกซ์?
ฉันกำลังทำเกมทดสอบที่ฉันต้องการให้เลื่อนระดับอย่างต่อเนื่อง ในการสร้างเอฟเฟกต์นี้ฉันได้สร้างคลาสกล้องที่เก็บตำแหน่งเวกเตอร์ 2 และทิศทาง Enum นอกจากนี้ยังมีวิธีการสาธารณะเพื่อ 'ย้าย' ซึ่งเพียงเปลี่ยนตำแหน่งในอัตราคงที่ จากนั้นฉันจะใช้ตำแหน่งนี้เมื่อวนลูปผ่านอาร์เรย์ของกระเบื้องเมื่อวาดภาพ ทั้งหมดนี้ทำงานได้ดี อย่างไรก็ตามฉันได้รับแจ้งว่าฉันควรใช้ Transform matrix เพื่อย้ายกล้องและฉันควรให้สิ่งนี้เมื่อฉันเริ่ม spritebatch ฉันสับสนเล็กน้อย a.) วิธีนี้ทำงานอย่างไร ราวกับว่าฉันจะให้มันก็ต่อเมื่อ spritebatch เริ่มต้นจะรู้ได้อย่างไรว่าจะเปลี่ยนตำแหน่งได้อย่างไร b.) ทำไมฉันยังต้องการตำแหน่งกล้องเมื่อฉันวนผ่านกระเบื้อง? ในขณะที่ฉันไม่สามารถทำงานได้ แต่ก็ไม่แปลกใจเลยที่ฉันไม่เข้าใจวิธีการทำงาน ขณะนี้ฉันกำลังพยายาม (โค้ดให้ติดตาม) กระเบื้องที่กำลังถูกเปลี่ยนแปลงซึ่งหมายถึงตำแหน่งของกล้องกำลังเปลี่ยนแปลง แต่ตำแหน่งของวิวพอร์ตยังคงไม่เปลี่ยนแปลง (เช่นที่จุดเริ่มต้นของกล้อง) ฉันจะขอบคุณคำแนะนำ / คำแนะนำเกี่ยวกับวิธีการใช้งาน กล้อง: class Camera { // The position of the camera. public Vector2 Position { get { return …

4
จะป้องกันไม่ให้กล้อง FPS ที่ใช้ Quaternion ของฉันเอียงและทำให้ยุ่งเหยิงได้อย่างไร
ฉันกำลังใช้กล้องที่เหมือน FPS และใช้งาน quaternions แต่เมื่อใดก็ตามที่ฉันลองมองหาและจากนั้นไปด้านข้างมันจะเอียงและบางครั้งมันอาจกลับหัวกลับหาง ฉันจะแก้ไขสิ่งนี้ได้อย่างไร

3
การเคลื่อนไหวของกล้อง cutscene“ ผู้ปฏิบัติการมนุษย์จำลอง” เรียกว่าอะไร?
ฉันมีคำถามบางอย่างที่เกี่ยวข้องกับการเคลื่อนไหวของกล้องที่ไม่ราบรื่นในฉากหลังของเกมสองสามเกมซึ่งดูเหมือนจะลองและจำลองความกังวลใจของผู้ปฏิบัติงานที่เป็นมนุษย์ นี่ตรงกันข้ามกับการสั่นของกล้องในการเล่นเกมทั่วไปเมื่อมีเหตุการณ์เกิดขึ้นเช่นการระเบิดแม้ว่ามันจะเกิดขึ้นในฉากหลังที่ฉันกำลังพูดถึง ตัวอย่างของเอฟเฟกต์นี้มีอยู่ในหลาย ๆ เกม แต่ตัวอย่างที่ดีที่สุดที่ฉันเคยเห็นในสิ่งที่ฉันพยายามจะอธิบายคือการเปิด cutscene (และ cutscenes จำนวนมาก) ของ Metal Gear Solid V: Ground Zeroes อย่าลืมเลือก 60 FPS เพื่อให้เอฟเฟกต์ชัดเจนยิ่งขึ้น มีชื่อสำหรับเอฟเฟกต์ "ผู้ปฏิบัติการมนุษย์จำลอง" นี้หรือไม่และคุณรู้หรือไม่ว่าเรื่องนี้อาจเกิดขึ้นได้อย่างไร? ฉันเดาว่ากล้องจะถูกชดเชยทั้งสองแกนด้วยฟังก์ชั่นการเบี่ยงเบนแบบสุ่มซึ่งมักจะเคลื่อนที่ไปทางจุดกำเนิดเล็กน้อยเพื่อหยุดยั้งการเคลื่อนที่ บางทีท่าทางบราวนี่?

6
การสร้างระดับผู้เล่นสองมิติแบบวนซ้ำได้อย่างราบรื่นหรือไม่
การสนทนาเกิดขึ้นเมื่อเร็ว ๆ นี้เกี่ยวกับวิธีสร้างเกมแบบผู้เล่นหลายคนเลื่อนด้าน 2D ซึ่งสามารถมีการออกแบบระดับการวนซ้ำ ฉันคิดว่าวิธีที่ง่ายที่สุดคือการมีแผนที่รูปสี่เหลี่ยมผืนผ้าพร้อมโซนทริกเกอร์ซึ่งสามารถเคลื่อนย้ายผู้เล่นจากด้านหนึ่งไปอีกด้านหนึ่งได้ อย่างไรก็ตามปัญหาที่ชัดเจนเกี่ยวกับวิธีการนี้คือกรณีที่มีผู้เล่นหลายคนที่ขอบแผนที่พร้อมกัน คุณไม่ต้องการเพียงแค่เล่นเทเลพอร์ตผู้เล่นต่อหน้ากันและคุณต้องการวิธีในการเคลื่อนย้ายผู้เล่นโดยไม่ต้องให้ผู้เล่นคนอื่นหายไป ในการต่อท้ายความคิดนี้และแก้ไขปัญหาฉันพบสิ่งต่อไปนี้: มีโซนทริกเกอร์ (สี่เหลี่ยมสีแดงในภาพ) ที่ผู้เล่นจะสามารถเห็น "โซนโคลน" (สี่เหลี่ยมสีเขียว) ในสี่เหลี่ยมสีเขียวนี้วัตถุจากฝั่งตรงข้ามของโซนทริกเกอร์จะถูกคัดลอกไปยังโซนโคลนที่เกี่ยวข้อง (สามารถเห็นได้ด้วยรูปร่าง A & B) เมื่อผู้เล่นไปถึงขอบเริ่มต้นของ "โซนโคลน" พวกเขาจะถูกเคลื่อนย้ายไปยังอีกฝั่งของแผนที่ ในตัวอย่างนี้ผู้เล่น 2 จะคิดว่าพวกเขาเห็นผู้เล่น 1 แต่พวกเขาจะได้เห็นโคลนของเขาและในทางกลับกัน ดูเหมือนว่าจะสุดโต่งและซับซ้อนสำหรับปัญหาที่เกิดขึ้น คำถามของฉันตอนนี้คือการรู้ว่าวิธีนี้เป็นวิธีที่ดีในการแก้ปัญหาหรือไม่หรือมีวิธีที่ง่ายกว่าในการแก้ปัญหานี้หรือไม่?

5
สูตร head-bob ที่ดีที่สุดคืออะไร?
ทิศทางของการเดินทางและเวลานับตั้งแต่เริ่มต้นสูตรการโน้มน้าวใจที่ไม่น่าเชื่อในการจำลองหัวบ๊อบคืออะไร? สิ่งที่ประสบความสำเร็จในเกมก่อนหน้า? มีงานวิจัยใดเกี่ยวกับบ็อบที่ทำให้เกิดความเจ็บป่วยน้อยที่สุด? ตัวอย่างสูตรบ็อบหัวไร้เดียงสาที่ใช้กับแกนขึ้น: http://www.wolframalpha.com/input/?i=abs%28sin%28x%29%29

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