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

4
T-junctions ในตาข่ายส่งผลให้เกิดรอยแตก?
ฉันได้ยินมาจากหลายแหล่งที่มีรอยต่อ T-in ใน 3D meshes เป็นความคิดที่ไม่ดีเพราะมันอาจส่งผลให้เกิดรอยแตกในระหว่างการเรนเดอร์ บางคนสามารถอธิบายได้ว่าทำไมมันถึงเกิดขึ้นและสิ่งหนึ่งที่สามารถทำได้เพื่อหลีกเลี่ยงพวกเขา?
19 mesh 

3
วิธีที่ง่ายที่สุดในการคำนวณความโค้งหลักสำหรับสามเหลี่ยมตาข่ายคืออะไร?
ฉันมีตาข่ายและในพื้นที่รอบ ๆ สามเหลี่ยมแต่ละรูปฉันต้องการคำนวณค่าประมาณของทิศทางความโค้งหลัก ฉันไม่เคยทำสิ่งนี้มาก่อนและWikipediaก็ไม่ได้ช่วยอะไรมากมาย คุณสามารถอธิบายหรือชี้ให้ฉันเป็นอัลกอริทึมแบบง่ายที่สามารถช่วยฉันคำนวณการประมาณนี้ได้หรือไม่? สมมติว่าฉันรู้ตำแหน่งและบรรทัดฐานของทุกจุด
19 mesh 

3
เหตุใดจึงนำไปใช้ในการสร้างภาพยนตร์และสามเหลี่ยมในการเล่นเกม
ในโรงเรียนภาพยนตร์ในชั้นเรียนของการสร้างแบบจำลอง 3 มิติฉันก็บอกว่าเมื่อเราทำอะไรบางอย่างสำหรับภาพยนตร์ที่เรารักษาโทโพโลยีของรูปหลายเหลี่ยม 4 ขอบ รูปหลายเหลี่ยมใด ๆ ที่มีมากกว่าหรือน้อยกว่า 4 ขอบ / จุดยอดถือว่าแย่และควรหลีกเลี่ยง ในขณะที่ถ้าใช้โมเดลเดียวกันในเกม แม้ว่าฉันจะไม่ได้เรียนวิชาเอกการสร้างแบบจำลอง 3 มิติ แต่คำถามก็ยังอยู่ในใจ เหตุใดรูปหลายเหลี่ยม 3 ขอบจึงถูกใช้ในการเล่นเกม มันแสดงผลเร็วขึ้นหรือไม่ ถ้าอย่างนั้นทำไมไม่ใช้ในการเรนเดอร์ฟิล์ม?
14 3d  mesh  triangulation 

