DailySculpt

土日は本格的にアニメーション作成に着手したかったので、金曜夜に本屋に行って5000円ぐらいの教科書的な本を購入しました。 その本を通じてアニメーターの仕事の簡単なワークフローやアニメーションを作る際の思考回路に少し触れることが出来たわけですが、アニメーターは本当にすごいことをやってると思ったし、なんというか色んな意味で幸せになって欲しいと思いました(待遇とか……)。

完全に自分でキーフレームを打ってアニメーションを作るのは初めてですが、写経がてらいくつか実際に作ってみました。

Idle

f:id:cignoir:20170123020545g:plain

Walk

f:id:cignoir:20170123020632g:plain

Run

f:id:cignoir:20170123020745g:plain

Jump

f:id:cignoir:20170123020809g:plain

Jump2

f:id:cignoir:20170123020825g:plain

楽しい!!✌('ω'✌ )三✌('ω')✌三( ✌'ω')✌

しかし、やってるうちにモデルの細かい点で気になるところ(基本姿勢の背骨の曲がり具合とか)やトポロジの破綻(手の指や、口周り)が見えてきて次の課題が早くも山積みです(この課題が山積みの状態好き)。 いつもなら壊して作り直すんですが、今回の子は作品としてアウトプットすると決めていたので、ある程度妥協しつつもこのままAssetの段階まで仕上げるつもりです。

色々と課題を残しつつも、アニメーションを想定したモデリングが少し出来るようになったという点で今回はひとつ大きなブレイクスルーがあったかなと思います。

次は攻撃・ダメージ・死亡あたりのモーションを作る予定です。

DailySculpt

作業のキリが良かったので連続更新。

表情

頂点モーフならこれまでの技術を使ってakeytsu上でできそうなのでやってみました。表情への影響力を鑑みて口の開閉>眉毛>視線の移動>まぶたの開閉の優先度でできればいいかなと思います。

前も書きましたがakeytsuはweb上で資料がなかなか見つからないので開拓していくのが大変なのですが、今回は強制終了もなく理屈通りにこう動いて欲しいと思ったとおりに動いてくれてスムーズでした。

f:id:cignoir:20170115231156p:plain:w300

しかし、ボーン構造がかなり煩雑になってしまったので、階層構造を整理する目的のジョイントがあってもいいのかなぁと思いましたが他の人がどうしてるか知りたいですね。例えばhipから直接スカートのボーンを生やすんじゃなくて、一旦スカートの親ジョイントを作って子を束ねる形にしたり。

f:id:cignoir:20170115232238p:plain:h150f:id:cignoir:20170115232242p:plain:h150

笑顔。ただの粘土の塊だった頃からここまで一度も笑ったことがなかったけど初めて笑った。すごい(各種ツールが)。

次は

  • IdleとWalkモーション作成
  • リグとアニメーションの再利用について調査。akeytsuでそれらをexportする方法が現状不明(要調査)。この記事に重要なことが書いてそう [ue4]ボーンアニメーションの再利用 MMDモデル編 - Qiita
  • akeytsuでメッシュの部分差し替えみたいなことをやりたい。手足をもうちょっと長くしたいので……

まとめ

ニコニ立体ちゃんさんはやっぱりかわいい。

DailySculpt

