ทฤษฎี 3 มิติก่อนกราฟิค API? [ปิด]


19

ฉันเป็นวิศวกรซอฟต์แวร์และฉันหวังว่าจะย้ายอาชีพของฉันไปสู่การพัฒนาเกม ตอนนี้ฉันกำลังอ่านหนังสือ 2 มิติโดยใช้ C ++ / DirectX เมื่อฉันเข้าสู่ 3D ฉันรู้ว่าฉันต้องการทำอย่างถูกต้อง ตัวอย่างเช่นฉันไม่รู้อะไรเลยเกี่ยวกับพื้นที่ 3 มิติ ดังนั้นถ้าฉันเรียนรู้ API เพียงอย่างเดียวฉันอาจจะรู้ แต่ฉันไม่รู้ว่าฉันจะสามารถพัฒนาโลกแบบมินิ 3 มิติได้หรือไม่ ฉันจะไม่เรียกตัวเองว่าประสบความสำเร็จเพียงแค่มีลังหมุนที่มีตัวห่อล่าสุด ฯลฯ ทักษะคณิตศาสตร์ของฉันขึ้นอยู่กับพีชคณิตเชิงเส้น / เชิงเส้นและยังอยู่ในวิทยาลัย ฉันรู้ว่าคณิตศาสตร์กำลังจะมา ฉันควรอ่านหนังสือทฤษฎีสามมิติก่อนที่จะหยิบมาใช้ใน OpenGL / Direct3D หรือคำแนะนำอื่น ๆ หรือไม่? ฉันเพิ่งรู้ว่า API จะไม่สอนการพัฒนาเกม 3 มิติและไม่ต้องการที่จะสูญเสียในภายหลัง ฉันชอบหนังสือมากดังนั้นก็ดีถ้ามีคำแนะนำอยู่ด้วย ยินดีต้อนรับ ขอบคุณ!

คำตอบ:


11

หลังจากปฏิเสธคุณในเว็บไซต์อื่นฉันรู้สึกว่าจำเป็นต้องตอบ :)

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

ในบรรดาสิ่งที่ฉันพบว่ามีประโยชน์เป็นพิเศษ:

  1. เมทริกซ์การแปลงและวิธีการทำงานไม่เพียง แต่สำหรับการแปลงวัตถุ แต่ยังสำหรับการดูการแปลงการฉายมุมมอง ฯลฯ นั่นอาจเป็นสิ่งที่สำคัญที่สุด
  2. ทฤษฎีทั้งหมดที่อยู่หลังฟ้าผ่าและเงาโดยเฉพาะอย่างยิ่งมีประโยชน์เมื่อคุณเริ่มเล่นน้ำในเฉดสี
  3. การสุ่มตัวอย่างพื้นผิวการทำแผนที่
  4. ทฤษฎีสีและเทคนิคการผสมก็มีประโยชน์เช่นกัน

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


ขอบคุณ คุณเคยได้ยินหนังสือเล่มนี้? ฉันได้ยินมาว่ามันสอนทฤษฎี 3 มิติ แต่เน้นไปที่ rasterization ซอฟต์แวร์ 3d ด้วยเช่นกัน ฉันเดาว่ามันอาจช่วยให้เข้าใจว่าเกิดอะไรขึ้น amazon.com/…
Phil

1
@Phil rasterization มีความสำคัญ แต่ฉันไม่รู้ว่าฉันจะเริ่มด้วยหนังสือชื่อว่า "เคล็ดลับ" และพูดถึงนักพัฒนา 3 มิติ "ขั้นสูง" ... ดูเหมือนว่าจะอ่านในภายหลัง
โอ๊ก

ฉันกำลังอ่านหนังสือเล่มที่ 1 ตอนนี้และนี่คือเล่ม 2 ฉันเดาว่ามันจะรวมคุณ แต่ฉันไม่เคยดูเลย ฉันรู้ว่าเขาพูดว่า "ขั้นสูง" แต่ส่วนใหญ่บอกว่าไม่ใช่ ฉันจะเก็บไว้ในรายการ :)
ฟิล

1
การติดตามเรย์เป็นอีกหัวข้อที่น่าสนใจ แต่ช้าเกินไปสำหรับเกมเรียลไทม์
ไบรอันเดนนี่

@Byran +1 สำหรับการพูดถึงมัน มันถูกใช้เพื่อคำนวณแสงล่วงหน้า
Jonathan Fischoff

9

เริ่มต้นด้วยการทำ ด้วยวิธีนี้คุณจะค้นพบสิ่งที่คุณไม่รู้

