Motion(Under Construction!)

Motion

動作。讓虛擬模型產生動作,讓實體機械產生動作。

Mechanics

力學。物理學最根本的學問,討論質量、距離、時間、力之間的關係。

http://www.apress.com/9781430263371
http://graphics.stanford.edu/courses/cs348c/
http://cs448z.stanford.edu/
http://www.cs.cmu.edu/~scoros/cs15467-s16/index.html
http://www.cs.cmu.edu/~scoros/cs15869-s15/index.html
http://allenchou.net/2013/12/

Mechanism

機制。拼湊大量物體,物體之間互相連動。

n-body       https://en.wikipedia.org/wiki/N-body_simulation
cloth        http://www.cs.cornell.edu/projects/YarnCloth/
hair         http://www.andyselle.com/papers/9/
soft object  http://www.alecrivers.com/fastlsm/
water wave   http://www.cemyuksel.com/research/waveparticles/
matter       http://chemists.princeton.edu/torquato/

UVa 11574

Locomotion

力與姿態的改變。

比如走路姿態。無論是走路、跑步、爬行,四肢的循環時間總是一致(除非跛腳),而相位則不一致。特定的走路動作,有著特定的相位差。

http://graphics.ucsd.edu/courses/cse169_w15/slides/CSE169_13.pdf

Steering Behaviors

根據角色的位置及速率,進而採取行動,讓角色有著智慧。

http://www.red3d.com/cwr/steer/

備註

鍵盤控制。上下左右切換很快時,有時候同時按到左和右(上和下)。如果沒有正確處理,角色就會卡住不動。

一般來說,左和右兩者都按著,是以最後按下去的按鍵為主。左和右放開其中一個,是以還按著的按鍵為主。

作業系統處理鍵盤事件,是循序的;兩個鍵盤事件,必定一前一後。就算玩家一口氣按下多個按鍵,寫程式時仍是逐一處理。

Motion Control(Under Construction!)

Motion Analysis

分析。觀測實物,擷取動作。

Motion Retargeting

重新定位。建立模型與實物的對應關係。

Motion Transmission

傳動。組裝實物,使之連動。

Motion Control

控制。組裝實物,實施動作。

Motion Planning

規劃。訂立規矩,尋找動作。

http://homes.cs.washington.edu/~todorov/
http://www.zhihu.com/question/26944678
http://www.vccoo.com/v/90589d
Graph Optimization
http://censi.mit.edu/pub/research/2013-mole2d-slides.pdf

Animation(Under Construction!)

Animation

動畫。狹義是卡通動畫。廣義是電腦模擬動畫。

http://www.cse.ohio-state.edu/~parent/
http://www.youtube.com/channel/UC0GpuO2aEbGMG8N0iLE9_TA
http://www.youtube.com/playlist?list=PL-bOh8btec4CXd2ya1NmSKpi92U_l6ZJd
Double Buffering
2D Transform
變量漸增

知名的動畫製作軟體如AfterEffect、NUKE、MAYA、MARI、CelAction2D。

Sakuga

作畫。傳統的卡通動畫是人工作畫。現代的卡通動畫是運用演算法協助作畫。

經典的作品是小小武打

日本發展出許多令人驚豔的作畫風格。台灣曾經是作畫代工大國,不過已經沒落了。

Animation

http://animapp.tw/
https://www.zhihu.com/question/61990609/answer/193543646

3D。建立3D模型。現在最流行的方式。

3D仿2D。調整3D模型,營造2D效果。例如採用特殊的shading。

http://animapp.tw/blog/insight/people/1816

2.5D。調整2D圖片,營造3D效果。例如多層貼圖、image warping。

2D仿3D。以2D圖片為基礎,打造3D模型。

http://www.alecrivers.com/2.5dcartoonmodels/
http://graphics.csie.ncku.edu.tw/double_side/doublegfx.TVCG.final.pdf

Stop-frame Animation。停格動畫、定格動畫。拍攝靜態畫面,串成一個影片。

Cinemation

電影。相關的學問叫做「攝影學Cinematography」。

電視廣告。所有技巧集大成。

https://www.facebook.com/worthtostudy

Visual Effects(VFX)

視覺特效。

Animation Effect(Under Construction!)

Easing Function

https://github.com/kaelzhang/easing-functions
https://syphobia.wordpress.com/2011/04/07/useful-mathematic-curves/

Particle System

http://www.plunk.org/~trina/thesis/html/thesis_ch2.html
http://freespace.virgin.net/hugo.elias/models/m_main.htm
http://www.cs.ubc.ca/~rbridson/

Object Generation

Fur
http://www.xbdev.net/directx3dx/specialX/Fur/
http://www.catalinzima.com/xna/tutorials/fur-rendering/
https://www.mikecauchiart.com/single-post/2017/01/23/Research-Tillable-images-\
and-cloth-shading
Map
https://www.zhihu.com/question/27157193
Flow
http://www.iquilezles.org/www/articles/warp/warp.htm

