บางคนสามารถอธิบายการแสดงเส้นโค้งคู่ได้หรือไม่


9

ฉันพยายามทำความเข้าใจกับการเรนเดอร์ voxel และมองดู contouring คู่ (DC)

จนถึงตอนนี้ฉันเข้าใจสิ่งนี้มาก:

  1. ใช้ฟังก์ชั่นความหนาแน่นสำหรับชุดของจุดกริด (เช่นฟังก์ชั่นสัญญาณรบกวน)
  2. ค้นหาว่าขอบใดใน gird มีการเปลี่ยนแปลงระหว่างจุดสิ้นสุด
  3. จากขอบเหล่านี้จะสร้างจุดตัด (เช่นเวกเตอร์)

ตอนนี้ที่นี่คือที่ที่ฉันติดอยู่ต่อไปจะสร้างบรรทัดฐาน แต่อย่างไร เมื่อดูที่หัวข้อนี้ภาพนี้ปกติจะหมดไป

                                                   กริดที่เซ็นชื่อพร้อมขอบติดแท็กข้อมูล Hermite

การทำวิจัยบ่งชี้ว่าบรรทัดฐานจะถูกสร้างขึ้นจากหน้าตา ถูกต้องหรือไม่ที่จะคิดว่าฉันเปลี่ยนจากเสียงเป็น isosurface เป็นบรรทัดฐาน? ถ้าเป็นเช่นนั้นฉันจะสำเร็จแต่ละขั้นตอนได้อย่างไร

เพื่อความเข้าใจของฉันขั้นตอนต่อไปจะเป็นดังต่อไปนี้จากกระดาษ DC ;

สำหรับแต่ละขอบที่แสดงการเปลี่ยนแปลงเครื่องหมายให้สร้างรูปสี่เหลี่ยมที่เชื่อมต่อจุดลดขนาดของสี่ลูกบาศก์ที่มีขอบ

คำพูดนี้แสดงด้วยภาพด้านบนหรือไม่?

ในที่สุดขั้นตอนต่อไปคือการเรียกใช้ QEF ด้วยจุดตัดและบรรทัดฐานและสิ่งนี้จะสร้างข้อมูลจุดสูงสุดของฉัน ถูกต้องหรือไม่


เมื่อฉันเข้าใจกระบวนการนี้มันเป็นอะไรที่ ... เสียงรบกวน> จุดเมฆ> พื้นผิว iso> ปกติ ... แต่ฉันไม่ฉลาดพอที่จะอ้างว่าฉันสามารถอธิบายกระบวนการนี้ได้อย่างถูกต้องดังนั้นฉันจะไม่พยายามตอบคำถาม
สงคราม

คำตอบ:


3

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

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

ตอนนี้สิ่งกีดขวางที่ใหญ่ที่สุดของฉันในการใช้สิ่งนี้คือการแก้ไข QEF จริงๆแล้วฉันคิดวิธีแก้ปัญหาแบบวนซ้ำง่าย ๆ ที่จะทำงานได้ดี (เช่น) GPU ในแบบคู่ขนาน โดยทั่วไปคุณจะเริ่มต้นจุดสุดยอดในใจกลางของเซลล์ จากนั้นคุณหาค่าเฉลี่ยเวกเตอร์ทั้งหมดที่นำมาจากจุดยอดไปยังแต่ละระนาบแล้วเลื่อนจุดยอดไปตามผลลัพธ์นั้นและทำซ้ำขั้นตอนนี้เป็นจำนวนคงที่ ฉันพบว่าการเคลื่อนที่ประมาณ 70% ตามผลลัพธ์จะคงที่ในการวนซ้ำน้อยที่สุด


ดังนั้นสมมติว่าฉันมีเซลล์ / voxel ที่ฉันรู้ว่าแสดงการเปลี่ยนแปลงสัญญาณ (เช่นกรณีเช่น MC) ฉันได้วิ่งฟังก์ชั่นเสียงสำหรับแต่ละมุม 8 ของเซลล์เพื่อค้นหาความหนาแน่นของมัน สิ่งที่ฉันมีปัญหาในการทำความเข้าใจคือจากนี้ฉันจะหาตัวแปรx , nและpของ QEF ได้อย่างไร
สบู่

xคือตำแหน่งจุดสุดยอด สำหรับจุดตัดแต่ละจุดคุณมีp (ตำแหน่ง) และn (ปกติ) ซึ่งประกอบขึ้นเป็นระนาบที่ฉันกำลังพูดถึง
jmegaffin

pถูกค้นพบโดยการหาว่าค่าเฉลี่ยถ่วงน้ำหนักของทั้งสองความหนาแน่นตามขอบเป็นศูนย์ จากนั้นคุณคำนวณnโดยการไล่ระดับสีของฟังก์ชั่นความหนาแน่นของคุณในหน้า
jmegaffin

ดังนั้นโดยทั่วไปสำหรับลูกบาศก์แต่ละอันฉันคำนวณpและnสำหรับแต่ละ 12 ขอบจากนั้นเรียกใช้ QEF สำหรับแต่ละเซลล์ขอบpและnเป็นxซึ่งในตัวอย่างของคุณอยู่ที่กึ่งกลางของ voxel / เซลล์เพื่อเริ่มต้นด้วย? ถ้าสี่เซลล์ใช้ขอบเดียวกันฉันสร้างรูปสี่เหลี่ยมเชื่อมต่อแต่ละสี่เซลล์x ? และผลลัพธ์รูปสี่เหลี่ยมของข้อมูลเหลี่ยมของฉันคืออะไร
สบู่

ไม่ใช่ทุกขอบจะมีจุดตัดดังนั้นคุณไม่จำเป็นต้องแก้ QEF สำหรับ 12 เครื่องบิน นอกเหนือจากที่คุณได้รับ!
jmegaffin