จากนั้นหยิบหนังสือดี ๆ เกี่ยวกับคณิตศาสตร์ 3 มิติ

ฉันแนะนำ '3D Math Primer สำหรับกราฟิกและการพัฒนาเกม'

โดย Fletcher Dunn และ Ian Parberry (Wordware)

ชัดเจนมากตรงประเด็นมีความเกี่ยวข้อง - ด้วยรหัส C ++ และทั้งหมด

การรู้พื้นฐานของคะแนนเวกเตอร์การแปลง ฯลฯ เป็นสิ่งสำคัญมาก

แต่นั่นไม่ได้หมายความว่าคุณควรศึกษาทุกอย่างก่อนลงดำน้ำ :)


3

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


2

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


2

อืมเมื่อฉันต้องสร้างเกม 3 มิติเป็นครั้งแรกเมื่อ 15 ปีก่อน (ต้องเป็นหน้าที่ของฉันนั่นช่วยให้มีความพากเพียร) ฉันไม่มีความรู้เกี่ยวกับสามมิติใด ๆ นอกจากคณิตศาสตร์ระดับมัธยม หากคุณมีความชื่นชอบในการไขปริศนาและอ่านหนังสือคุณสามารถใช้เหตุผลส่วนใหญ่ออกมาด้วยตนเองและด้วยความช่วยเหลือจากอินเทอร์เน็ต (comp.graphics.algorithms faq) ฉันอ่านคัมภีร์ไบเบิล openGL และhttp://www.amazon.com/Computer-Graphics-Principles-Practice-2nd/dp/0201848406(เตือน oldskool) เนื่องจากให้ข้อมูลพื้นหลังที่ถูกต้อง หากคุณทำเช่นนี้คุณอาจเริ่มผิดวิธี แต่ ณ จุดหนึ่งคุณอาจฝันหรือชนเข้าด้วยกันเป็นทางออกที่ดีกว่า ปัญหา 3 มิติส่วนใหญ่สามารถแก้ไขได้หากความเข้าใจ 2d ของคุณดี เพิ่มไปยังตรีโกณมิติ, พีทาโกรัส, เมทริกซ์และผกผัน / การแปลง (สำหรับการฉายภาพ), ดอท & ครอสโปรดัคและสิ่งที่คุณใช้ em สำหรับ, ควอเทอร์เนียน (ไม่ต้องเข้าใจอีเอ็มแค่รู้วิธีใช้ ปัจจุบันเป็นส่วนหนึ่งของคำศัพท์พื้นฐาน) และคุณสามารถแก้ปัญหาส่วนใหญ่ที่เจอ เมื่อคุณไปคุณจะชนไปในทางที่ดีขึ้น แต่น้อยคนนักที่จะสามารถแก้ไขอะไรได้ วิธีที่ดีที่สุดคือการตั้งเป้าหมายให้ตัวเองนอกมือและบังคับตัวเองให้ไปถึงที่นั่น ปัญหาที่คุณพบคือสิ่งที่คุณต้องเรียนรู้และเฮ้คุณ


2

บล็อก Wolfire Games มีชุดการสอนที่ยอดเยี่ยมเกี่ยวกับพีชคณิตเชิงเส้นสำหรับนักพัฒนาเกมเมื่อเร็ว ๆ นี้

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


1

ฉันขอแนะนำให้คุณลงทะเบียนที่Game Instituteโดยเฉพาะหลักสูตรการเขียนโปรแกรมกราฟิกด้วย DirectX 9

คุณไม่จำเป็นต้องมีส่วนร่วมในชั้นเรียนแบบโต้ตอบหากคุณต้องการเรียนรู้ด้วยตนเอง

โดยวิธีการที่มีตัวเลือกที่จะได้รับหนังสือที่พิมพ์ด้วยจำนวนเงินที่ต่ำมาก พวกเขาคุ้มค่าดี

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


1

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

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

เมื่อคุณเรียนรู้เกี่ยวกับคณิตศาสตร์ของกราฟิก 3 มิติมากขึ้นคุณจะรู้ว่าไม่มีคณิตศาสตร์ของคอมพิวเตอร์กราฟิกส์มีเพียงคณิตศาสตร์เท่านั้น เรียนรู้วิธีการสอนตัวเองคณิตศาสตร์ด้วยตัวคุณเอง จากนั้นคุณจะสามารถย่อยเทคนิคใหม่ ๆ ได้ตามที่ปรากฏในวรรณกรรม

