170 likes | 290 Views
Example-Based Skeleton Extraction. Scott Schaefer Can Yuksel Texas A&M University SGP 2007 מצגת: שי שלום. מבוא. Deformation בעזרת שלד מהו שלד? היררכיה של טרנספורמציות שמייצגות עצמות Rigid Transformation מיקומי מפרקים קישור למשטח ( Skinning ) הגדרת הבעיה:
E N D
Example-Based Skeleton Extraction Scott Schaefer Can Yuksel Texas A&M University SGP 2007 מצגת: שי שלום
מבוא • Deformation בעזרת שלד • מהו שלד? • היררכיה של טרנספורמציות שמייצגות עצמות • Rigid Transformation • מיקומי מפרקים • קישור למשטח (Skinning) הגדרת הבעיה: • בהנתן מודל בתנוחות שונות - ליצור שלד לאובייקט. • תנוחות שונות - אבל אותו Mesh connectivity. • מאפשר ליצור תנוחות חדשות
Overview • Rigid Error Function + Rigid Transformation • של כל משולש ב Mesh • Clustering של משולשים ל"חלקים שזזים אותו דבר" • הכללה של עצמות • Skinning - חלוקת השפעת העצמות על ה Mesh • כל Vertex מקבל משקל לכל עצם • יצירת השלד: • Connectivity- שימוש ב Rigid Error Function • מיקום מפרקים
Related Work • חילוץ שלד בעזרת segmentation • [Katz, Tal 2003] • [de Aguilar et al. 2004] • [Theobalt et al. 2004] • [Katz et al. 2005] • [Lien et al. 2006] מודל בתנוחה יחידה, לא עוסקים ב skinning • אין מידע על איך המודל זז (חדק של פיל) • Skinning מבוסס דוגמאות • [Wang et al. 2002] • [Mohr, Gleicher 2003]
Related Work • כיווץ אנימציה [James, Twigg 2005] • לא יוצר שלד, לא מיועד ליצירת תנוחות חדשות • חילוץ שלד ממקורות מידע אלטרנטיביים • [Kurihara, Miyata 2004] CT Scan • [Kirk et al. 2005] Motion Capture • [Anguelov et al. 2004] Model Scans
Rigid Error Function • משולש pi בתנוחת הבסיס – מתאים ל k משולשים qik בתנוחות הדוגמא • פונקציית השגיאה מוגדרת עבור טרנספורמציה ריג'דית - R,T תנוחת הדוגמא תנוחת הבסיס
Rigid Error Function המטרה: • עבור כל משולש pi למצוא את הטרנספורמציה הריג'דית (Ri,Ti) האופטימאלית מתנוחת הבסיס לתנוחת הדוגמא. • למצוא את השגיאה. חישוב וקטורים עצמיים של מטריצה 4x4
Clustering • כדי למצוא עצמות מאחדים אזורים על ה Mesh שיש להם טרנספורמציה ריג'ידית דומה. • אלגוריתם Edge Collapse • מתחילים משולש אקראי, מחשבים R.E.F • מתחזקים תור שכנים שמסודר על פי סכום השגיאה לכל הדוגמאות • בכל איטרציה מוסיפים משולש שכן (edge collapse) • ממשיכים עד שסכום השגיאה מגיעה לסף כלשהו. כל Cluster הוא עצם!
Skinning • הטרנספורמציה של כל Vertex היא קומבינציה לינארית של הטרנספורמציות של העצמות הקרובות אליה המטרה: ידועים Rj,Tj של כל עצם, מצא את j האופטימאלי כך שהVertexים יזוזו למיקומים שלהם בדוגמאות. פתרון Least Squaresאיטרטיבי Example Based Skinning 4 עצמות לvertex
Skinning • תוצאת המינימיזציה: • לכלVertex - קבוצה {j} משקולות השפעת עצמות. • הבעיה: העדר מקומיות השפעה • אזורים שבמקרה זזים אותו דבר • הפתרון: • Flood מהVertex הכי מושפע על ידי העצם • פתרון מחדש של המינימיזציה
יצירת שלד - חיבוריות • כדי לאפשר דפורמציות חדשות על המודל, צריך שלד מפורש • חיבוריות עצמות (גרף) • מיקומי מפרקים • מסתמכים על המשקולות שחושבו - {j} לכל Vertex. • התחלה:גרף G מלא עם בין כל העצמות עם משקולות = 0 • לכל Vertex • max העצם הכי משמעותית • לכל עצם עצםj שונה מ max: • הוסף את j לקשת j-max)) • מצאMin Span Tree ממרכז כובד 0.05+0.45 0.95 0.05 0.55 0.45
יצירת שלד - מיקום מפרקים • מפרק הוא הנקודה שזזה הכי פחות בתזוזה בין 2 עצמות. • חישבנו לכל עצם את Rj,Tj עבור k דוגמאות • מחפשים את הנקודה x שממזערת את: המרחק בין x אחרי R1,T1 ולבין x אחרי R2,T2 סכום על כל הדוגמאות. • בעיה: מפרק צירי מגדיר אינסוף נקודות. • שימוש במשקולות העצמות
תוצאות 29 עצמות 19 עצמות 9 עצמות