SAM 3D ComfyUI 物件與身體運動控制
此工作流程通過使用 Segment Anything 為基礎的遮罩和深度推理,從單一圖像提供 3D 感知、結構引導的生成。它包括兩種即用模式:物件模式,用於提取和重建任何遮罩的主體作為有紋理的 3D 網格或 3D Gaussian,和身體模式,用於構建身體部位感知的人類網格。SAM 3D ComfyUI 設計強調空間一致性,非常適合物件運動控制、身體運動指導,以及為下游影片或 3D 流程創建可控資產。
基於開源的 SAM3D 項目構建,此 SAM 3D ComfyUI 工作流程將簡單的圖像加上遮罩轉換為可導出的 GLB、STL 和 PLY 資產,具有姿勢對齊和紋理烘焙。非常適合希望快速獲得可控結果的創作者,無需進行微調。
注意:
建議在 中型、大型 或 超大型 機器上運行此 3D "物件" 工作流程。較大的機器類型可能會導致運行時錯誤或不穩定的結果。 "身體" 工作流程適用於所有機器類型。
由於 3D 重建和優化的複雜性,"3D 物件" 工作流程可能需要 ~40 分鐘或更長時間 才能完成。
Comfyui SAM 3D ComfyUI 工作流程中的關鍵模型
- Segment Anything Model (SAM)。用於高品質的、可提示的分割,錨定空間約束。詳情請參閱原始論文:Segment Anything。
- SAM3D Objects 預訓練組件。提供深度、稀疏結構、SLAT 生成、網格和 Gaussian 解碼器,以及物件重建的紋理嵌入器。來源:PozzettiAndrea/ComfyUI-SAM3DObjects。
- SAM3D Body 預訓練組件。提供身體部位感知處理,以生成人類網格和調試視圖。來源:PozzettiAndrea/ComfyUI-SAM3DBody。
- SAM3D 資源庫中捆綁的單目深度估計器。提供相機內部參數、一個點地圖和一個深度知情的遮罩,提高重建和姿勢對齊。參見上述兩個 SAM3D 資源庫。
- 3D Gaussian Splatting 公式。支持快速、逼真的基於點的場景表示,對於快速預覽和某些渲染器非常有用:3D Gaussian Splatting for Real-Time Rendering。
如何使用 Comfyui SAM 3D ComfyUI 工作流程
在高層次上,您加載單一圖像及其遮罩,然後選擇物件組或身體組。物件模式重建一個有紋理的網格和一個 3D Gaussian 表示,並可選擇進行姿勢精細化。身體模式構建一個身體部位感知的網格,並將其導出以供快速檢查或下游使用。
SAM3DObjects 組
此組將您的遮罩主體轉換為 3D 資產。提供一個帶遮罩的圖像以隔離您想要控制的物件;工作流程自動處理反轉以將主體視為前景。深度和相機內部參數被估算以生成一個點地圖,然後創建一個稀疏結構和初始姿勢。從那裡生成一個 SLAT 表示並解碼為網格和 3D Gaussian;紋理烘焙將外觀從源圖像轉移到網格。最後,姿勢優化精細化對齊,然後您可以預覽並導出;參見 SAM3D_DepthEstimate (#59)、SAM3DSparseGen (#52)、SAM3DSLATGen (#35)、SAM3DMeshDecode (#45)、SAM3DGaussianDecode (#37)、SAM3DTextureBake (#47) 和 SAM3D_PoseOptimization (#57)。
SAM3DBody 組
此組專注於人類主體。提供一個圖像和一個覆蓋人物的遮罩。身體處理器生成一個身體部位感知的網格和一個調試圖像,以便您可以驗證分割質量。您可以將結果導出為網格以供檢查或裝配,然後以互動方式預覽。關鍵步驟包括 LoadSAM3DBodyModel (#62)、SAM3DBodyProcess (#61)、SAM3DBodyExportMesh (#64) 和 Preview3D (#65)。
Comfyui SAM 3D ComfyUI 工作流程中的關鍵節點
LoadSAM3DModel (#44) 在一個地方加載所有物件模式權重,包括深度、稀疏結構生成器、SLAT 生成器和解碼器,以及紋理嵌入器。如果權重託管在 Hugging Face 上,請輸入您的令牌並相應地設置提供者。除非您有理由強制使用特定的 dtype,否則使用自動精度。加載後,相同的處理器將整個物件管道供應。
SAM3D_DepthEstimate (#59) 從您的輸入圖像估算單目深度、相機內部參數、一個點地圖和一個深度知情的遮罩。良好的構圖很重要:保持主體合理居中,避免極端裁剪以獲得更穩定的內部參數。使用內置的點雲預覽檢查幾何體在提交長時間烘焙之前的合理性。此處生成的內部參數和點地圖將在稍後用於姿勢優化。
SAM3DSparseGen (#52) 通過結合圖像、前景遮罩和深度輸出來構建稀疏結構和初始姿勢。如果您的遮罩過於鬆散,請預期會有浮動物和較弱的結構;收緊邊緣以獲得更清晰的結果。該節點還會發出一個姿勢物件,您可以預覽以確保方向正確。此稀疏結構直接調節 SLAT 生成器。
SAM3DSLATGen (#35) 將稀疏結構轉換為緊湊但具有幾何體感知的 SLAT 表示。通常,精確的遮罩和良好的深度會產生更乾淨的 SLAT。如果您計劃依賴網格輸出而非 Gaussian,則偏好保留細節而非極端稀疏的設置。發出的 SLAT 路徑同時供應兩個解碼器。
SAM3DMeshDecode (#45) 將 SLAT 解碼為適合紋理化和導出的密封 3D 網格。當您需要適合 DCC 工具和遊戲引擎的拓撲時,選擇網格。如果您看到過度平滑或孔洞,請回溯遮罩和上游稀疏結構密度。此路徑生成一個 GLB,稍後將進行烘焙並可選擇進行姿勢對齊。
SAM3DGaussianDecode (#37) 從相同的 SLAT 生成 3D Gaussian 表示,用於快速預覽和某些渲染器。當您想快速驗證幾何體和視點覆蓋範圍時,它非常有用。如果您的 Gaussian 看起來噪聲過多,請改進遮罩或提高結構質量,而不是過度調整此節點。生成的 PLY 還有助於紋理烘焙。
SAM3DTextureBake (#47) 將外觀從源圖像投影到解碼的網格上。當您需要特寫時使用更高的紋理解析度,快速迭代時使用快速預設。渲染器選擇會影響清晰度和速度;預覽時選擇較快的選項,最終選擇更高質量的選項。此節點輸出已紋理化的 GLB,用於預覽和姿勢精細化。
SAM3D_PoseOptimization (#57) 使用相機內部參數、點地圖、原始遮罩和初始姿勢精細化 GLB 的對齊。如果您觀察到在細長結構(如四肢或手柄)周圍的錯位,請增加優化預算。保持前景遮罩乾淨,以防止優化器漂向背景幾何體。經過優化的 GLB 然後準備在 3D 預覽中檢查。
SAM3DBodyProcess (#61) 執行身體部位感知處理以生成人類網格和調試疊加。選擇適合您的使用情況的模式,例如全身或特定區域,以指導網格覆蓋範圍。如果手或頭髮出現剪切,請在這些區域附近細化遮罩以提高保真度。導出為 STL 以進行快速檢查或稍後根據需要進行轉換。
可選附加功能
- 使用乾淨、高對比度的遮罩。僅稍微羽化;在 SAM 3D ComfyUI 物件模式中,硬邊緣通常重建得更好。
- 對於快速迭代,首先依賴 Gaussian 路徑,然後切換到網格解碼和更高解析度的紋理烘焙。
- 如果權重需要身份驗證,請在排隊圖形之前將有效的 Hugging Face 令牌粘貼到加載節點中。
- 在長時間烘焙之前檢查點雲和姿勢預覽,以早期捕捉構圖或遮罩問題。
- 導出格式:GLB 非常適合 DCC 和引擎,PLY Gaussians 適用於兼容的渲染器,STL 從身體模式快速進行打印比例檢查。
- 如果您計劃使用 SAM 3D ComfyUI 輸出來驅動下游運動或多視圖序列,請保持主體比例在拍攝中一致。
致謝
此工作流程實現並建立在以下作品和資源之上。我們衷心感謝 PozzettiAndrea 對 SAM 3D Objects 和 SAM 3D Body 的貢獻和維護。欲了解權威詳情,請參閱下方鏈接的原始文檔和資源庫。
資源
- PozzettiAndrea/SAM 3D Objects
- GitHub: PozzettiAndrea/ComfyUI-SAM3DObjects
- PozzettiAndrea/SAM 3D Body
- GitHub: PozzettiAndrea/ComfyUI-SAM3DBody
注意:使用所引用的模型、數據集和代碼需遵循其作者和維護者提供的相應許可和條款。