デイリーとは(哲学

モデリング

akeytsuを購入したのもあって、今回とにかく可愛いキャラを可愛く動かしたい衝動に駆られていたので アニメ寄りのキャラクターの製作に取り掛かっていました。

f:id:cignoir:20170115041120p:plain:w300

かわいい。服は前回同様、MD6でプロトタイプを作って3DCoatでリトポしてMetasequoiaで調整みたいな流れで作ってます。 ここまでは良かったんですが。

塗り→コレジャナイ

f:id:cignoir:20170115041615p:plain:w300

コレジャナイ感が半端ない。全然かわいくねえ。 ボツにしようかと迷ったんですが、ここで逃げたら永遠に前に進めなそうだったので踏みとどまって デジ絵の塗り方の教科書を買って勉強してみました。

アニメ塗り、ブラシ塗り、ギャルゲ塗りなどのさまざまな塗り方の違いが解説されていて、 まぁ手が動かないので写経は出来ないので眺めるだけなんですが 考えるべきポイントがなんとなくわかってよかったです。

f:id:cignoir:20170115042326p:plain:w300

ブラシ塗りとギャルゲ塗りを参考にしつつ塗ってみました。 まさかbakeせずに自分で陰影を描く日が来るとは。ずっとあきらめてたので嬉しいです。

f:id:cignoir:20170115042812p:plain:w300

Rendered by Renderman

スキニング

前回モデルと違い、akeytsuが落ちなくて作業が捗って気持ちいい。 操作は同じようなことしかやってないと思うのでモデル依存の不具合があるのかなぁ。

今回はスキニングを少しでも楽にしたかったので、 スキニングの作業単位でオブジェクトをあらかじめわけておいて オブジェクトの可視設定を切り替えながらスキンペイントしていきました。

f:id:cignoir:20170115042950p:plain:w300

ジョイントが足りなかったら後からジョイントを足してウェイトを塗ってミラースキンして…… といった工程が滞りなく出来ているので今回はうまく出来そうな予感がします。アニメーションパートも色々難しそうだけど頑張ろう。ちゃんと作るのは初めてかな。

HearthStone

先月ミラクルローグで初めての一桁台、ランク4いけました。やったー。 勝率55~60%キープ出来てたので数こなせばレジェンド狙えそうだったけど時間的に厳しいですね。

f:id:cignoir:20170115044941p:plain:w300

akeytsu test

akeytsu

f:id:cignoir:20161113233548g:plain:w300

試用期間を利用してリギング、スキニング、アニメーションをakeytsuだけでやってみました。

動きがカクカクしてるのはアニメーションスキルの問題です。腕周りどうした?

とにかくドキュメントが無いので、英語の動画見ながらなんとか……

アニメーションをミラー反転する機能を使ってるため、この歩行アニメーションは右半身だけしか作ってません。便利。

あとは前のキーフレームのモデルの状態をゴースト表示出来るのが便利でした。他のツールでも当たり前に出来るものなのかもしれませんが。

Unity

f:id:cignoir:20161113233601g:plain:w300

アニメーションがbakeされたfbxを出力して、Unityにimport test。てかりどうした?

Mecanim

f:id:cignoir:20161113233646p:plain:w300

Mecanim用のセットアップもすんなりいきました。ボーンの階層構造が適切だと設定せずに自動検出してくれる?ボーン名のおかげかもしれませんが未検証。

Metasequoia

f:id:cignoir:20161113233607p:plain:w300

久しぶりにメタセコ(我が家感)触ったらいつの間にかPMD(HLSL)というシェーダが。akeytsu で出力したfbxを読み込んで、スキンウェイトがのっていることを確認しました。

所感

ZBrushと3D-CoatとMarvelousDesignerでローポリモデルを作成してakeytsuでリギング&アニメーション してUnityにimportという流れを一通りやってみました。アニメーションを手作業でやるのは初めてなので新鮮で楽しかったです。これまた深淵なる沼を感じましたが。

akeytsuは操作方法やモデルに問題があったのかもしれないですが、akeytsuにかけた時間の7割はcrashしない方法を探す時間ってぐらいcrashしまくりでつらかったです。とは言えやはり、リギングからアニメーションまでをひとつのソフトで統合的に作業出来るのは素晴らしいと思ったし、UIも洗練されていて好きなので使い続けるつもりです。

アニメーションを少しやるとこういう服にするんじゃなかった!とかもっとモデルを凝りたいとかやりたいことが出てきたのでまたモデリングに戻ろうと思います。無限に手直ししてる気がするけど、やっとワークフローが確立して、これからは後の工程を意識しながら作業出来るので個々の作業が最適化されていくでしょう。

手探りで時間かかりますが試行錯誤を続けます。

試行錯誤

Twitter の #5000poly というハッシュタグで、 さくらもちさんの作品を筆頭に高品質なローポリモデルが上げられていて憧れの目で見ながら いつか自分もここに上げられるような作品を作れるようになりたいと思っています。

それを踏まえ、自分のスキルやツールセットからどうすれば実現出来るのか手順を模索しているのが現状です。 ここ最近試行錯誤していた内容を書いておきます。

現状のツールセット

  • ZBrush 4R7
  • Metasequoia 4.5.x
  • [New] MarvelousDesigner 6 (体験版)
  • [New] 3D-Coat (体験版)

ひとまずZBrushを使うことでハイポリモデルに関しては質はともかく一応作れるようになってきました。 問題はスカルプトで作ったハイポリモデルをどうローポリモデルに加工していくかです。

主に3つの障害が考えられます。

  • リトポ
  • UV展開&テクスチャ作成
  • アニメーション(リギング・スキニング・モーション)

リトポ

単純に5000poly以内におさめたいだけならZRemesherでリトポすればいいと思うんですが、 その制約の中でアニメーションもさせたいとなると自動リトポではエッジループや密度の調整の面で限界を感じました。

ZBrushの手動リトポ関連の機能を触ってみたのですが、操作性につらみがあったのでリトポ機能が便利と評判の3D-Coatを使ってみたところ噂に違わぬ便利さで気に入りました。 リトポはハードサーフェイスのモデリングにも応用ができそうですね。 安価なので購入予定。

UV展開

過去の手順

  • MetasequoiaでUV展開→そのUV展開図を下書きに画像編集ソフトで色塗り

さすがにこれはつらいし、みんなこんなことやってなさそうと思って調べたら polypaintをbakeする方法が見つかりました。

  • Tool > Texture Map > New From PolyPaint

UV展開はUVMasterというプラグインが便利そうでした。 しかし、手順がやや複雑で以下の2つの挙動でかなりハマりました。

  • まずサブツールを合成してSubDivLv=1だけの状態にしなければいけないのですが、 SubToolを合成したときに全体のSubDivLvが失われてしまう。うまくいくサブツールの組み合わせもある。

  • 合成してUVを展開したあと「Copy UV」して元のハイポリモデルにUVをpasteしようとするも、 Incompatible(互換性がない)というエラーが出て出来なかった。

これらの挙動の原因は結局よくわかりませんでした。次からはローポリのパーツ構成が決まった段階でディテールを作り込む前に早めにMergeしてUV展開しておくことで対策をしておこうと思います。 今回は仕方ないのでSubDivLv=1で merge して、Divideし直すことにしました。失われたディテールはまた作ります。

あとは頂点色に影や素材のbakeをしたいときはProjection Masterというプラグインが便利でした。

アニメーション

過去の手順: Metasequoiaでリギング&スキニング → CLIP STUDIO COORDINATE & CLIPSTUDIO ACTION

上の手順でも出来ることはわかってるんですが、データの受け渡しにPMDファイルを使わないとうまく受け渡し出来なかったり色々と不満も多かったです。MayaやMaxなしでのこの部分の定石がまだ見つかってないのですが、akeytsuという直感的な操作が売りの新しめのツールが気になっています。

リギング・スキニング・アニメーションをターゲットにしたツールで用途には完全に合致しています。 評判をぐぐった感じでは、機能が足りないからまだ様子見という意見が多く、ドキュメントも少ないため学習コストは高い印象です。用途は合っているし、他に良い選択肢もわからないので一度試してみようと思います。

まとめると、リトポとUV展開に関しては3D-CoatとUVMasterで解決できました。 アニメーションに関しては akeytsu を試してどうかというところです。

MarvelousDesigner

服をパターン(型紙)から考えることがこれまでの人生で無かったため最初は面食らいましたが、 いくつかチュートリアルやネットで拾ったパターン通りに実際に作ってみているうちにすぐに慣れることができました。 Clothシミュレーションも早くて綺麗だったし、プロトタイプを素早く作ることに役立ちました。 衣服のパターンは奥が深くて難しいけど楽しいですね。30日の試用期間を終えましたが購入予定です。します。

覚えたての便利ワード: 折り目・ひだの種類

  • プリーツ(Pleat)
    • 縫い合せ部位に折り畳みがあり、布先まで折り目がある
  • タック(Tuck)
    • 縫い合せ部位にのみ折り畳みがある
  • ダーツ(Dart)
    • 予め三角に縫ってある。縫い合せ部位はフラット

まとめ?

途中経過

  • ポリゴン数 約 4400
  • テクスチャ 512*512 3枚(髪・体・服ほか)

f:id:cignoir:20161024230845p:plain:w300

今のところ右往左往しながらもなんとか目標の水準に近い形で出来てきてはいます。 テクスチャは3枚使っているのですが最終的には1枚か2枚に減らす予定です。 とりあえずはUV展開とテクスチャ作成を一旦終わらせます。

その後、ディテール作成と行きたいところですが、アニメーション周りが未知すぎて怖いのでまずはアニメーションの手順を模索します。アニメーションの手順が確立したら、ディテールを作り込み、アニメーションのパターンを増やす感じで作業をしていきます。今年中には動かせるといいなぁ。

DailySculpt

3D-Coat

  • 試用版でリトポの使用感を体験してみました。評判通り便利で気に入ったのでそのうち安いのを買います。
  • [点と面]機能はメタセコプラグイン需要ありそうだなとちょっと考えてました(作るとは言ってない

なぜこれを試していたかというとZBrushでローポリでUVマッピングしたメッシュを別のツールでリトポした後にまたZBrushでハイポリにしてpolypaintして作ったテクスチャを貼るみたいなフローを試したかったからです。プロな方たちとは使ってるツールセットが違う関係でなかなか先例を見つけられずに手探りになりがちだったんですが、結果的にそのフローで問題なさそうだったので、テクスチャ作成はZBrushでやります。

Fibermesh

  • Fibermeshはゲーム用途には使えないので触らなくてもいいかなと思ってたんですが、髪のプロトタイプを作るのにいつも苦労するので試してみました。

f:id:cignoir:20160918044502p:plain:w300

新作の子でやや短冊気味に毛を生やしてみました。粘土をこねるよりは頭の中のイメージに近い形でプロトタイプ作成出来たと思います。髪の幅や関節の量などかなり細かくパラメータをいじれるので工夫次第で色々出来そうでした。上の画像のFibermeshオブジェクトを通常のPolymeshに変換して大体17kポリゴンぐらい。ここからdynameshするなり、3D-Coatに持っていってリトポするなりして目的に合った形式に変えていったり出来ると思います。

髪のテクスチャはノープランなので方法を考えないといけないんですが、ローポリなら短冊状の板ポリを結合せずに貼っていくユニティちゃん方式(?)にしようかと思います。

VR

現状のVRは人体へのフィードバックが希薄で、あまり幸せになる技術じゃなさそうだと思っていて興味が薄いのですが、TGSで色々なゲームの紹介がされていたので動画を眺めていました。予想以上に面白そうで体験したいなと思いましたし自分の想像力の貧困さを恥じました。ただやはり前述のフィードバックの問題があるので、有効な活用方法がARのアプローチ(現実+α)と近い場合に限る気はしてます。

技術面以外の感想としては美少女VRゲームで使われているモデルが可愛くないのが目立つかな、と……。これは多分偶然じゃなくて、VRを使うにあたってリアルを指向した結果が自分の肌には合わなかったのだと解釈してます。そこで、自分はどちらかというとややリアル指向なモデルを作ろうとすることが多いので、本質的なキャラクターや造形の魅力を自分自身の感性でちゃんと作っていかないといけないのだと戒めました。今はまだ技術不足で表現力がそもそも貧しいのですが、それに甘えて深く追求することをしてなかったなと思います。

気になるツール

Marvelous Designer(MD), MARI

気になる。

久々で雑談的になりましたがここまで。

Dynamoid v1.2 の新しいオプションについて

AWSのDynamoDB向けORMで"Dynamoid"というgemがあるのですが、以前投げていた下のPRが無事マージされたので変更点を紹介しておきます。

github.com

強制的に created_at と updated_at カラムが付加されるのを防ぐオプション

これまでレコードを保存する際に、timestamps用カラム(created_at, updated_at)がデフォルトで強制的に付与されていましたが、以下のように設定することで無効化出来るようになります。想定しているユースケースは、既に運用中のDBで使用したいがカラムを増やすわけにはいかない場合や、timestamps用のカラムが既に別の名前で作られている場合などです。

Dynamoid.configure do |config|
  config.timestamps = false
end

masterにはマージされましたが現時点ではrubygemsにはpushされていないので、もし変更を取り込みたい場合は下のように直接gitリポジトリを指定してinstallする必要があります。

gem "dynamoid", git: "https://github.com/Dynamoid/Dynamoid.git"
# または
gem "dynamoid", github: "Dynamoid/Dynamoid"

つい最近メンテナが2人増員されて活発になっているので、近いうちにrubygemsの方のバージョンも上がるでしょう。

追記 2016-09-05

v1.2.1 がデプロイされました

dynamoid | RubyGems.org | your community gem host

強制的にテーブル名にプリフィックスが付与されていたのを防ぐオプション

ついでに次のバージョンで更新予定の以下のオプションも紹介しておきます。強制的にテーブル名に付与されていたnamespaceを無効化できます。こちらも現時点で取り込みたければ同様にgitリポジトリ経由でinstallする必要があります。

Dynamoid.configure do |config|
  config.namespace = nil
end

関連Issue

これらの対策のために施された世のモンキーパッチたちを消し去ることが出来れば幸いです。

モデリング練習ブログなのに技術系の記事を書いてしまって申し訳ございません……