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

VOlumetric piXEL (องค์ประกอบรูปภาพตามปริมาตร) วิธีในการเก็บข้อมูลปริมาณเป็นตารางปกติของค่า แท็กนี้ควรใช้กับคำถามที่เกี่ยวข้องกับ voxels

6
ฉันจะเพิ่มประสิทธิภาพโลก Minecraft-esque voxel ได้อย่างไร?
ฉันพบว่าโลกขนาดใหญ่ที่ยอดเยี่ยมของ Minecraft นั้นช้ามากในการนำทางแม้ว่าจะใช้ Quad-Core และกราฟิกการ์ดเนื้อ ฉันถือว่าความเชื่องช้าของ Minecraft มาจาก: Java เนื่องจากการแบ่งพาร์ติชันและการจัดการหน่วยความจำเร็วขึ้นในภาษา C ++ การแบ่งพาร์ติชันที่อ่อนแอของโลก ฉันอาจผิดทั้งสองข้อ อย่างไรก็ตามนี่ทำให้ฉันคิดถึงวิธีที่ดีที่สุดในการจัดการโลก voxel ขนาดใหญ่ มันเป็นโลก 3 มิติจริงที่บล็อกสามารถอยู่ในส่วนใดของโลกก็เป็นพื้นอาร์เรย์ใหญ่ 3D [x][y][z]ซึ่งแต่ละบล็อกในโลกที่มีประเภท (เช่นBlockType.Empty = 0, BlockType.Dirt = 1ฯลฯ ) ฉันคิดว่าเพื่อให้โลกประเภทนี้ทำงานได้ดีคุณจะต้อง: ใช้ต้นไม้ที่มีความหลากหลาย ( oct / kd / bsp ) เพื่อแยกลูกบาศก์ทั้งหมดออก ดูเหมือนว่า oct / kd จะเป็นตัวเลือกที่ดีกว่าเนื่องจากคุณสามารถแบ่งพาร์ติชันในระดับต่อคิวบ์ไม่ใช่ระดับต่อสามเหลี่ยม ใช้อัลกอริทึมบางอย่างเพื่อหาว่าบล็อกใดที่สามารถเห็นได้ในปัจจุบันเนื่องจากบล็อกที่อยู่ใกล้กับผู้ใช้มากขึ้นอาจทำให้บล็อกยุ่งเหยิง ทำให้วัตถุบล็อกมีน้ำหนักเบาดังนั้นจึงเป็นการเพิ่มและนำออกจากต้นไม้ได้อย่างรวดเร็ว ฉันเดาว่าไม่มีคำตอบที่ถูกต้องสำหรับเรื่องนี้ แต่ฉันสนใจที่จะเห็นความคิดเห็นของประชาชนในเรื่องนี้ คุณจะปรับปรุงประสิทธิภาพในโลก voxel …

3
เครื่องยนต์ภูมิประเทศของ voxel สร้างขึ้นมาได้อย่างไร?
ไม่กี่วันที่ผ่านมาฉันพบสิ่งที่เรียกว่า voxel terrains และฉันคิดว่ามันค่อนข้างเท่ห์ แต่ฉันไม่รู้จะสร้างอะไรขึ้นมา คุณสร้างแบบจำลองในซอฟต์แวร์การสร้างแบบจำลองของคุณหรือใช้สิ่งที่ต้องการความสูงหรือไม่ ฉันอ่านวิกิพีเดียว่า voxels เหมือนพิกเซล 3 มิติหรือพิกเซลเชิงปริมาตร หลังจากที่ผมทำให้ภูมิประเทศ voxel วิธีฉันสามารถใช้ชุเหล่านี้และทำให้พวกเขา destroyable / diggable ? ฉันจะเลือกคำตอบที่ดีที่สุดตาม: รหัสและอัลกอริทึม โดยเฉพาะอย่างยิ่งใน C # คำอธิบาย ฉันเป็นมือใหม่ที่มีอัลกอริธึม แต่ฉันคุ้นเคยกับการเขียนโปรแกรมเชิงวัตถุมาก การสาธิตทีละขั้นตอน ไม่เพียง แต่แนวคิด แต่เป็นทิศทาง แผนภาพ / ภาพประกอบ ไม่ไม่ใช่ภาพหน้าจอของเอ็นจินอื่น ๆ ฉันรู้ว่านี่เป็นเรื่องที่ซับซ้อน แต่ขอบคุณสำหรับความช่วยเหลือ! ไม่ฉันไม่ได้พยายามสร้าง minecraft โคลน แก้ไข ขอบคุณทุกคนสำหรับความช่วยเหลือที่ดีของคุณ (โดยเฉพาะ Nick Wiggill)! นี่คือสิ่งที่ฉันจัดการเพื่อให้ (กำลังดำเนินการ)


