มันง่ายที่จะทำเช่นนั้น การใช้ออคทรีช่วยให้คุณแบ่งโลกออกเป็นชิ้นเล็ก ๆ ที่มีความก้าวหน้าจนกว่าคุณจะถึงระดับรายละเอียดที่ต้องการ นี่อาจเป็นขนาดของเม็ดทราย คิดว่า Minecraft นำไปสู่สุดขั้ว
ตอนนี้คุณทำอะไร หากรายละเอียดมีขนาดเล็กพอคุณอาจพิจารณาสร้างบล็อก - โหนดปลายใบไม้ของ octtree ตัวเลือกอื่น ๆ ได้แก่ ทรงกลมหรือดั้งเดิมเรขาคณิต สีและปกติสามารถจัดเก็บที่แต่ละโหนดและสำหรับ LOD ที่ลดลงหนึ่งสามารถเก็บข้อมูลคอมโพสิตที่ระดับที่สูงขึ้นของต้นไม้
คุณจะจัดการข้อมูลได้มากแค่ไหน? หากทรีเป็นโครงสร้างข้อมูลจริงคุณสามารถมีพอยน์เตอร์หลายตัวอ้างอิงต้นไม้ย่อยเดียวกันได้เหมือนการนำพื้นผิวมาใช้ซ้ำ แต่ก็มีเรขาคณิตด้วยเช่นกัน เคล็ดลับคือการใช้ซ้ำได้มากที่สุดในทุกระดับ ตัวอย่างเช่นหากคุณเชื่อมต่อ octants 4 ตำแหน่งในการจัดเรียง tetrahedral ทั้งหมดไปยังโหนดลูกเดียวกันในทุกระดับคุณสามารถสร้างเศษส่วน sierpinsky 3d ขนาดใหญ่มากโดยใช้หน่วยความจำเกือบจะไม่ ฉากจริงจะมีขนาดใหญ่กว่าแน่นอน
ปัญหาคือมันจะทำงานเฉพาะกับเรขาคณิตคงที่เพราะภาพเคลื่อนไหวที่แท้จริงจะต้องมีการจัดการกับข้อมูลทั้งหมดทุกเฟรม อย่างไรก็ตามการแสดงผลโดยเฉพาะอย่างยิ่งกับตัวแปร LOD ก็ไม่มีปัญหา
วิธีที่จะทำให้เรื่องแบบนี้? ฉันเป็นแฟนตัวยงของการติดตามรังสีและมันก็จัดการกับสิ่งนั้นได้ดีทั้งที่มีและไม่มี GPU
ทั้งหมดนี้เป็นการเก็งกำไรแน่นอน ฉันไม่มีข้อมูลเฉพาะเกี่ยวกับกรณีที่คุณกำลังพูดถึง และตอนนี้สำหรับบางสิ่งที่เกี่ยวข้อง แต่แตกต่างกัน:
มีการแสดงข้อมูลจำนวนมาก
แก้ไขและนี่คือสิ่งที่ฉันทำ แต่ฉันตั้งใจเปลี่ยนบรรทัดฐานเพื่อทำให้กล่องชัดเจนขึ้น:
กระต่ายแสตนฟอร์ด
อัตราเฟรมดังกล่าวอยู่บนแกนหลัก IIRC เดียว การเพิ่มความลึกของต้นไม้เป็นสองเท่าโดยทั่วไปจะลดอัตราเฟรมลงครึ่งหนึ่งในขณะที่การใช้หลายคอร์ โดยปกติฉันจะเก็บแบบดั้งเดิม (สามเหลี่ยมและอื่น ๆ ) ไว้ใน octtree ของฉัน แต่สำหรับรอยยิ้มฉันได้ตัดสินใจที่จะสร้างโหนดใบของต้นไม้เองในกรณีนี้ ประสิทธิภาพที่ดีขึ้นอาจเกิดขึ้นได้หากคุณปรับวิธีเฉพาะให้เหมาะสมที่สุด
ที่ไหนสักแห่งใน ompf มีรถที่ทำด้วย voxels ที่ยอดเยี่ยมจริงๆ - ยกเว้นว่ามันจะคงที่ ดูเหมือนจะไม่พบตอนนี้ ...