キャラクタデータの設計


teslawireのプロジェクトとして一番野心的なのはキャラクタの入力方針で:

  • 限定されたプリミティブによるキャラクタ記述。
  • "Body"プリミティブによる線形スキニングの生成
  • (部分的な)Screen Space Skinningによる線画エフェクト

キャラクタを通常のポリゴンモデルではなく、抽象化されたパーツで構成することにより、より高いスケーラビリティを得ることができると考えている。
... これらのエディタを作るのがなかなか難しい問題となる。

プリミティブ

プリミティブは、いわゆるフィギュアの構成要素を想定して選定している。服と身体を分離してモデリングするのはよく行われるが、目口を分離してモデリングするのは特徴的と言える。(これにより、目口の部分でスキニングやモデル差し替えを行うことを避けている)
モデリング方法論はZbrushに大きく影響されている。

  • 2Dスプライト

目や口、(漫画的な)タッチは2Dスプライトを貼り付ける形で実現される。スプライトは深度と法線を持つことができる2.5D表現で、貼り付けた先の面を盛り上げたり掘ったりすることができる。
LOD等の考察は今のところ無い。teslawireにはギャグ顔を使うシーンが無いので、deformationに関してもあまり良い考察が無い。アニメーションはまだ検討されていない(全コマ手書きする方が効果が有りそうなため)。

  • ベジェパッチ

顔面や指先のように、複雑な形状を持つものはベジェパッチで表現される。ベジェパッチは単体で存在するものと、Bodyプリミティブの端または関節を構成するものに大別される。
ベジェパッチからはBodyを"生やす"ことができ、接続部ではBodyとベジェパッチをブレンディングすることでスムースな接続を行うことができる。逆に、Bodyにベジェパッチを貼り付けることで複雑な形状を表現することもできる。
接続部におけるブレンディングは人間が分割を指示することにより"経験的"に行われる。厳密な(数学的な)フィッティングは組合せが膨大なため難しい。

  • Hair

髪やまつ毛のようなパーツを表現するためにHairプリミティブを想定している。これはまだ設計されていない。(良いエディタが思いつかない)
いわゆる"アホ毛"や漫画的な毛領域の分割といった作画テクニックを再現するための良いモデリング手法が必要で、今のところ決定打は無い。

  • Cloth

Clothは衣服を表現するためのプリミティブで、Bodyの変形に合わせた皺の表現やアニメ的なモーションブラー(いわゆる"オバケ")をサポートするために専用プリミティブとして分けている。これもまだ実装されていない。
縫い目やフリルのような頻出で、かつ、デフォルメが良く適用される表現に関しては直接的にサポートしたいと考えている。

  • Body

Bodyは関節・筋肉表現を行うためのプリミティブで、通常の人体であれば、指先と頭部を除いてこのBodyプリミティブで表現できるように考えている。
Bodyは、いわゆるskeletal animationを実現するためのボーン情報も持ち、ゲーム中のキャラクタアニメーションは全てこのBodyのアニメーションとして実装される必要が有る。(ClothとHairのアニメーションは生成的に行われるため、ゲームロジックからコントロールできない)
基本形状は円柱であり、断面形状と関節の形状をコントロールすることで必要な形状を表現する。

アニメーションの"焼き込み"

技術的に難しいのは、ゲームエンジンで使用される最終モデルデータの出力と言える。ゲームエンジンは、線形スキニング、三角形ポリゴン、ビットマップテクスチャしかサポートしないため、上記のプリミティブで表現されたモデルをこれらに焼き込む必要がある。
ポリゴン削減等の操作も難易度の高い課題だが、アニメーションの焼き込み - Bodyの変形を固定頂点の線形スキニングで表現すること - はさらに難しい。

ゆびの変形を考えると、断面は変形しないこともあれば、"ふくらみ"を作ることもある。これらを、単純にBodyの軸をボーンとみなした線形スキニングでは表現することはできない。良い変形のためには補助ボーンの追加が必要になるが、追加すべき補助ボーンの構成は自明でない。
また、DX9ないしGLES2世代のGPUにはジオメトリシェーダが無いため、変形中に頂点の加除を行うことができない。このため、ポリゴンデータに出力する頂点データは一様にならず、強く変形するポイントについてはより多くの頂点を割く必要がある。