7
ฉันจะปรับปรุงความเร็วการเรนเดอร์ของเกมประเภท Voxel / Minecraft ได้อย่างไร?
ฉันกำลังเขียนโคลนของ Minecraft เอง (เขียนด้วยภาษาจาวา) มันใช้งานได้ดีในขณะนี้ ด้วยระยะการดู 40 เมตรฉันสามารถกด 60 FPS บน MacBook Pro 8,1 ได้อย่างง่ายดาย (Intel i5 + Intel HD Graphics 3000) แต่ถ้าฉันวางระยะทางในการมองที่ 70 เมตรฉันจะไปถึง 15-25 FPS ใน Minecraft ตัวจริงฉันสามารถใส่ความไม่ลงรอยกันในการมองไกล (= 256m) ได้โดยไม่มีปัญหา ดังนั้นคำถามของฉันคือฉันควรทำอย่างไรเพื่อทำให้เกมของฉันดีขึ้น? การเพิ่มประสิทธิภาพที่ฉันใช้: เก็บเฉพาะชิ้นส่วนในหน่วยความจำเท่านั้น (ขึ้นอยู่กับระยะการมองของผู้เล่น) Frustum culling (ครั้งแรกบนชิ้นแล้วบนบล็อก) วาดเฉพาะใบหน้าที่มองเห็นได้จริงๆของบล็อกเท่านั้น ใช้รายการต่ออันที่มีบล็อกที่มองเห็นได้ ส่วนที่มองเห็นได้จะเพิ่มเข้าไปในรายการนี้ หากพวกเขากลายเป็นล่องหนพวกเขาจะถูกลบออกจากรายการนี้โดยอัตโนมัติ บล็อกกลายเป็น (ใน) มองเห็นได้โดยการสร้างหรือทำลายบล็อกเพื่อนบ้าน การใช้รายการต่ออันประกอบด้วยบล็อกการปรับปรุง กลไกเดียวกับรายการบล็อกที่มองเห็นได้ ใช้newคำสั่งแทบไม่มีในลูปเกม …

1
เครื่องยนต์ voxel เหมาะสมกับเกม Minecraft หรือไม่?
ทำไม Minecraft ใช้รูปหลายเหลี่ยมในการวาดภูมิประเทศของโลกแทนที่จะเป็น voxels เอ็นจิ้นการเรนเดอร์ที่ใช้ voxel จะเหมาะกับโลกของเกมที่ถูกทำลายอย่างสมบูรณ์ที่สร้างจากลูกบาศก์อย่าง Minecraft หรือไม่? จะมีประสิทธิภาพมากกว่าการใช้รูปหลายเหลี่ยมหรือไม่

