【Paper】Motion Path Editing

帽捲
Maochinn
Published in
Feb 22, 2021

先寫一些我要記錄的東西好了,一天到晚挖坑都不填的

Editing the path of a walking motion. The left image shows the original motion, the right shows the edited result.

簡單來說就是我們輸入一段動畫,然後可以計算出這一段動畫的path,也就是上圖看到的線,然後我們可以透過調整這條線來做成其他動畫。那為甚麼要這麼做呢?因為如果每一段動畫都需要人工捕捉,你可以想像這是相當大的工作量,那為甚麼能這麼做,如果有做過3D遊戲應該會知道,人物的動作跟移動是分開的,所以我們可以把動畫拆出path當作移動,然後在拿原始動畫-path就可以得到動作。

A character zig-zags relative to its path(left).If the details of the motion are represented in an absolute sense (e.g. left and right on the page),they may not apply if the direction of travel is changed(center).

這個應該會比較清楚,如果從數值上理解的話,你可以理解成我們拆出高頻以及低頻的訊號,我們會傾向右邊的結果而不是中間的,因為我們知道高頻的資訊應該是在path的local space之下,其實這種方式在mesh的編輯也是一樣的,我們會把表面的起伏(高頻)記錄下來,只對laplasian的mesh(低頻)操作,等變形完再加回去。

Fit Curve

總之,這邊會遇到一個問題,我要怎麼算出這條path?一種直覺的方式就是線性回歸,我們想辦法找出能夠fit原始動畫的曲線。

但這邊要注意,我們要取出低頻訊號,所以我們不應該overfitting,所以我們可以使用Cubic B-spline Curve,當然也可以使用Bezier Curve,但這邊要注意一點,我們fit完的Curve應該要能夠很簡單的編輯。有關於Cubic B-spline Curve可以參考

總之,我們要想辦法用4個控制點來fit,由於只是三次式,所以自然沒有辦法fit到很接近,但這也是我們刻意為之的(只要低頻訊號)。

開始解以前,我們可以先來複習一下2D的linear regrssion。

那回到我們的path,我們所求變成三個參數P0~P3,也就是對應到4個控制點。

這邊可以注意到,最後我們解的是4*4的系統,所以解起來相當簡單,這也就是因為我們用的是cubic的curve。

這邊可以看我在blender裡面寫的code。

待續…

這是我自己的簡單實作在blender上,但這個實作還包含registration curve,這個有空在開一篇來講吧。

--

--