2
วิธีการคำนวณพื้นผิวสำหรับเรขาคณิตที่สร้างขึ้น
ฉันมีคลาสที่สร้างรูปร่าง 3 มิติตามอินพุตจากรหัสการโทร อินพุตเป็นสิ่งต่าง ๆ เช่นความยาวความลึกส่วนโค้งและอื่น ๆ รหัสของฉันสร้างรูปทรงเรขาคณิตได้อย่างสมบูรณ์แบบ แต่ฉันพบปัญหาเมื่อคำนวณหาค่ามาตรฐานของพื้นผิว เมื่อส่องสว่างรูปร่างของฉันมีการระบายสี / พื้นผิวที่แปลกประหลาดมากจากบรรทัดฐานของพื้นผิวที่ไม่ถูกต้องที่คำนวณ จากการวิจัยทั้งหมดของฉันฉันเชื่อว่าคณิตศาสตร์ของฉันถูกต้องดูเหมือนว่ามีบางอย่างผิดปกติกับเทคนิคหรือวิธีการของฉัน ในระดับสูงเราจะคำนวณค่าปกติของพื้นผิวสำหรับรูปร่างที่สร้างขึ้นโดยทางโปรแกรมได้อย่างไร ฉันใช้ Swift / SceneKit บน iOS เป็นรหัสของฉัน แต่คำตอบทั่วไปนั้นใช้ได้ ฉันมีสองอาร์เรย์ที่แสดงถึงรูปร่างของฉัน หนึ่งคืออาร์เรย์ของจุด 3 มิติที่แสดงถึงจุดยอดที่ประกอบเป็นรูปร่าง อาเรย์อีกอันคือรายการดัชนีของอาเรย์แรกที่แมปจุดยอดเป็นรูปสามเหลี่ยม ฉันจำเป็นต้องใช้ข้อมูลนั้นและสร้างอาร์เรย์ลำดับที่ 3 ซึ่งเป็นชุดของบรรทัดฐานพื้นผิวที่ช่วยในการให้แสงสว่างของรูปร่าง (ดูSCNGeometrySourceSemanticNormalใน SceneKit` ) รายการของจุดยอดและดัชนีมักจะแตกต่างกันไปขึ้นอยู่กับอินพุตของคลาสดังนั้นฉันจึงไม่สามารถคำนวณล่วงหน้าหรือรหัสยาก ๆ เกี่ยวกับค่ามาตรฐานพื้นผิวได้

1
ทำไมตาข่ายแบบเรียบในสตูดิโอ 3D จึงมีจำนวนจุดยอด / สามเหลี่ยมเท่ากัน? จากนั้นจะสามารถทำให้เรียบด้วยเรขาคณิตเดียวกันได้อย่างไร
ฉันพยายามที่จะเข้าใจว่าทำไมตาข่ายที่เรียบในสตูดิโอ 3 มิติ (Modifiers / Smoother) นั้นมีจุดยอด / ใบหน้าจำนวนเท่ากันก่อนหรือหลังกระบวนการนั้นรวมถึงรูปทรงเรขาคณิตที่เหมือนกัน ในตัวอย่างต่อไปนี้ตาข่ายทั้งสองมี 32 จุดยอดและใบหน้า 60 หน้า แม้ว่าฉันจะมีประสบการณ์การทำงานกับการเขียนโปรแกรม (c ++ และ c #) แต่ฉันเป็นมือใหม่สำหรับคอมพิวเตอร์กราฟิก ดังนั้นความคาดหวังของฉันก็คือรูปลักษณ์ที่เรียบของตาข่ายแบบเรียบนั้นจะต้องมีจุดยอดเพิ่มเติมเช่นการแบ่งของรูปสามเหลี่ยมเพื่อที่จะมีตาข่ายสุดท้ายที่มีรายละเอียดมากขึ้น อย่างไรก็ตามดูเหมือนว่าจะไม่เป็นเช่นนั้น ดังนั้นฉันถาม: 1) การปรับให้เรียบเป็นไปได้อย่างไรโดยไม่เพิ่มรายละเอียดของเรขาคณิตตาข่าย? 2) การปรับให้เรียบอย่างน้อยเพิ่มหน่วยความจำที่จัดสรร / ใช้สำหรับการจัดเก็บตาข่ายใหม่โดยเปรียบเทียบกับต้นฉบับหรือไม่? คำอธิบายยินดีอย่างยิ่ง แต่การอ้างอิง (ด้านวิชาการหรือไม่) ก็ชื่นชมเช่นกัน
11 3d  geometry  mesh  memory  model 

1
การสร้างบรรทัดฐานของจุดสุดยอดทางโปรแกรม
ฉันกำลังทำงานร่วมกับ Kinect face api มันมีอาร์เรย์ของจุดยอดและดัชนีสำหรับรูปสามเหลี่ยมซึ่งจะแสดงผลเพื่อสร้างภาพใบหน้า จำนวนจุดยอดและคำสั่งของพวกเขาในอาร์เรย์รวมถึงดัชนีที่ได้รับจาก kinect นั้นไม่เปลี่ยนแปลงตลอดเวลา อย่างไรก็ตาม api ไม่ได้ให้ข้อมูลเกี่ยวกับข้อมูล UV และบรรทัดฐานจุดสุดยอด แอปพลิเคชันต้องการให้ฉันรักษาจุดสุดยอดตามที่ไคเนกต์กำหนดให้เป็นตำแหน่งของพวกเขาในการเปลี่ยนแปลงพื้นที่ 3 มิติตามการเคลื่อนไหวของใบหน้าดังนั้นการสร้างยูวีและบรรทัดฐานในซอฟต์แวร์แก้ไขแบบสามมิตินั้นเป็นปัญหา ฉันสามารถสร้างรังสี UV โดยฉายตำแหน่งจุดยอดลงบนระนาบ 2D เนื่องจากมีจุดยอดน้อยมากบนระนาบเดียวกัน อย่างไรก็ตามฉันไม่ทราบวิธีสร้างบรรทัดฐานจุดสุดยอดสำหรับตาข่ายโดยไม่มีจุดสุดยอดปกติตาข่ายใบหน้าดึงโดยไม่มีความลึกของคุณสมบัติจากก่อนหน้าแม้ว่าเงาจะมองเห็นได้เนื่องจากตำแหน่งจุดยอดถูกต้อง ฉันเข้าใจว่าเนื่องจากไม่มีบรรทัดฐานของจุดสุดยอดแสงจะไม่ทำงานอย่างถูกต้องกับมันและด้วยเหตุนี้ตาข่ายที่ไม่มีสีซีดจึงดูเหมือนตอนนี้ ดังนั้นฉันจะสร้างบรรทัดฐานจุดสุดยอดได้อย่างไรเมื่อทั้งหมดที่ฉันมีเพียงแค่ตำแหน่งจุดสุดยอดและดัชนีของจุดยอดเพื่อสร้างรูปสามเหลี่ยมออกมาจากมัน?

3
ฉันจะทดสอบสามเหลี่ยมภายในการทดสอบในตาข่ายรูปหลายเหลี่ยมได้อย่างไร
ฉันมี 3 จุดยอด(V1, V2, V3)สุ่มเลือกบนตาข่ายสามเหลี่ยมปกติ สำหรับจุดยอดทั้งสามนี้ฉันได้คำนวณระยะทางทางมาตรวิทยาและเส้นทาง (โดยใช้ Dijkstra) ในหมู่พวกเขาและสร้างพื้นผิวที่มีลักษณะคล้ายรูปสามเหลี่ยมดังแสดงในรูปด้านบน ตอนนี้ฉันมีจุดยอดที่อยู่ในแต่ละเส้นทางและสามารถคำนวณระยะทางธรณีวิทยาจากจุดยอดที่กำหนด สิ่งที่ฉันอยากทำคือการหาจุดยอดหรือสามเหลี่ยมที่อยู่ในพื้นที่สามเหลี่ยม ฉันจะทำสิ่งนี้ได้อย่างไร

1
ไปป์ไลน์เพื่อสร้าง Voronoi Meshes
ฉันต้องการนำปลั๊กอินมายา (คำถามนี้ไม่ขึ้นอยู่กับมายา) เพื่อสร้างรูปแบบ 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]] …
10 3d  geometry  mesh  polygon 

1
การสร้างบรรทัดฐานยอดที่ใช้ร่วมกันบน GPU
ฉันส่วนใหญ่ประสบความสำเร็จในการย้ายการดำเนินการของ Marching Cubes จากซีพียูไปสู่การคำนวณด้วย OpenGL แต่ฉันยังไม่ได้แก้ไขกฎเกณฑ์บรรทัดฐานและสงสัยว่าวิธีที่ดีที่สุดจะไปเกี่ยวกับเรื่องนี้ ข้อตกลงการใช้งานของฉันเป็นการเฉพาะกับเขตข้อมูลมูลค่าไบนารี (ฉันกำลังพยายามจำลองฟังก์ชันเศษส่วน 3 มิติที่ยังไม่มีเครื่องมือประมาณระยะทาง) ดังนั้นวิธีการไล่ระดับสีและการส่งต่อความแตกต่างจะไม่ทำงาน ฉันใช้จุดสูงสุดร่วมกันและการใช้งาน CPU ของฉันใช้วิธีของ Quilez ตามที่อธิบายไว้ที่นี่เพื่อรวบรวมหน้าตามาตรฐานลงบนจุดสุดยอดแต่ละแห่ง ฉันสามารถนำการติดตั้งนี้ไปใช้กับ shader อื่นได้ แต่ปัญหาที่ฉันเห็นด้วยนี่คืออะตอมมิกจำนวนมากที่ต้องการ เนื่องจากเราสามารถใช้ atomics กับชนิดจำนวนเต็มสเกลาร์เท่านั้นและฉันไม่สามารถคิดวิธีที่จะแพ็ค 3 ลงนาม ints เป็น 1 ในทางที่สรุปได้ซึ่งหมายความว่า 3 แกน * 3 จุดยอด = 9 อะตอมเพิ่มการเรียกต่อ shader แน่นอนว่ามันจะกระจายไปทั่วหน่วยความจำดังนั้นจึงไม่เหมือนกับการกดอะตอมมิกเคาน์เตอร์เดียว 9 ครั้ง แต่มันก็ดูเหมือนว่าจะเป็นนรกมาก อีกทางเลือกหนึ่งคือการเรียกใช้ shader ต่อรูปหลายเหลี่ยมและสร้างรายการปกติของใบหน้า (ฉันอาจแพ็ค x10y10z10 ด้วยวิธีนี้) จากนั้น shader …

3
การสั่งซื้อชุดของจุดที่ไม่มีการรวบรวมกันตามแนวโค้ง
ฉันมีชุดของคะแนน 3 มิติ (ซึ่งฉันกู้คืนจากห้องสมุดที่ดำเนินการ tessellation ของร่างกายที่เป็นของแข็ง) ที่เป็นของเส้นโค้ง (เช่นขอบของของแข็ง) นั่นหมายความว่าเส้นโค้งผ่านแต่ละจุดเหล่านี้อย่างแน่นอน อย่างไรก็ตามชุดจุดไม่ได้เรียงลำดับดังนั้นฉันจำเป็นต้องเรียงลำดับเพื่อให้สามารถวาดเส้นโค้งนี้ได้อย่างถูกต้อง มีวิธีใดที่ทราบสำหรับปัญหาประเภทนี้หรือไม่ ข้อมูลเพิ่มเติมบางส่วน: เส้นโค้งเป็นพารามิเตอร์ทั่วไป (เส้นโค้ง / bezier ชิ้นวงกลม .. ) คะแนนจะได้รับเป็นพิกัดจุดลอย คะแนนอัดแน่นมาก (แต่พวกมันอาจหนาแน่นได้ตามที่ฉันต้องการ) เพื่อให้ความคิดแก่คุณสำหรับเส้นโค้งที่มี 19 หน่วยใน x, 10 หน่วยใน x และ 5 หน่วยใน z ผมพูดลำดับของจุดในส่วนของเส้นโค้ง: (20.7622, ​​25.8676, 0) (20.6573, 25.856, 0) (20.5529, 25.8444, 0) (20.4489, 25.8329, 0) (20.3454, 25.8213, 0)
9 geometry  mesh  curve 

1
การเข้าถึงหน่วยความจำที่เหมาะสมที่สุดเมื่อใช้ตารางการค้นหาบน GPU?
ฉันกำลังสำรวจอัลกอริทึม isosurface บน GPU สำหรับโครงการปริญญาตรี ดังนั้นฉันจึงมีการใช้ซีพียูของ marching cubes ที่ดีและทำงานใน OpenFrameworks และตอนนี้อยู่ในขั้นตอนของการพยายามพอร์ตเข้ากับ GLSL compute shaders และพิจารณาข้อผิดพลาดก่อนที่ฉันจะดำดิ่งฉันเขียน Vert และ frag shaders ก่อนหน้านี้มันเป็นเรื่องใหม่สำหรับฉัน ปัญหาแรกของฉันคือวิธีใช้ตารางการค้นหาอย่างมีประสิทธิภาพในหลายสิบหรือหลายร้อยกระทู้ในเวิร์กกรุ๊ป ฉันเข้าใจว่า GPU มีหน่วยความจำประเภทต่าง ๆ สำหรับงานที่แตกต่างกัน แต่ไม่แน่ใจในการทำงานของแต่ละประเภทหรือชนิดที่จะใช้ ตาราง copypasta คลาสสิกของ Paul Bourke เป็นอาร์เรย์ 256 * 16 ดังนั้นหากใช้ชนิดไบต์สเกลาร์สิ่งนี้น่าจะถูกบรรจุลงในพื้นผิว 4kb หรือ SSBO คำถามคือจะหยุดกระทู้ที่แตกต่างกันไม่ให้สะดุดกันได้อย่างไร คิวบ์จำนวนมากในแต่ละกลุ่มงานอาจมีการกำหนดค่าเดียวกันดังนั้นจึงพยายามเข้าถึงตำแหน่งเดียวกันในบัฟเฟอร์ในเวลาเดียวกัน มีวิธีแก้ปัญหาหรือการเพิ่มประสิทธิภาพเพื่อจัดการกับสิ่งนี้หรือไม่?
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.