ไปป์ไลน์เพื่อสร้าง Voronoi Meshes


10

ฉันต้องการนำปลั๊กอินมายา (คำถามนี้ไม่ขึ้นอยู่กับมายา) เพื่อสร้างรูปแบบ 3D Voronoi อย่างที่ต้องการ

ป้อนคำอธิบายรูปภาพที่นี่

ฉันเพิ่งรู้ว่าฉันต้องเริ่มจากการสุ่มตัวอย่างแบบจุด (ฉันใช้อัลกอริทึมการสุ่มตัวอย่างแบบปัวซองแบบปรับตัวที่อธิบายไว้ในบทความนี้ )

ฉันคิดว่าจากจุดเหล่านั้นฉันควรสร้างลวดสามมิติของตาข่ายโดยใช้ Voronoi (ฉันพยายามใช้ (Python) scipy.spatial.Voronoi แต่ผลลัพธ์นั้นแตกต่างจากที่ฉันคาดไว้)

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

[แก้ไข] ต่อไปนี้เป็นตัวอย่างของสิ่งที่ฉันจัดการผลลัพธ์ที่ได้จาก scipy.spatial.Voronoi เช่นนี้ (ตามที่แนะนำไว้ที่นี่ ):

vor = Voronoi(points)
for vpair in vor.ridge_vertices:
    for i in range(len(vpair) - 1):
        if all(x >= 0 for x in vpair):
            v0 = vor.vertices[vpair[i]]
            v1 = vor.vertices[vpair[i+1]]
            create_line(v0.tolist(), v1.tolist())

จุดยอดสีเทาคือจุดตัวอย่าง (รูปร่างดั้งเดิมเป็นทรงกลมแบบง่าย): ป้อนคำอธิบายรูปภาพที่นี่

นี่คือรูปร่างที่ซับซ้อนมากขึ้น (แขน) ป้อนคำอธิบายรูปภาพที่นี่


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

เพิ่มตัวอย่างตามที่แนะนำ!
Jiloc

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

ภาพที่คุณแสดงได้ทำ voronoi ในฟังก์ชั่น 2d แล้ว
joojaa

@joojaa จากภาพตัวอย่างฉันคาดหวังว่าขอบเซลล์ Voronoi บนพื้นผิว 2D นั้นเป็นสิ่งที่จำเป็น (เพื่อรวบรวมคอลเซกชั่นจุดเชื่อมต่อจุดบนพื้นผิวทรงกลมแทนที่จะรวบรวมส่วนของระนาบที่จะให้ในแบบ 3 มิติ) . อย่างไรก็ตามscipy.spatial.Voronoiดูเหมือนว่าจะถูกออกแบบมาสำหรับช่องว่างมิติ N มากกว่าพื้นผิวที่ฝังอยู่ในพวกเขา ฉันไม่สามารถเห็นได้ทันทีว่าจะใช้กับจุด 3D ที่ จำกัด กับพื้นผิว 2D ได้อย่างไร
trichoplax

คำตอบ:


1

http://www.cs.sandia.gov/~samitch/papers/vor_final.pdfไม่มีอัลกอริทึมคอมพิวเตอร์ในการเขียนโปรแกรมภาษาใด ๆ แต่คุณควรจะสามารถทำซ้ำได้อย่างง่ายดายด้วย Plane Reflections และอัลกอริทึมจาก ลิงก์ด้านบน


ยินดีต้อนรับสู่ ComputerGraphics.SE! โดยปกติแล้วเป็นความคิดที่ดีที่จะหาคำตอบในสแต็ก Exchange ที่มีอยู่ (เช่นในกรณีที่ลิงก์ตกและโดยทั่วไปเพื่อให้ผู้คนไม่ต้องติดตามลิงก์เพื่อให้สามารถบอกได้ว่าคำตอบมีประโยชน์สำหรับพวกเขาหรือไม่) คุณอาจต้องการปรับปรุงคำตอบของคุณโดยการรวมข้อมูลสรุปสั้น ๆ ของเนื้อหาของกระดาษ
Martin Ender
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.