這是Blender模擬框架的方案。目標是有一個統一的環境來設置各種模擬。
我希望這項方案能為進一步討論我們希望方案在未來如何在Blender中工作提供一個具體的起點。因為這是一個關於框架的文檔,而不是關於單個功能的文檔,所以它將是相對技術性的。它提供給開發者和技術藝術傢閱讀。
在抽象層面上,模擬是一個修改狀態的功能。可以將其視為具有以下特征(狀態、環境、時間步長)的函數。void simulate(state, environment, time_step)
state
):包含要修改的狀態的可變容器。例如,它可能包含剛體模擬中所有對象的位置和旋轉。environment
):包含模擬運行的外部世界信息的不可變數據。通常,這將是一個部分評估的Blender場景。time_step
):一個非負實數,表示應該模擬的時間量。例如,當模擬從第0幀開始時,在每一幀中進行模擬的調用如下所示。這適用於我目前能想到的所有模擬。
/* First Frame */
state = empty_state()
/* Use zero time step to initialize the state. */
simulate(state, initial_scene_state, 0)
...
/* Second Frame */
simulate(state, new_scene_state, 1 / fps)
...
/* Third Frame */
simulate(state, new_scene_state, 1 / fps)
上一篇
下一篇