3
สำหรับการเรนเดอร์ voxel จะมีประสิทธิภาพมากขึ้น: VBO ที่สร้างไว้ล่วงหน้าหรือ shader เรขาคณิต
ด้วยอาร์เรย์ voxel ที่ค่อนข้างคงที่สิ่งที่มีประสิทธิภาพมากขึ้น: การใช้ CPU เพื่อสร้าง VBO ล่วงหน้าเพื่อแสดงใบหน้าของ voxel (โดยไม่สนใจรูปแบบการแสดงผลขั้นสูงเช่นการเดินขบวนลูกบาศก์ในตอนนี้) หรือการใช้เรขาคณิต shader บน GPU เพื่อสร้าง เผชิญกับการบิน? ฉันไม่ได้กังวลเกี่ยวกับการอัปเดตการเปลี่ยนแปลง voxels แต่แน่นอนว่าเป็นประโยชน์ของรุ่น GPU เนื่องจากคุณไม่จำเป็นต้องสร้าง VBO ใหม่ นอกจากนี้วิธีการ GS ยังให้ความรู้สึกทันสมัยยิ่งขึ้น :) ในทางกลับกันฉันไม่ได้ดูรายละเอียดว่า GS ใช้งานได้จริงกับท่อส่งแรสเตอร์ใน GPU ที่ทันสมัยได้อย่างไร มันส่งออกจุดยอดในกระแสแคชหรือเป็นจุดยอดที่เขียนไปยังหน่วยความจำ GPU ปกติในระหว่าง? ถ้าเป็นอย่างหลังการสร้างแบบทันทีก็สามารถลดแบนด์วิดท์และพลังการประมวลผลจากส่วนที่เหลือของงาน GPU ที่ฉันเดาแล้วมันจะมีประโยชน์มากขึ้นในการทำบนซีพียู ..