เมื่อเทคโนโลยีกราฟิกวิวัฒนาการเราจะยืมเทคนิคทางคณิตศาสตร์ที่แตกต่างกัน สิ่งที่ได้รับความนิยมในวันนี้อาจไม่เป็นที่นิยมในวันพรุ่งนี้

นี่คือบางสิ่งที่จะยังคงเหมือนเดิม

ตอนนี้ฉันกำลังค้นหาเนื้อหาใน Geometric Algebra สำหรับวิทยาการคอมพิวเตอร์ที่น่าสนใจมากและคิดว่ามันน่าจะดีกว่าถ้าเริ่มต้นด้วยวิธีการที่พวกเขาจัดวางกราฟิกคอมพิวเตอร์ http://www.amazon.com/Geometric-Algebra-Computer-Science-Object-Oriented/dp/0123694655

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


1

อย่าไปหาหนังสือ "คอมพิวเตอร์กราฟิก" เริ่มต้นด้วยพีชคณิตเชิงเส้น - วางรากฐานสำหรับทุกสิ่งที่คุณต้องการ MIT มีหลักสูตรวิดีโอที่ดี: http://ocw.mit.edu/courses/mathematics/18-06-linear-algebra-spring-2005/

จากตรงนั้นควรตรงไปข้างหน้าเพื่อรับข้อความเกริ่นนำใด ๆ ในคอมพิวเตอร์กราฟิก UoWashington มีหลักสูตรออนไลน์ (ไม่มีวิดีโอ): http://www.cs.washington.edu/education/courses/457/06au/lectures/

หากคุณใจร้อนคุณสามารถเริ่มต้นหลักสูตรกราฟิกโดยไม่ต้องใช้พีชคณิตเชิงเส้น แต่เชื่อฉันเมื่อฉันบอกว่ามันจะกลับมากัดคุณ :)


1

หากคุณต้องการเข้าใจวิธีการทำงานของซอฟต์แวร์แบบเดิม (และสิ่งต่าง ๆ ก็ไม่ได้เปลี่ยนแปลงไปมากนักแม้จะมีการวางท่อฮาร์ดแวร์ที่ตั้งโปรแกรมได้) หนังสือเล่มหนึ่งที่ฉันอยากจะแนะนำก็คือ Jim Blinn's: A Trip Down The Graphics Pipeline

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


1

ฉันเป็น TA สำหรับหลักสูตรกราฟิกที่มหาวิทยาลัยของฉันเป็นเวลาหลายปี ฉันกำหนดหลักสูตรและครอบคลุมสิ่งต่าง ๆ เช่นการแรสเตอร์ซอฟต์แวร์และการแรเงา Java3D, OpenGL และอื่น ๆ หลังจากนี้ในเวลาของฉันฉันตัดสินใจเขียน ray-tracer สำหรับการดัดแปลงของฉันเอง นี่เป็นประสบการณ์ที่น่าเหลือเชื่อ - ด้วยบัฟเฟอร์เฟรมและรูทีนแบบพิกเซล (x, y, สี) ใน 500 บรรทัดฉันมีรหัสเพื่อสร้างภาพที่มีทรงกลมสามเหลี่ยมสามเหลี่ยมเงาต่อพิกเซลเงาและอื่น ๆ ถ้าฉันต้อง ทำซ้ำ pracs สำหรับหลักสูตรฉันจะยืนยันว่านักเรียนทำตามรอยเรย์ เป็นวิธีที่ง่ายต่อการติดตามรายละเอียดของอัลกอริทึม scanline เมื่อสร้างแรสเตอร์เซอร์หรือรู้สึกว่าคุณกำลังทำงานผ่านกล่องดำโดยใช้ 3D API

สำหรับการเข้าถึงกล่องทรายกราฟิกอย่างรวดเร็วและมั่นคงฉันแนะนำให้เขียน ray-tracer ของคุณเอง เห็นได้ชัดว่านี่เป็นหนทางไกลจากสิ่งที่ใช้กันทั่วไปในการผลิตกราฟิก 3 มิติแบบเรียลไทม์ แต่เป็นวิธีที่ง่ายและกะทัดรัดในการดูและเรียนรู้ทฤษฎี


1

ขณะนี้ฉันกำลังทำเช่นเดียวกับคุณและพบCSCI 234 Introduction to Computer Graphics ใน iTunesUจะมีประโยชน์จริง ๆ หลังจากที่ฉันอ่านหนังสือสองสามเล่มเกี่ยวกับคอมพิวเตอร์กราฟิกและคณิตศาสตร์

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