Perlin noise應用廣泛,例如紋路(座標)、地勢(高度)、痕跡(表面法向量)、移動(速度)、濃淡(密度)。

Non-photorealistic Rendering(Under Construction!)

Non-photorealistic Rendering(NPR)

非寫實繪圖

Painterly Rendering
Artistic Rendering
Vision-Realistic Rendering
http://www.dgp.toronto.edu/~hertzman/
http://www.cs.cf.ac.uk/npr/
http://www.red3d.com/cwr/npr/
http://www.cs.virginia.edu/~luebke/publications/pdf/npr.pdf

Shader

Cel Shading

http://en.wikipedia.org/wiki/Cel_shading

Hatching

http://research.microsoft.com/en-us/um/people/hoppe/hatching.pdf

Silhouette

Watercolor

Dimensional Typography

3D文字動畫。

http://acg.media.mit.edu/projects/thesis/pchothesis.pdf

Fluid Simulation (Under Construction!)

Fluid Simulation

兩種模擬方式:一、模擬每個水分子的速度。二、模擬每個位置的水分子總數量(總質量)、總速度。

1. particle / Lagrange description
2. grid / Euler description

兩種力:

1. pressure 擠壓(法線)
2. viscosity 黏滯(切線)

粒(Particle)(Lagrange Description)

首先建立一百個粒子,隨機散佈。

一、擠壓。粒子太近產生斥力。彈簧力。壓力總和宛如擴散。

兩層迴圈窮舉所有點對,時間複雜度O(N^2),太慢了。大家習慣採用「Uniform Grid」資料結構,檢查周圍九宮格,時間複雜度O(N+K)。

二、黏滯。概念類似摩擦力。擠壓力,切線分量,乘以黏滯係數。

粒子移動,依照力的大小,F=ma。

需要重力的話,就加上一常數9.8。就這樣。

撞牆有兩種解法:一、牆是不動的粒子:牆給予粒子擴散力,但是牆不受力。二、彈性碰撞:位置反轉回來、速度顛倒方向(變號)。

不可壓縮,必須調整斥力強度。限制粒子距離,當距離太近則施加斥力。限制粒子密度,當太密則施加斥力。但是這些只是美化,無法完美解決。

http://www.gotoandplay.it/_articles/2005/08/advCharPhysics.php
http://www.gotoandplay.it/_articles/2005/08/advCharPhysics_p02.php

其他效果,可以參考LiquidFun說明文件

格(Grid)(Euler Description)

http://www.intpowertechcorp.com/GDC03.pdf

一、擴散。梯度的散度。

二、重力。加上一常數9.8。就這樣。

三、黏滯。這真是個好問題。【待補文字】

四、擠壓。減去散場,保留旋場。

最後平流的時候,採用倒回線性內插。

粒與格衍生許多演算法

SPH 粒連續 http://www.cs.ubc.ca/~rbridson/fluidsimulation/GameFluids2007.pdf
SEC 粒離散 http://graphics.pixar.com/library/SEC/
PBD 粒方程 http://blog.mmacklin.com/
PIC 粒化格 http://www.cs.ubc.ca/~rbridson/fluidsimulation/2006/ParticleInCell.ppt
MAC 格四方 
RBM 格八方 http://matthias-mueller-fischer.ch/realtimephysics/slidesNils.pdf
MG  格中格 https://en.wikipedia.org/wiki/Multigrid_method

這些又衍生許多演算法,比方說Affine PIC(源自PIC)。

Navier-Stokes Equation

描述流體的數學式子,諸如氣體、液體都是。

數學式子有點長,這裡不剖析。若有興趣,請自己去看:

http://15462.courses.cs.cmu.edu/fall2015/lecture/fluids

Navier-Stokes Equation的兩種形式

streamfunction-vorticity formulation   curl curl F = - laplace F   (2D)
pressure-velocity formulation          div grad f =  laplace F

Navier-Stokes Equation等號兩邊同時求旋度。以旋度為基礎。

優點是渦流明顯。leap-frogging。微下擊暴流Microburst。

https://en.wikipedia.org/wiki/Vortex_ring

Schrödinger Equation

http://www.its.caltech.edu/~achern/projects/SchrodingersSmoke/

計算幾何有個實數變複數的手法:二維座標(x,y)改成複數x+yi,座標平移、縮放、旋轉改成複數加法、倍率、乘法,簡化流程。

最近有人將Navier-Stokes Equation的實數運算方式,改成了Schrödinger Equation的複數運算方式。三維實數改成二維複數,質量(密度)改成複數長度平方,速度改成複數角度,簡化流程。

詳細內容我沒弄懂。請讀者自行學習。

未涉及的主題

真實世界的液體更加複雜。

層流、亂流。laminar、turbulence(= mean + fluctuation)
Reynolds number
Moving Solid
多種物質。instablity
表面張力。adhesion cohesion
溫度。temperature
能量轉換。
煙、火。
https://software.intel.com/en-us/articles/fluid-simulation-for-video-games-part-1/
粒子角動量。
七大數學難題:Navier-Stokes existence and smoothness