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

1
เข้าใจอย่างลึกซึ้ง“ ระดับรายละเอียดที่หนาเป็นชิ้น”
เพิ่งพยายามทำความเข้าใจกับการนำระบบรายละเอียดมาใช้ใน Unity ฉันจะสร้างเครื่องบินตาข่ายสี่ลำโดยแต่ละแผนที่มีความสูง แต่ฉันเดาว่าไม่สำคัญเกินไปในขณะนี้ ฉันมีคำถามมากมายหลังจากอ่านเกี่ยวกับเทคนิคนี้ฉันหวังว่านี่จะไม่มากเกินไปที่จะขอให้ทุกคนในครั้งเดียว แต่ฉันจะขอบคุณมากสำหรับใครบางคนที่จะช่วยให้ฉันเข้าใจเทคนิคนี้ 1 : ฉันไม่สามารถเข้าใจได้ว่าจุดใดที่ท่อส่งของChunked LODที่ตาข่ายแบ่งออกเป็นชิ้น ๆ เป็นสิ่งนี้ในระหว่างการสร้างตาข่ายครั้งแรกหรือมีอัลกอริทึมแยกซึ่งทำสิ่งนี้ 2 : ฉันเข้าใจว่ามีการใช้โครงสร้างข้อมูล Quadtree เพื่อเก็บข้อมูลChunked LODฉันคิดว่าฉันพลาดจุดนี้ไปเล็กน้อย แต่ Quadtree เก็บข้อมูลจุดสุดยอดและสามเหลี่ยมสำหรับแต่ละแผนกย่อยหรือไม่? 3a : ระยะห่างของกล้องคำนวณโดยทั่วไปอย่างไร เมื่ออ่านเกี่ยวกับควอดทรีของกล่องจัดชิดขอบแกนเป็นที่กล่าวถึงมาก ในกรณีนี้แต่ละอันจะมีช่องสำหรับชนกันเพื่อตรวจจับกล้องหรือเครื่องเล่นอยู่ใกล้ ๆ หรือไม่? หรือมีวิธีที่ดีกว่าในการทำเช่นนี้? (raycast อาจจะ?) 3b : กลุ่มก้อนคำนวณระยะทางของกล้องด้วยตนเองหรือไม่? 4 : แต่ละก้อนมี "การแก้ไข" ที่เหมือนกันหรือไม่ ตัวอย่างเช่นที่ระดับบนสุดตาข่ายจะเป็น 32x32 แต่ละโหนดย่อยจะเป็น 32x32 ตัวอย่างด้านล่าง:

