ヒューリスティックによる交差/切断/陰影表現


悩みどころ。
現状の"アニメ風の絵をCG表現するシステム"は、要するにすべてaccurateなポリゴンモデルを使って交差などを計算している。当然、すべての頂点を順次計算しなければならないので、一定の負荷は発生する。
いわゆるtoon shadingのようなテクニックは、結局のところ画面上の陰影に寄与しない多くの無駄な頂点を生むことになる*1
metaposeというか僕の作るようなCGシステムは伝統的に、(豊富なプリミティブ*2を用いて)表面上の頂点の計算をサボるようにデザインしているので、演算負荷はある程度少ないが交差表現に難があった。
たとえばAのように円柱を変形した形であれば、中心軸と、中心軸からの直径の情報だけで輪郭を"視覚的に破綻のない程度に"類推して描くことはそれほど難しい問題でもない。Bのように平面であることがあらかじめわかっていれば、4隅を計算して線で結ぶだけになる。そして、単純にZソートして実際のレンダリングを行う。
従来は、データの分割を(Flashアニメのように)人手で行っていて、ダイナミックな変更は行っていなかった。つまり、非常に複雑なアニメーションを想定するデータは途中で差し替えるといった対処が必要となる。たとえば体の半分が穴に埋まるようなシーンを考えるならば、あらかじめ半分に切断したデータを準備することになる。
重要なのは、それっぽく見えるヒューリスティックを収集してモデル化することだが、なかなかうまい単純化ができずにいる。
たとえば、最初は(ろくろ を回して作るような)円柱の変形を集めて人体表現ができないかと考えていたこともある。そのようなモデルでは外力による変形を的確に扱えない。

*1:もちろん、交点でなかったことが判明したという意味で十分に寄与している。主張としては、人間の認識に関わらないという意味では無駄ではないかという点。

*2:通常のポリゴンモデルが3角形の平面しか使用しないのに比べれば