無論是VFX藝術家,研究人員還是圖形業餘愛好者, Blendernerf都是在Blender中創建合成的Nerf和Gaussian剝離數據集的最簡單,最快的方法。在對3D場景和相機的完整用戶控制時,請單擊一次單擊渲染和相機參數!
您準備好呆了嗎?通過單擊Blender的單擊,通過查看本教程!
神經輻射場(NERF)旨在將3D場景作為視圖依賴性體積對象,僅來自2D圖像,以及它們各自的相機信息。 3D場景是在簡單的神經網絡的幫助下從訓練圖像進行反向設計的。
高斯脫落是一種以基於點的方式渲染輻射場字段的後續方法。該表示形式高度優化,用於GPU渲染,並利用更傳統的圖形技術來達到高幀速率。
我建議您觀看Corridor Crew的YouTube視頻,以對一些用例和NERF的未來潛在應用進行激動人心的調查。
渲染是一個昂貴的計算。逼真的場景可能需要秒到幾個小時才能渲染,具體取決於場景的複雜性,硬件和可用的軟件資源。
NERFS和Gaussian的夾層可以加快此過程,但是通常需要通過繁瑣的代碼提取相機信息。該插件使任何人都可以單擊攪拌機中獲得渲染和相機。
儘管可以下載Blendernerf的發布版本,但它們主要用於跟踪主要代碼更改和引用目的。我建議直接下載當前的存儲庫,因為可能不會立即將其包含在版本中。
Blendernerf包括以下小節中討論的3種方法。每種方法都能以訓練圖像的形式創建培訓數據和測試NERF的數據,並分別使用相應的攝像頭信息transforms_train.json transforms_test.json文件。數據存檔到包含培訓和測試文件夾的單個郵政編碼中。然後,NERF模型可以使用培訓數據來學習3D場景表示。經過培訓後,可以在測試數據(僅相機信息)上評估(或測試)模型以獲得新穎的渲染。
框架(SOF)的子集從相機動畫中呈現每個N幀,並將框架的渲染子集作為NERF訓練數據。註冊的測試數據跨越了同一相機動畫的所有幀,包括訓練幀。經過培訓後,NERF模型可以渲染完整的相機動畫,因此非常適合插值或渲染大型靜態場景動畫。
訓練和測試攝像機(TTC)註冊來自兩個獨立用戶定義的攝像機的培訓和測試數據。然後,可以將NERF模型與從訓練相機中提取的數據擬合,並在測試數據上進行評估。
在球體上(COS)上的攝像機通過從用戶控制的球體上指向中心的隨機攝像機視圖來渲染訓練框架。測試數據是從選定的相機中提取的。
附加屬性面板可在3D View > N panel > BlenderNeRF下使用(按下N時,在3D視口下可訪問N面板)。所有3種方法( SOF , TTC和COS )與以下可控屬性共享一個稱為BlenderNeRF shared UI常見選項卡。
Train (默認激活):是否註冊培訓數據(渲染 +相機信息)Test (默認激活):是否註冊測試數據(僅相機信息)AABB (默認設置為4 ):Instant NGP中所述的AABB刻度參數(下面的更多詳細信息)Render Frames (默認激活):是否渲染框架Save Log File (默認情況下停用):是否保存包含可重複性信息的日誌文件File Format (默認情況下為NGP ):是在即時NGP中導出相機文件還是Defaut Nerf文件格式慣例points3d.ply file for Gaussian Points splattingGaussian Test Camera Poses (默認情況下是虛擬):是導出虛擬測試攝像頭文件還是完整的測試攝像頭姿勢(僅使用Gaussian Points )Save Path (默認為空):將創建數據集的輸出目錄的路徑如果Gaussian Points屬性處於活動狀態,則Blendernerf將從所有可見網格(在渲染時間)中創建一個額外的points3d.ply文件,其中每個頂點將用作初始化點。如果有的話,將存儲頂點顏色,否則將其設置為黑色。
高斯脫落存儲庫本身支持NERF數據集,但需要培訓和測試數據。 Gaussian Test Camera Poses的Dummy選項屬性會創建一個空的測試攝像頭姿勢文件,如果不需要測試圖像。 Full選項導出了默認測試攝像頭提出,但需要單獨渲染包含所有測試渲染器的test文件夾。
AABB被限制為2的整數功率,它定義了邊界框的側面長度,其中NERF將追踪射線。該屬性是使用NVIDIA的即時NGP版本的NERF引入的。
File Format屬性可以是NGP或NERF 。 NGP文件格式約定與Nerf One相同,其中有一些其他參數可以通過即時NGP訪問。
請注意,每個方法都具有與數據集名稱相對應的獨特Name屬性(默認設置為dataset ),並為相應方法創建了zip文件名。請注意,不支持的字符(例如#或/ )將自動被下劃線取代。
以下描述了每種方法特定的屬性(遺漏了Name屬性,因為上面已經討論過)。
Frame Step (默認設置為3 ): n (設置部分中定義)=註冊訓練幀的頻率Camera (始終設置為活動相機):用於註冊訓練和測試數據的相機PLAY SOF :播放幀方法運算符的子集以導出NERF數據Frames (默認設置為100 ):訓練相機使用的訓練幀數量Train Cam (默認為空):用於註冊訓練數據的相機Test Cam (默認為空):用於註冊測試數據的相機PLAY TTC :播放火車和測試攝像機方法操作員導出NERF數據從場景開始框架開始,將使用Train Cam對象捕獲訓練框架的Frames量。
Camera (始終設置為活動相機):用於註冊測試數據的相機Location (默認設置為0 m向量):訓練球的中心位置,從中取樣相機視圖Rotation (默認設置為0°矢量):採樣相機視圖的訓練球的旋轉Scale (默認設置為1個向量):XYZ軸中訓練球的比例向量Radius (默認設置為4 m ):訓練球的半徑標量Lens (默認設置為50毫米):訓練相機的焦距Seed (默認設置為0 ):種子以初始化隨機相機視圖採樣過程Frames (默認設置為100 ):從訓練領域採樣並渲染的訓練幀數量Sphere (默認情況下停用):是否顯示訓練領域,將對隨機視圖進行採樣Camera (默認停用):是否顯示用於註冊訓練數據的相機Upper Views (默認情況下停用):是否僅從上部訓練半球樣本視圖(旋轉變體)Outwards (默認停用):是否將攝像機向外指向訓練領域PLAY COS :在球體方法上播放相機以導出NERF數據請注意,激活Sphere和Camera屬性會分別創建BlenderNeRF Sphere空對象和BlenderNeRF Camera頭對象。請不要手動創建使用這些名稱的任何對象,因為這可能會破壞附加功能。
從場景開始幀開始,將使用BlenderNeRF Camera對象捕獲Frames量的訓練幀。最後,請記住,訓練相機已鎖定在適當的位置,無法手動移動。
NVIDIA提供了一些有關如何使用即時NGP訓練NERF模型的有用提示。隨時訪問其存儲庫以尋求進一步的幫助。以下是一些從個人經驗中獲得的最佳秘訣的快速提示。
AABB盡可能緊密,對場景規模,更高的值將減慢訓練的速度AABB ,同時保持2Vertical攝像機傳感器擬合有時會導致NERF量變形,請在可能的情況下避免如果您可以訪問NVIDIA GPU,則可能需要在自己的設備上安裝即時NGP,以獲得最佳的用戶體驗,並遵循其存儲庫中提供的說明。否則,您可以通過Google帳戶免費在Google GPU上的COLAB筆記本中運行NERF。
打開此COLAB筆記本電腦(也可以在此處下載),然後按照說明進行操作。
在多個月的過程中,該附加組件正在作為一個有趣的方面項目開發,主要是Macos。如果您遇到了插件功能的任何問題,請隨意開開一個github問題,並清楚地描述該問題,這些問題已遇到了問題,如果有相關性,則有任何進一步的信息。
雖然此擴展名用於創建合成數據集,但現有的用於從現實世界攝像機中導入運動數據的工具。一個這樣的示例是由Shopify ,開源iOS應用程序和相鄰的攪拌機插件錄製運動跟踪iPhone上ARKIT會話的數據的Tracky 。但是請記住,跟踪數據可能會受到漂移和錯誤的影響,這可能會影響由此產生的NERF重建質量。
如果您發現此存儲庫在您的研究中有用,請考慮使用上面的專用GitHub按鈕引用Blendernerf 。如果您為自己的藝術項目使用此擴展名,請隨時使用社交媒體上的#blendernerf主題標籤分享一些工作! :)