6
ฟรีโปรแกรมแก้ไข voxel [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Game Exchange Stack Exchange ปิดให้บริการใน6 ปีที่ผ่านมา มีใครรู้บ้างเกี่ยวกับโปรแกรมแก้ไข voxel ฟรีและ / หรือตัวแปลง voxel-to-mesh?
25 tools  models  editors  voxels 

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

3
ฉันจะสร้างฝูงบกลอยตัวสำหรับเครื่องยนต์ที่เหมือน Minecraft ได้อย่างไร?
ฉันกำลังสร้างเอนจินคล้าย Minecraft ใน XNA สิ่งที่ฉันต้องการทำคือการสร้างเกาะลอยคล้ายกับที่แสดงในวิดีโอนี้: http://www.youtube.com/watch?v=gqHVOEPQK5g&feature=related ฉันจะทำซ้ำสิ่งนี้โดยใช้เครื่องกำเนิดไฟฟ้าโลกได้อย่างไร ฉันต้องใช้อัลกอริธึมเสียงรบกวน Perlin บ้างหรือไม่ ฉันไม่รู้ว่ามันจะช่วยให้ฉันสร้างดินแดนเช่นนี้ได้อย่างไร นี่คือรหัสสำหรับตัวกำเนิดสัญญาณรบกวน perlin ที่ฉันใช้: private double[,] noiseValues; private float amplitude = 1; // Max amplitude of the function private int frequency = 1; // Frequency of the function /// <summary> /// Constructor /// </summary> /// public PerlinNoise(int freq, float _amp) …

2
ข้อดีและข้อเสียของรูปแบบไฟล์ข้อมูลของ voxel คืออะไร [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Game Exchange Stack Exchange ปิดให้บริการใน7 เดือนที่ผ่านมา .VXL .VOX .KVX .KV6 .V3A .V3B ฉันพยายามที่จะตัดสินใจว่ามันคุ้มค่าที่จะไปกับใด ๆ ข้างต้นหรืออื่น ๆ หรือถ้าฉันควรจะม้วนตัวเอง ปัจจัยการตัดสินใจตามลำดับความสำคัญคือ: การสนับสนุนภาพเคลื่อนไหว (ฉันรู้ว่านี่เป็นเรื่องยากเมื่อพูดถึง voxels) โดยใช้ voxel deltas หรือคำอธิบายการแปลงตัวเลข ความเรียบง่าย (หรืออย่างน้อยก็เป็นรูปแบบย่อ) การอัด จากสิ่งที่ฉันสามารถบอกได้ว่ารูปแบบ Tiberian Sun VXL เป็นรูปแบบเดียวที่ออกแบบมาสำหรับการเคลื่อนไหว แต่ Ken Silverman จากชื่อเสียง Voxelstein3D อ้างว่า VXL ไม่สนับสนุนการเคลื่อนไหว (ในไฟล์เดียวเป็นคำพูดของเขา) ดังนั้นฉันจึงสงสัยว่าอาจมีรูปแบบ. VXL ไม่แตกต่างกันสองแบบเนื่องจากดูเหมือนว่าเป็นตัวเลือกที่ชัดเจนของนามสกุลไฟล์สำหรับข้อมูล …

4
โครงสร้างข้อมูลใดที่ควรใช้เพื่อเป็นตัวแทนของภูมิประเทศ voxel
ตามหน้า Wikipediaเกี่ยวกับ voxels "[... ] ตำแหน่งของ voxel นั้นอนุมานตามตำแหน่งของมันเมื่อเทียบกับ voxels อื่น ๆ (เช่นตำแหน่งของมันในโครงสร้างข้อมูลที่ทำขึ้นเป็นรูปปริมาตรเดียว)" เราควรนำโครงสร้างข้อมูลไปใช้อย่างไร? ฉันกำลังคิดเกี่ยวกับลำดับที่หนึ่ง แต่ฉันสงสัยว่ามีอย่างอื่นที่ฉันไม่เคยได้ยิน

6
รายละเอียดไม่ จำกัด จริงหรือ
หลายแง่มุมของ Unlimited Details Unlimited Detail Technology ดูน่าสงสัยสำหรับฉันแม้แต่ย่อหน้าเกริ่นนำ (เพราะการใช้คำไม่ จำกัด ): Unlimited Detail เป็นเทคโนโลยีใหม่สำหรับการสร้างกราฟิก 3 มิติแบบเรียลไทม์ รายละเอียดไม่ จำกัด มีความแตกต่างจากระบบกราฟิก 3 มิติที่มีอยู่เนื่องจากสามารถประมวลผลข้อมูลจุดคลาวด์แบบไม่ จำกัด แบบเรียลไทม์ทำให้มีระดับเรขาคณิตสูงสุดเท่าที่เคยเห็นมา ข้อความข้างต้นมาจากเว็บไซต์เทคโนโลยีรายละเอียดไม่ จำกัด ที่มีอยู่อีกต่อไป ( ภาพรวม archive.org จาก 2011 ) คำถามของฉันคือ: เทคโนโลยีรายละเอียดนี้มีอยู่จริงหรือไม่? และถ้าเป็นเช่นนั้นเหตุใดจึงไม่ใช้ในเกมในปัจจุบัน การอ้างอิงอื่น ๆ กับเทคโนโลยีรายละเอียดไม่ จำกัด : บทความเกี่ยวกับ Rock Paper Shotgun วิดีโอสาธิตบน Game Trailers.com บทสัมภาษณ์กับผู้สร้าง (Bruce Dell) บทความเกี่ยวกับ …
17 3d  voxels  point-cloud 

1
วิธีการใช้กลไกของความเครียด / ความเครียดในภูมิประเทศ voxel?
ฉันอยู่ในขั้นตอนการพัฒนาโลกที่เหมือน Minecraft ซึ่งภูมิประเทศแบ่งออกเป็น voxels อย่างไรก็ตามฉันยังต้องการให้การกำหนดค่าของภูมิประเทศที่ไม่เสถียรลดลงอย่างไม่แน่นอน ยกตัวอย่างเช่นแขวนที่หนักเกินไปจะแตกหักและทำลายปิดที่ชุ 'ความเครียดสูง'ราวกับจะก่อเสาที่มีฐานการกัดเซาะไม่สมมาตร ฉันกำลังคิดที่จะเพิ่มฟิลด์ 'stress vector' ลงในแต่ละ voxel ในภูมิประเทศและทำสิ่งต่อไปนี้ (pseudocode): foreach voxel in terrain foreach neighbor in voxel.neighbor_voxels() if magnitude(voxel.stress - neighbor.stress) > stressThreshold detach_voxels(voxel, neighbor) แต่ปัญหาคือฉันไม่รู้ว่าจะคำนวณความเค้นเหล่านี้อย่างไร มีอัลกอริธึมที่ใช้ FEA แบบพิเศษสำหรับการแยกย่อยด้วย voxel ที่ฉันสามารถใช้ในการคำนวณความเค้นบนพื้นฐานของต่อ voxel หรือไม่? หรือฉันกำลังเข้าใกล้สิ่งนี้ผิดทั้งหมดและมีวิธีอื่นที่จะทำเช่นนี้?

1
ภูมิประเทศเรียบ Voxel
ในโครงการส่วนบุคคลฉันพยายามสร้างตัวสร้างภูมิประเทศที่จะสร้างภูมิประเทศที่ดูคล้ายกับภูมิประเทศที่ราบเรียบของ Castle Story หากคุณไม่เคยเห็นมาก่อนนี่: อย่างที่คุณเห็นมันคือการรวมกันของบล็อกและบล็อก "ราบรื่น" สิ่งที่ฉันพยายามทำเพื่อเลียนแบบรูปลักษณ์นี้คือให้แผนผังความสูงขนาดเล็กแต่ละบล็อก โดยทั่วไปแล้วใช้งานได้ แต่มีบางประเด็นที่ให้ภูมิประเทศเช่นนี้: ปัญหาคือว่าแต่ละบล็อกมี 1x1x1 แต่บางครั้งความสูงของตำแหน่งใดตำแหน่งหนึ่งเป็นค่าลบหรือ> 1 ในกรณีนี้ฉันคลิปมันและตั้งค่าความสูงเป็น 0 หรือ 1 เพื่อแสดงให้เห็นถึงสิ่งที่ฉันหมายถึงนี่คือแผนภาพ: เพื่อสร้างความสูงฉันโดยทั่วไปทำ: genColumn(int x, int z) { int highestBlockY = (int)noise2d(x, z); bool is_surface = true; for(int y = max_height - 1; y >= 0; y--) { Block b; if(is_surface) { b = …

4
ฉันจะนำแสง voxel มาใช้กับการบดเคี้ยวในเกมสไตล์ Minecraft ได้อย่างไร
ฉันใช้ C # และ XNA อัลกอริทึมปัจจุบันของฉันสำหรับให้แสงสว่างเป็นวิธีเรียกซ้ำ อย่างไรก็ตามมันมีราคาแพงจนถึงจุดที่ก้อน 8x128x8 หนึ่งก้อนคำนวณทุก 5 วินาที มีวิธีการให้แสงแบบอื่นที่จะทำให้เกิดเงาแบบแปรผันได้หรือไม่? หรือวิธีการเวียนเกิดเป็นวิธีที่ดีและบางทีฉันอาจทำผิด ดูเหมือนว่าสิ่งที่เกิดขึ้นซ้ำ ๆ นั้นมีราคาแพง (ถูกบังคับให้ผ่านบล็อกประมาณ 25k ต่อก้อน) ฉันกำลังคิดเกี่ยวกับการใช้วิธีการคล้ายกับการติดตามรังสี แต่ฉันไม่รู้ว่ามันจะทำงานอย่างไร อีกสิ่งหนึ่งที่ฉันพยายามคือการจัดเก็บแหล่งกำเนิดแสงในรายการและสำหรับแต่ละบล็อกจะได้ระยะห่างจากแหล่งกำเนิดแสงแต่ละจุดและการใช้แสงนั้นไปยังระดับที่ถูกต้อง แต่แสงจะผ่านกำแพง รหัสการเรียกซ้ำปัจจุบันของฉันอยู่ด้านล่าง สิ่งนี้ถูกเรียกจากที่ใด ๆ ในก้อนที่ไม่มีระดับแสงเป็นศูนย์หลังจากการล้างและเพิ่มแสงแดดและคบไฟใหม่ world.get___atเป็นฟังก์ชั่นที่สามารถรับบล็อกด้านนอกของก้อนนี้ (นี่คือภายในชั้นเรียนชิ้น) Locationเป็นโครงสร้างของตัวเองที่คล้ายกับ a Vector3แต่ใช้จำนวนเต็มแทนค่าทศนิยม light[,,]เป็น lightmap สำหรับชิ้นข้อมูล private void recursiveLight(int x, int y, int z, byte lightLevel) { Location loc = new …

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