去年,Genesis是一種令人興奮的新工具,用於創建現實的物理模擬,Interactive 4D Worlds等。我渴望嘗試,但是讓它上班並不容易。我必須承認,在設置過程中,我面臨很多挑戰。
>在本教程中,我將簡要分享我遇到的問題,並展示我最終如何使用Google Colab和幾個技巧來運行它。
如果您只想概述Genesis,請查看我以前的文章《 Genesis Physics Engine:一個帶有示例的指南》。
我最初的創世紀的設置經驗
>但新問題彈出了。它不會渲染任何東西,我在OpenGL上遇到了幾個問題。即使我嘗試從他們的github運行示例文件時,我也面臨更多的錯誤和衝突。
> 然後,當我以為我已經整理出來時,我開始遇到諸如“統一找不到”之類的錯誤,這意味著某些渲染設置缺失了。> 在此過程中,我在網上進行了研究,以查看其他人是否遇到了同樣的問題。事實證明,我不是唯一的人 - 許多人面臨著同樣的困難,許多人似乎找不到解決方案來使他們的腳本正常工作。
我如何使創世紀起作用:Google Colab進行救援最初的挫敗感後,我決定嘗試使用一個Pro帳戶的Google Colab,事實證明這正是我所需要的。使用COLAB的GPU資源,我能夠:
安裝所有必需的依賴項,沒有任何問題。
>我選擇了NVIDIA A100-SXM4-40GB,事實證明,它足夠強大,可以有效地處理創世紀模擬。
>
>正如錯誤消息所建議的那樣,我修改了代碼以禁用查看器:
import genesis as gs gs.init(backend=gs.cpu) scene = gs.Scene(show_viewer=True)
>
在網上查看後,我發現其他人遇到了同樣的問題。許多提出的解決方案涉及配置遠程OpenGL環境或使用XVFB創建虛擬顯示。不幸的是,我無法獲得這些方法可以在COLAB中可靠地工作,這可能是由於依賴性衝突和環境的局限性。 在這一點上,我需要更實用的解決方法!>
>由於COLAB不是實時渲染,因此我決定按框架作為圖像保存渲染的輸出。有了這些想法,我能夠生成一系列圖像,這些圖像後來可以合併為動畫。>實現和輸出
在本節中,我將引導您完成代碼的實現和我獲得的輸出。設置GPU環境
然後,我用CUDA後端初始化了GPU加速度的Genesis。
這是我得到的輸出:>GenesisException: No display detected. Use show_viewer=False for headless mode.
創建和構建場景
scene = gs.Scene(show_viewer=False)
我需要的第一件事是一個文件夾,創世紀可以保存其呈現的圖像。
pip install genesis-world
接下來,我需要創建一個可以添加對象並與它們進行交互的場景。
>import genesis as gs gs.init(backend=gs.cuda)
gs.scene()初始化了一個新的仿真空間,而show_viewer = false disable dis time實時可視化。在這一點上,我準備了一個空的場景來開始建造。
添加一個平面和一個盒子
>該平面是模擬的平坦基礎。默認情況下,它是無限的,沿x-y軸平坦。
[Genesis] [INFO] Running on [NVIDIA A100-SXM4-40GB] with backend gs.cuda. Device memory: 39.56 GB. [Genesis] [INFO] ? Genesis initialized. Version: 0.2.1, Seed: None, Precision: 32.
接下來,我在場景中添加了一個盒子:
現在,我有一個簡單的設置:一架平面作為地面,一個放在其頂部的盒子。
import os save_dir = "/content/simulation_frames" os.makedirs(save_dir, exist_ok=True)
為了捕獲場景中發生的事情,我添加了一個相機。
>
import genesis as gs gs.init(backend=gs.cpu) scene = gs.Scene(show_viewer=True)
>我將圖像分辨率設置為320x240像素,這是測試的實用選擇,並將相機定位在(3.5、2.0、2.5),從而使其從略微上方和側面清晰地看到了場景。為了確保盒子保持在焦點中,我將相機的瞄準位於盒子中心的上方(0、0、0.5)。具有30度的視野(FOV),攝像機捕捉了場景的狹窄而專注的視角。
下一步是構建場景以準備模擬和渲染。
>GenesisException: No display detected. Use show_viewer=False for headless mode.
此步驟至關重要,因為創世紀使用了即時(JIT)彙編來優化仿真。當我構建場景時,創世紀:
>渲染和保存輸出
為了可視化模擬,我呈現並逐幀保存了輸出。每個幀都作為圖像存儲在Simulation_Frames目錄中。這是我得到的輸出:
scene = gs.Scene(show_viewer=False)
這些是我得到的圖像:
pip install genesis-world
>如通過相機所示,盒子如何隨著時間的推移而與平面相關。模擬以步驟運行,每個步驟都會改變框的位置,使其看起來像框在移動。
這個示例強調了創世紀如何模擬和顯示簡單的物理相互作用。儘管此設置是基本的,但它很好地了解了對像在場景中的行為方式。但是,您可以通過創世紀完全創建更複雜和現實的場景!我們將在下一部分中探索其中的一些功能。 >
形狀原語:
錄製視頻
運動任務的地形生成
>您還可以通過多種方式自定義模擬。您可以向對象添加逼真的紋理,從而使它們看起來更加栩栩如生。它還支持許多用於導入模型的文件格式,如果不支持格式,則可以要求將其添加。此外,您可以使用個性化文件和設置來創建自己的自定義對象形狀(稱為morphs)。
本教程提供了一個簡單的示例,可以幫助您開始創世紀。我們介紹了基礎知識,例如創建場景,添加對象和渲染輸出,以說明這種功能強大的物理引擎如何工作。 但是,這只是創世紀可以做的事情的開始。有了正確的硬件,例如強大的GPU和足夠的內存,就有很多可能性。您可以將其用於復雜的機器人模擬或創建用於AI培訓的高質量數據集。儘管設置它可能很棘手,但它絕對是一種具有巨大潛力的工具!
>以上是創世紀物理引擎:設置創世紀的分步指南的詳細內容。更多資訊請關注PHP中文網其他相關文章!