1

จากการอ่านกระดาษจนถึงหน้า 2 ดูเหมือนว่าน้ำหนักของปริมาตรจะถูกเก็บไว้ที่มุมของกริดแทนที่จะเป็นน้ำหนักของลูกบาศก์เองตามปกติอัลกอริธึมสไตล์ Marching Cubes ตุ้มน้ำหนักมุมเหล่านี้กำหนดจุดระหว่างตามขอบระหว่าง 2 มุมที่มีการเปลี่ยนเครื่องหมายจากมุมหนึ่งไปยังอีกมุมหนึ่งขอบที่มีการเปลี่ยนแปลงเครื่องหมายยังจัดเก็บปกติสำหรับขอบซึ่งเป็นเส้นมุมในการแสดง 2D ของคุณใน OP ข้อมูลปกตินั้นจะถูกกำหนดในระหว่างการสร้างโวลุ่ม (ไม่ว่าจะใช้เครื่องมือแก้ไขหรือวิธีการสร้างโวลุ่มแบบโพรเซสซิง) ไม่ใช่หลังจากที่มีการสร้าง isosurface ตามที่คาดไว้โดยอัลกอริธึมสไตล์การเดิน ข้อมูลปกติ "สถานะ" ที่เส้น / พื้นผิวผ่านจุดนั้นต้องมีค่าปกติที่กำหนดไว้ล่วงหน้า ในกรณีที่ Marching Cubes จะโค้งงอเส้นที่จุดนั้นเพื่อผสมพันธุ์กับจุดอื่นบนขอบที่อยู่ติดกัน, Marching Cubes Cubes และ Dual Contouring ทั้งคู่ขยายเส้น / พื้นผิวออกจนกว่ามันจะตัดกับเส้น / พื้นผิวผ่านจุดบน ขอบที่อยู่ติดกันซึ่งมีค่าปกติต่างกัน วิธีนี้ช่วยให้สามารถสร้างมุมที่คมชัดจากข้อมูลปริมาณที่อัลกอริทึม Marching Cubes พื้นฐานจะปัดเศษพื้นผิวบ้าง ฉันไม่ค่อยเข้าใจว่า QEFs (ฟังก์ชั่นข้อผิดพลาดสมการกำลังสอง) เล่นในส่วนนี้ได้อย่างไรยกเว้นว่าพวกเขาทำให้การคำนวณจุดขยายภายในลูกบาศก์นั้นง่ายขึ้น Cubing Marching Cubes และ Dual Contouring ทั้งคู่ขยายเส้น / พื้นผิวออกไปจนกระทั่งมันตัดกับเส้น / พื้นผิวผ่านจุดบนขอบที่อยู่ติดกันซึ่งมีค่าปกติต่างกัน วิธีนี้ช่วยให้สามารถสร้างมุมที่คมชัดจากข้อมูลปริมาณที่อัลกอริทึม Marching Cubes พื้นฐานจะปัดเศษพื้นผิวบ้าง ฉันไม่ค่อยเข้าใจว่า QEFs (ฟังก์ชั่นข้อผิดพลาดสมการกำลังสอง) เล่นในส่วนนี้ได้อย่างไรยกเว้นว่าพวกเขาทำให้การคำนวณจุดขยายภายในลูกบาศก์นั้นง่ายขึ้น Cubing Marching Cubes และ Dual Contouring ทั้งคู่ขยายเส้น / พื้นผิวออกไปจนกระทั่งมันตัดกับเส้น / พื้นผิวผ่านจุดบนขอบที่อยู่ติดกันซึ่งมีค่าปกติต่างกัน วิธีนี้ทำให้สามารถสร้างมุมที่คมชัดจากข้อมูลปริมาณที่อัลกอริทึม Marching Cubes พื้นฐานจะปัดเศษพื้นผิวบ้าง ฉันไม่ค่อยเข้าใจว่า QEFs (ฟังก์ชั่นข้อผิดพลาดสมการกำลังสอง) เล่นในส่วนนี้ได้อย่างไรยกเว้นว่าพวกเขาทำให้การคำนวณจุดขยายภายในลูกบาศก์นั้นง่ายขึ้น

โปรดทราบว่าฉันกำลังพูดถึงเส้นและขอบที่นี่ในความหมาย 2D ตามที่อธิบายโดยการเป็นตัวแทนใน OP .. ฉันจะต้องอ่านและคิดเพิ่มเติมเพื่อขยายสิ่งนี้เป็น 3D สำหรับการสร้างตาข่ายปริมาตร

เพื่อตอบคำถามครึ่งหลังของคุณเกี่ยวกับวิธีการสร้างบรรทัดฐานและการคิดจากมุมมองของขั้นตอนที่ใช้เสียงรบกวนดูเหมือนว่าคุณจะเติมข้อมูลของคุณด้วยข้อมูลเสียงแล้วมองหาขอบที่มีการเปลี่ยนแปลงเครื่องหมายจากนั้นตรวจสอบก้อน 4 ที่แบ่งปันขอบเพื่อหาว่าสามเหลี่ยมใดจะสร้างขึ้นและคำนวณจุดสุดยอดปกติเหมือนคุณสำหรับจุดตัดอื่น ๆ ของสามเหลี่ยมหลายรูปโดยใช้ค่าเฉลี่ยของ normals สำหรับสามเหลี่ยมแต่ละรูปที่แชร์จุดยอด นี่คือการเก็งกำไรมากในส่วนของฉันเป็นกระดาษที่เกี่ยวข้องกับการดำเนินงาน CSG และปริมาณที่สร้างจากตาข่ายแปลงสแกนซึ่งทั้งสองมีบรรทัดฐานที่กำหนดไว้อย่างดีบนพื้นผิว

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

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