1
การปะทะกันบนต้นไม้รูปสี่เหลี่ยม / ตาราง - นำตรรกะไปปฏิบัติ
ก่อนอื่นฉันเพิ่งเขียนตรรกะเกมของตัวเองในระยะเวลาหนึ่งดังนั้นฉันต้องขออภัยถ้าสิ่งนี้อาจดูตรงไปตรงมา ฉันอ่านเกี่ยวกับต้นไม้สี่ต้นและการตรวจจับการชนกันของกริดเป็นอย่างมาก ฉันเข้าใจตรรกะ - โดยทั่วไปจะไม่ตรวจสอบการชนยกเว้นว่าวัตถุอยู่ใกล้พื้น แต่มันก็ไม่เคยถูกกล่าวถึงว่ามันใช้งานจริงอย่างไร ฉันมีวิธีที่เป็นไปได้สองสามอย่างในหัว แต่ก็ไม่แน่ใจว่าวิธีไหนดีที่สุด การทดสอบการชนทั่วไป - ไม่มีการเพิ่มประสิทธิภาพ for(var i:int = 0; i < objects.length; i++){ //find object A var objectA = objects[i]; for(var j:int = i + 1; j < objects.length; j++){ //find object B var objectB = objects[j]; if(objectA.collidesWith(objectB){ //handle collision logic } } เก็บเพื่อนบ้าน …

2
KD-Tree กับ Quadtree แบบไดนามิกเต็มรูปแบบ?
ทำงานในเกมของฉันฉันมาถึงจุดที่ฉันต้องติดตามทุกหน่วยในโลกเพื่อที่ฉันจะได้ทำการตรวจสอบเพื่อนบ้านที่ใกล้ที่สุดเพื่อต่อสู้ เกมนี้เป็นเกมที่คล้ายกับ RTS โดยมีหน่วยอัตโนมัติขนาดเล็กหลายพันตัวเคลื่อนที่อยู่รอบ ๆ ฉันได้ดู KD-Trees และ Quadtrees (โดยเฉพาะ Point Quadtrees) ฉันยังคงพยายามที่จะเรียนรู้รายละเอียดเกี่ยวกับวิธีการทำงานของพวกเขา แต่จนถึงตอนนี้ Point Quadtrees ก็เหมาะสมกับฉันมากที่สุด อย่างไรก็ตามฉันได้รับความประทับใจว่า KD-Trees นั้นเร็วกว่าการค้นหาซึ่งสำคัญกับจำนวนคะแนนที่ฉันมีในต้นไม้ ในอีกกรณีหนึ่งในกรณีของฉันฉันจะติดตามหน่วยจำนวนมากที่เคลื่อนไหวตลอดเวลา จากเฟรมหนึ่งไปอีกเฟรมตำแหน่งของพวกเขาจะแตกต่างกันเสมอ Quadtrees นั้นเร็วกว่าที่จะปรับสมดุลได้ดีกว่า KD-Trees แต่ฉันไม่รู้ว่ามันจะใช้งานได้หรือไม่เมื่อคุณปรับสมดุลทุกจุดในต้นไม้ ฉันสงสัยว่ามันจะดีกว่าไหมในกรณีนี้ที่จะตัดต้นไม้แต่ละเฟรมและสร้างใหม่จากศูนย์แทนที่จะลองปรับสมดุลทุก ๆ จุดในต้นไม้ ถ้า Quadtree เร็วกว่าที่จะปรับสมดุลนั่นหมายความว่ามันเร็วกว่าในการสร้างจากศูนย์หรือไม่ ถ้าเป็นเช่นนั้นสิ่งนี้อาจมีความสำคัญต่อประสิทธิภาพมากกว่าความเร็วในการค้นหาของ KD-Tree ขึ้นอยู่กับว่าต้องสร้างภาระมากแค่ไหน แต่ฉันไม่รู้ ...
11 rts  quadtree  kd-tree 

1
รูปร่าง (สี่เหลี่ยม) ทำงานในต้นไม้สี่ทิศได้อย่างไร
ฉันถูกบอกว่าต้นไม้รูปสี่เหลี่ยมเป็นโครงสร้างข้อมูลที่เหมาะสำหรับเกมของฉัน แต่ฉันมีปัญหาในการทำความเข้าใจว่ารูปร่างทำงานอย่างไรภายในต้นไม้รูปสี่เหลี่ยม ฉันทำสิ่งนี้ใน JavaScript แต่ฉันคิดว่าคำถามเหล่านี้สามารถใช้ได้กับต้นไม้สี่ต้นในภาษาใด ๆ ผมคิดว่าผมเข้าใจส่วนใหญ่วิธีการขั้นพื้นฐาน (x, y) จุดและแทรกจุดงานในต้นไม้รูปสี่เหลี่ยมและที่ฉันสามารถทำมันบนกระดาษ นี่คือJSfiddleของการทดสอบของฉันกับจุด นอกเหนือจากกรณีหนึ่งการทดสอบของฉันกับคะแนนทำงานตามที่คาดไว้ แต่ความสับสนของฉันเริ่มต้นเมื่อรูปร่างเช่นสี่เหลี่ยมมีส่วนร่วม เมื่อคุณดึงข้อมูลจากต้นไม้รูปสี่เหลี่ยมด้วยรูปร่างมันจะตรวจสอบแต่ละจุดของรูปร่างและโหนดใดที่มันตกลงไป และการแทรกรูปร่างยังทำงานได้อย่างไรเมื่อมันยอมรับพารามิเตอร์ (x, y, width, height) สำหรับแต่ละรูปร่าง มันใช้ความกว้าง / ความสูงจากจุดเริ่มต้นในการคำนวณจุดมุมอื่น ๆ ซึ่งจะถูกแจกจ่ายไปยังโหนดที่เหมาะสม? หากรูปร่างที่แทรกเข้าไปมีสี่โหนดข้อมูลของรูปร่างนั้นจะถูกบันทึกลงในทั้งสี่โหนดหรือไม่ และเมื่อวิธีการดึงข้อมูลยอมรับรูปร่างเป็นพารามิเตอร์ (x, y, ความกว้างความสูง) สิ่งที่เกิดขึ้นจริง? มันเป็นครั้งแรกหรือไม่ที่จะเห็นว่ารูปร่างของโหนดนั้นจะขยายไปถึงถ้ามันถูกแทรกเข้าไปแล้วดึงวัตถุทั้งหมดของโหนดเหล่านั้นหรือไม่? ฉันมีJSfiddle ทำงานกับรูปร่างแต่ฉันสับสนอย่างมากกับผลลัพธ์ของการทดสอบของฉัน ฉันได้รับวัตถุที่ซ้ำกันที่ถูกส่งคืน! ตัวอย่างเช่นสี่เหลี่ยมจัตุรัสสีแดงนั้นเทียบเท่ากับพารามิเตอร์ที่ฉันกำลังเข้าสู่วิธีการดึงของฉัน ฉันคิดว่าเนื่องจากสี่เหลี่ยมสีแดงนี้ครอบคลุมทั้งสี่โหนดมันควรส่งคืนวัตถุทุกชิ้นในต้นไม้รูปสี่เหลี่ยม! แต่มันไม่ได้และฉันมีปัญหาในการหาเหตุผลเข้าข้างตนเองว่ามันจะกลับมา ฉันมีการทดสอบอื่น ๆ อีกจำนวนมากที่แสดงความคิดเห็นอยู่ในขณะนี้ แต่คุณสามารถยกเลิกการแสดงความคิดเห็นและเรียกใช้พวกเขาเพื่อดูผลลัพธ์ที่สับสนมากขึ้น! ถ้าฉันต้องการส่งคืนคะแนนทั้งหมดในต้นไม้รูปสี่เหลี่ยมฉันจะทำอย่างไร วิธีการดึงข้อมูลโดยใช้รูปร่างขนาดทั้งหมดของขอบเขต? ตัวอย่างเช่นดึง (0, 0, canvas.width, canvas.height)? ห้องสมุด …

3
QuadTree: เก็บคะแนนเท่านั้นหรือภูมิภาค?
ฉันกำลังพัฒนาควอดทรีเพื่อติดตามวัตถุที่เคลื่อนไหวเพื่อตรวจจับการชน วัตถุแต่ละชิ้นมีรูปร่างที่ล้อมรอบสมมติว่าพวกมันเป็นวงกลมทั้งหมด (มันเป็นเกมจากบนลงล่าง 2D) ฉันไม่แน่ใจว่าจะจัดเก็บเฉพาะตำแหน่งของวัตถุแต่ละชิ้นหรือรูปร่างที่มีขอบเขตทั้งหมด หากทำงานกับจุดการแทรกและการแบ่งย่อยนั้นง่ายเนื่องจากวัตถุจะไม่ขยายออกไปหลายโหนด ในทางกลับกันเคียวรีความใกล้ชิดสำหรับวัตถุอาจพลาดการชนเพราะมันจะไม่นำขนาดของวัตถุมาพิจารณา วิธีการคำนวณภูมิภาคแบบสอบถามเมื่อคุณมีคะแนนเท่านั้น? หากทำงานกับภูมิภาคจะจัดการกับวัตถุที่ครอบคลุมหลายโหนดได้อย่างไร ควรแทรกในพาเรนต์โหนดที่ใกล้ที่สุดซึ่งมีทั้งหมดแม้ว่าจะเกินความจุของโหนดหรือไม่ ขอบคุณ
9 quadtree 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.