!!!独り言日記 !!大晦日 (2014/12/31) 今年は準備/勉強することが多くて、結局目標にしていたモバイルのアプリ1本作る、は来年にまわしてしまいました。 後半というよりも11月-12月にバタバタしてまだ消化不良ではあります。 そして、いくつか、今年初めに立てた目標が据え置き状態に(英語勉強とか英語勉強とか、、、)。 途中で徐々に耕しながらという路線に変更したのですが、いやはや時間がかかりますね。 今はまずは自分で作るアプリなりのために周辺を強化するという流れを作ったため、半分以上は開発じゃなくてリソース作成などのツール使いのほうをしてたり。 来年1月にも、いくつか機能(プラグインでの拡張)の公開予定ですのでこちらも徐々に情報出していければと思います。 一応目標として。「Terrain」をなんとか手の届きやすいところに構築したい、という大きな目標がありまして。 木生成や、その他いくつかの機能はそのための部品でもあったりします。 そうすると、LODとか接地とか地面の多重マップとリアルタイム表示とか、いろいろ芋づる式に課題が出てきたりしますね。 !![Shade 3D] 続続続続続・AOプラグイン (2014/12/26) 同じく以下から。ハイポリの人体。 http://tf3dm.com/ 189860頂点/189568面(四角形のみで構成)。 これくらいになると、実質的にポリゴンメッシュの編集は厳しい感じ。 ↓細かい面分割がされており、もともとUVはきれいに割り当てられてました。 {{ref_image human_00_20141226.jpg}} こんな細かい面の場合は、頂点AOだけで十分ではあります。 ↓以下は普通のレイトレ。レンダリングは約1秒。 {{ref_image human_rt_20141226.jpg}} ↓頂点AO計算、31.4 sec。レイトレでレンダリング。レンダリングは約1秒。 {{ref_image human_v_ao_20141226.jpg}} ↓AO Map計算、38.6 sec。レイトレでレンダリング。レンダリングは約1秒。頂点AO時とほぼ同じ感じになりました。 {{ref_image human_aomap_20141226.jpg}} ↓AO MapのUV上のイメージは以下のようにきれいにベイクされてます。 {{ref_image human_aomap_uv_20141226.jpg}} !![Shade 3D] 続続続続・AOプラグイン (2014/12/26) ハイポリは自分自身作らないので、以下から借りてきました。 http://tf3dm.com/ ジープをAO計算。15494頂点/26822三角形のものです。 {{ref_image car_ao_20141226.jpg}} UVの自動展開は、42 sec。 ↓頂点AOのみ。2.0 sec。 {{ref_image car_ver_ao_20141226.jpg}} ↓AO Map、デフォルトで計算。6.1 sec。 {{ref_image car_aomap1_20141226.jpg}} ↓AO Map、パラメータ調整で精度アップ。24.2 sec。 {{ref_image car_aomap2_20141226.jpg}} 一度焼き付けたら、レンダリングはレイトレで1秒かかりません。 自動化でどこまで精度を上げることができるか、というのもありますが、初回はパラメータを手動で詰めてもらうことにします。 実際は頂点AOやAO Map単体で使うことはないと思われ、 1レイヤ目(UV1)にDiffuseのテクスチャ、2レイヤ目(UV2)に今回のようなAO Map用のテクスチャを入れて乗算合成で表現することになるかなと。Unityと同じですね。 なお、上記の形状は1ポリゴンメッシュで、AO Mapに1024x1024 pixelのテクスチャを使用しました。屋根の上の武器っぽいのを別ポリゴンメッシュに分離して改めてUV展開、とか部品を分けるともっときれいにできるかと思います。 !![Shade 3D] 続続続・AOプラグイン (2014/12/26) ポリゴン数が多い場合の検証。 たまたま見ていた記事で、Firefox OSスマホ「Fx0」のstlをダウンロードしたのでこれで検証。 http://www.itmedia.co.jp/news/articles/1412/25/news116.html ↓102658 trianglesのUV自動展開で、71 sec。 {{ref_image AOMap_fx0_02_20141226.jpg}} ↓AO Mapの計算。36144 trianglesは 6 sec、102658 trianglesは16.6 sec。 {{ref_image AOMap_fx0_01_20141226.jpg}} UV自動展開はもう少し最適化しておいたほうがいいか。AO計算はスレッド対応したけど、UV展開はスレッド対応してないのでそれが影響してるのかな。 これくらいのハイポリになると、もはや2Dテクスチャとしてのペイントは厳しそうなので、3Dペイント機能がいるかもしれないですね。 !![Shade 3D] ポリゴンメッシュでキャラクタを作成(ボーン編)(2014/12/26) ポリゴンメッシュでキャラクタを作る記事のボーン編が公開されました。 http://shade3d.jp/store/marketplace/articles/polydecharacter/bone.html 徐々にポリゴンメッシュでモデリングしたキャラクタが動き出し、 fbx経由でUnityやMMDに持っていくという一連の流れが今後記事となる予定です。 今回のボーン編で、こちらで開発した「BoneUtil」プラグインの解説も書いています。 Shade 3Dとその他のツールのボーンの性格の違いも書かせていただきました。 このあたり非常に大事な知識ですので、他ツールと連携される方は理解されるとはかどるかと思います。 なぜ「BoneUtil」プラグインを開発したのか、というのが解説できていれば幸いです。 個人的にもないと非常に困ったりする機能。Shade 3Dで完結することはほぼなく、だいたいは終着点はUnityだったりしますので。 ただ、Shade 3D内で完結する場合はもしかしたらいらない知識かもしれないですが。 !![Shade 3D] MMDのPMDとPMX (2014/12/26) MMDのモデルファイルフォーマットとして、PMDとPMXがあります。 現在のShade 3DのMMD ExporterではPMDのみとなりますが、原稿記事を書いていて 作例でのボーン名の名称の長さ制限(最大でも20バイト)が面倒なので、、 PMXを先に対応したほうがいいかもしれん、と考えが改まってきました。 Shade 3D内の表情(頂点モーフ)の再現をなんとかしてから、とも考えてたけど、 作業フロー内でなんとかすることにします。 今、プラグインはMMD Exporter/BoneUtilの2つを公開済み、 もう出来ていて最終検証しているUVプラグイン/AOプラグインの2つをじきに公開予定、 これら含めた記事で底上げ、なので近々に割と動きがあるかと。 追記: なお、このへんは私の個人プロジェクトなのでいくらリークしてもOKなのですよ。 というか、昨今は情報をこまめに出したほうが印象いいよね、減るもんじゃないし。 !![Shade 3D] 続続・AOプラグイン (2014/12/25) なお、AOについてはShade 3Dのレンダラで使用するという目的ではなく、 どちらかというとUnityなどのリアルタイムでフェイク陰影を出す手段としての利用が主です。 個々の形状に対して頂点AOもしくはAO Mapの計算を行い、これを表面材質にShaderとしてもしくはテクスチャとして割り当てるという操作を行ってます。 !![Shade 3D] 続・AOプラグイン (2014/12/25) ローポリキャラの検証。光源はナシ、環境光を強めに設定してAO結果だけ分かりやすいようにしてます。 地面はいずれもAO Mapで焼付け。 ↓面は以下のようになってます。テクスチャはAO Map時のもの。 {{ref_image aomap_10_20141225.jpg}} ↓頂点AO、レイトレでレンダリング。 {{ref_image aomap_12_20141225.jpg}} 頂点AOの場合は、頂点に対してAO計算結果を頂点カラーとして割り当てるため、分割が足りなかったり、さえぎられた頂点で影が広がったりします。 計算は速いです。 ↓AO Map、レイトレでレンダリング。計算後は単なるテクスチャマップになります。 {{ref_image aomap_11_20141225.jpg}} テクスチャに対して濃淡を描画するため、さえぎられ具合は頂点AOよりも精度高いです。 しきい値のパラメータをいくつか用意しており、精度を上げると時間がかかります。 AO Mapを実現するには、UVが重なることがないようにテクスチャに展開されている必要があり、 そのUV展開については別プラグインで提供する形態をとってます。 次回はハイポリの例を書きます。 頂点AOの計算をスクリプトで引き出して再利用できるように試みたのですが、 スクリプトからプラグインの属性にアクセスできなかったので断念。 Shade 3D内(レンダリング)だけの頂点AOになってしまいました。 何か外に出す仕組みを提供できればいいのですが、、、 AO Mapについては単なるテクスチャ生成機能なので、外に持っていってUnityなどで活用できます。 !![Shade 3D] AOプラグイン (2014/12/24) 最終確認中。 以下は、木含めてすべてShade 3D上でモデリングしたもの。 ↓AOなしのシーン {{ref_image aomap_04_20141224.jpg}} ↓木で頂点AO、石と地面でAO Map使用。図形ウィンドウでは頂点カラーとしてのAOは反映されません。 {{ref_image aomap_01_20141224.png}} ↓AO結果だけレンダリング(レイトレーシング : 2秒) {{ref_image aomap_03_20141224.png}} ↓AOを加味したレンダリング(レイトレーシング : 2秒) {{ref_image aomap_02_20141224.jpg}} 次、キャラクタでの検証データで追記します。 AOが出来れば、次はPBR Shaderほしくなりますね。 追記: おっと、AO Mapでガンマの調整を忘れてました。 単なるテクスチャとして生成されるので、テクスチャとしてのガンマ補正をかけたものは以下。 {{ref_image aomap_05_20141224.jpg}} 頂点AOでも、ガンマ調整のパラメータを用意してます。 !!Tipsの公開予定 (2014/12/24) Shade 3D関連は公式のほうに出張記事を書くとして、私のほうで作成したプラグインはShade 3Dマーケットプレイスに公開する形。 個々のプラグインのTipsも公式に書くことにします(すでにいくつか寄稿済み、ただ、まだまだある)。 Substance PainterやDesignerとかと絡めた他ツールとの連携Tipsも大事と考えていて、 このあたりはShade 3D公式だと記事にしにくいと思いますので、Qiitaに書くようにします。 Unity関連は書いてもいけると思うけどね。 今年末にいろいろバタバタ動き出したのでまだ走り出し段階な感じですが(私はちょっかいを出すだけ〜)、来年このあたりも軌道に乗せたいところですね。 機能拡張プラグイン、Tips、それに絡む要望などなど、いろいろ絡めていければ。 これらの流れの本音は、OculusRiftでのVR-HMDやモバイルのアプリ/ゲームを作りやすい環境を作っておきたい、という自分自身の願望、その一点です(^_^;; !!続続・Substance Designer (2014/12/23) 「計算は速いけど少しぬるい気がする」は、すみません、私のAO計算に間違いがありました。 サンプリングが局所的になってました。 ただ、SDのほうでAO計算のミスか面の境界が見えることがありましたので、まだいろいろ検証の必要がありそうです。 !!続・Substance Designer (2014/12/22) Substance Designerをいじってみて、テクスチャは3Dテクスチャじゃなかったです。 2Dテクスチャとして、計算でテクスチャを作成するノードも存在している(もちろん画像もノードにできる)。 それと、メッシュをインポートするにはUVをしっかりと設定していないといけないみたいですね。 AO Mapの計算もできましたが、計算は速いけど少しぬるい気がする。まだパラメータを操りきれてないのでもうちょっと掘る予定です。 {{ref_image sd_20141222.jpg}} !!Substance Designer (2014/12/20) 「Substance Designer」をSteamで購入。今、40%引きです。 {{ref_image substance_designer_20141220.jpg}} これで、AllegorithmicのBitmap2Material/Substance Painter/Substance Designer、の三種の神器がすべてそろったことに。 まだほとんど理解してないけど、 sbsがノード構成を保持したファイル/sbsarが最終的にベイクされたもの、と見たらいいのかな。 「プロシージャル」なので、3次元テクスチャとみていいのだろか(ウソ書いてるかもしれない、、、)。 sbsarはUnityでも読み込めるのですね。 たとえば、これをShade 3Dで読み込むとしたら何かしらSDKがあるんだろうか? プロシージャルに使えるのであれば表現力はかなり上がると思うけど、Shade 3D側のマテリアル(表面材質)の構成自身、そろそろ見直さないといけないだろうなぁと思ったりも。 追記: Allegorithmicの製品はすべてそうですが、リアルタイムを視野にしているようで、 マッピングするテクスチャはDiffuse/Normal/Specular/Roughnessなど1枚ずつに集約されてます。 そこにたどりつくまでの「ノード構成」(Substance Designer)であったり「レイヤ」(Substance Painter)であったりを操るのですよね。 対してShade 3Dは、テクスチャのない基本設定があり、そことは別にマッピングレイヤとして 「Diffuse」「Normal」「Specular」などを与えたものを重ね合わせる構成。 個々のマッピングレイヤにそれぞれ反転や反復数などのパラメータがあるため、これを再現するとなるとかなり大変、というか、あきらめたほうがいい。 リアルタイム向けに(Unityなどと密に連携)となると、そこを理解した上で1レイヤしか使わないように縛りを入れる、とする必要がでてきます。 !!「ポリゴンメッシュでキャラクタを作成」連載開始 (2014/12/20) Shade 3DのTips類は、ポリゴンメッシュでモーション含めたキャラクタを作成し最終的にUnityやMMDに持っていって活用する、までの一連の流れを書くことにしました。 で、掲載場所ですが http://shade3d.jp/store/marketplace/articles/polydecharacter/modeling.html に出張記事として載せていただくことになりました。 Shade 3Dご本家です。これだったらさすがに目立つだろう(^_^;; 私の想いとしては、Shade 3Dユーザーだったらこれくらいすぐ作れるよ、的なレベルまでの底上げと、挫折した方ももう一度チャレンジしてみてほしい、というのがあります。 すみません、私、自由曲面はほとんど使わず、しかも透視図だけでモデリングする派なので(これで昔、Shadeユーザーとバトルしたことある(^_^;;、結局どっちが強いか結論でなかったです)、人によってはとっかかりにくいかもしれません。 ある程度使いこなせるようになったら、後はツールじゃなくて個々人のセンスの問題になってくるかなと思います。効率化の課題はまだShade 3Dにありますが、それは今後要望していくとして。 いくつかすでに寄稿してますが結構ボリュームがあるため、結構長めの連載になるかと思います。 !!Tips類をさらに目立つ場所に (2014/12/18) 予定変更で申し訳ない、Tips類は一部はQiitaに、大枠はもっと目立つ場所で展開するように水面下で進めてます。 記事は書き始めてまして、また公開段階になったら告知します。 個人でTipsをとなると、昨今の検索エンジンのひっかからない現象でなかなか伝えにくいなと。 検索エンジンがバカになったというよりも、広告やアフィサイトなどの汚染かと考えてます。 !!まとまったTips類はQiitaに移行することにしました (2014/12/13) 日記に情報垂れ流しで埋もれるのはもったいないので、Shade 3DやSubstance PainterなどのツールのTips類は「Qiita」に移すことにしました。 http://qiita.com/ 私が実際にリアルタイム向けにモデリングしてUnityに形状などを持っていく際の作業内容やフローなど、業務で役立つ情報をマニュアル的に書くことにします。 ちょっと待ってね。 !![Shade 3D] 続・BoneUtil (2014/12/13) 日記に垂れ流すと流れてしまうので、Shade 3Dの使い方のサイトを別途作ってもいいかもしれないですね。 ちょっと考慮してみます、GitHubとか共有しやすいサービスがいいのかな。 追記: GitHubやQiitaはどっちかというと開発者要素が強いか、、、むむっ。対クリエイタ向けのいいサービスがないか検索中。 !![Shade 3D] BoneUtil (2014/12/13) http://shade3d.jp/store/marketplace/ で無料でダウンロードできるShade 3Dの「BoneUtil」を細かく機能説明してから「MMD Exporter」について説明していくことにします。 できればShade 3D マーケットプレイスにこういう場ができればいいのですが。 大事なTipsです。 Shade 3Dのボーンを理解した上でMMDを、という順番で説明するのはボーン使用で守らないといけない注意点があるからです。 Shade 3Dのドキュメントには記載されておらず、他ツールとの連携前提でShade 3D内のボーンの挙動と合わせる必要があります。 これは、MMDに限らずUnityに渡す場合でも。Shade 3Dの世界だけではそのままでも問題ないのですが、外とやり取りする場合は必要な知識です。 この日記では何回か書いてますが再度。 腕から先で説明。 ツールボックスの「パート」-「ボーン」を選択してボーンを配置した場合。 {{ref_image shade_bone_01_20141213.png}} この場合は、変換行列に「回転」が入ってしまいます。 {{ref_image shade_bone_02_20141213.png}} この段階で、他ツールにfbx経由などで渡した場合は互換性が取れなくなる可能性が高いです。 Shade 3D内のボーンについては、'''ボーン本来が持つ変換行列の「スケール」「せん断」「回転」は指定してはいけません'''。 あえてきつめに「これはしちゃダメ」と制限をつけてかかないと伝わりにくいので、そう書いてます。 !ボーンの変換行列で不意な回転が入るのを防ぐ 回避する方法としては、 ボーン生成時のツールパラメータで「自動で軸合わせ」をOffにしてからボーンを配置。 {{ref_image shade_bone_03_20141213.png}} この後ボーンを配置すると、ボーンの変換行列として「スケール」は(1, 1, 1)、「せん断」「回転」は(0, 0, 0)のままになります。 これは、ボーンを選択したときの形状情報ウィンドウでも変更可能ですが、あとから変更しても変換行列の「スケール」「せん断」「回転」がクリアされるわけではありません。 {{ref_image shade_bone_04_20141213.png}} !パート間移動で回避できない問題もある ただ、上記を注意してもShade 3Dの操作上、スケールやせん断が入るパターンがあります。 Shade 3Dのパート間移動です。 パートの中にポリゴンメッシュやボーンを入れて、パートのスケールや回転を変える。 このパートから外にボーンを出した場合。 {{ref_image shade_bone_05_20141213.png}} ↓ボーンの変換行列でスケールと回転が入ってしまった。 {{ref_image shade_bone_06_20141213.png}} これが何を意味するかというと、人体ではよくある左だけボーンを配置して右を反転コピーして複製、でどうやっても変換行列のスケールもしくは回転が入ってしまう、ということになります。 私はこの回避策はわからなかったりします。 なぜ、ボーンの変換行列にスケールやせん断/回転が入っていたらダメなのか、 というのは後々説明します。 もうちょっとほぐしてからじゃないと説明しくにくいですので。 ということで、「あれ、ボーンって手間かからない?」というのがBoneUtilツールを作った発端になります。 このあたりを理解すると、おぼろげながらBoneUtilの存在意義が見えてきます。 !まとめ *Shade 3Dでのボーンの変換行列の「スケール」は(1, 1, 1)に、「せん断」「回転」は(0, 0, 0)にしよう。これはすべてのボーンに対してです。 !!The Old City: Leviathan (2014/12/10) Steamで「The Old City: Leviathan」というゲームが1000円ほどだったので購入。 UE3で作ってるそうな。 http://postmodsoftworks.com/ 特にアクション操作もなく、探検するだけのもの。雰囲気がMYSTに近いなぁと思いました。そんなに時間かけずにプレイできるとのこと。 {{ref_image the_old_city.jpg}} しかし、英語のナレーションが入るので英語できないと楽しみが半減しそう(^_^;; 英語は相変わらずぜんぜんダメなので、いい機会かな。 !![Unity] キャラクタの動き (2014/12/08) 年末までに間に合うだろうか、、、、。キャラクタの動きをUnityに持ってきて再生。 こんな感じになってます。 {{h264player http://ft-lab.ne.jp/files/shade/boss_army_ant_20141208.mp4,width=640,height=480}} この他、idle/walkなどさまざまなパターンをAnimator Controllerに登録してます。 後、やっぱりバンプ/法線マップ表現はモバイルでは厳しい感じだったのでDiffuse(RGB)/Gloss(A)マップのみ。 Shaderは「Mobile/Bumped Specular」のNormalmapをカラにしたもの。 SkyShopはモバイルでも使えるのですが、Draw Callが増えるので今回は使わないことに。 しかし、モバイルだと3Dをしっかり作りこんでもぱっとしないんだよなぁ。 見せ方の問題もあるけど、、、。 !![SubstancePainter] [Shade 3D] [Unity] 続・マテリアルを似せる (2014/12/08) SubstancePainterのテクスチャエクスポート時に、下記のように参照してみました。 {{ref_image substancePainter_06_20141208.png}} !Shade 3D Shade 3Dでは、表面材質の基本設定/効果設定で *拡散反射 1.0 *光沢1 0.0 *サイズ 0.0 *反射 1.0 *荒さ 1.0 *フレネル 0.68 それ以外はデフォルト値。 表面材質のマッピングレイヤで *イメージ/拡散反射 - diffuseのテクスチャを割り当て *イメージ/反射 - specularのテクスチャを割り当て *イメージ/反射 - roughnessのテクスチャを割り当て/色反転、乗算合成 *イメージ/荒さ - roughnessのテクスチャを割り当て/色反転 *イメージ/法線 - normalのテクスチャを割り当て としました。 {{ref_image substancePainter_05_20141208.png}} 「拡散反射」は、SubstancePainterのエクスポートするbase colorでなくdiffuseのテクスチャを使うことで、反射ピクセルの場合に黒に近づけるようにしてくれるようです。 「荒さ」は、Shade 3D内の挙動としてはテクスチャの輝度が0.0に近づくほど荒くなり、1.0に近づくほど全反射になるのですね。なので、色反転が必要。 「反射」は、metallicでなくてspecularのテクスチャを使用し、これにroughnessを反転させたものを乗算しました。 ↓パストレでレンダリングすると、以下のようになりました。 1つ前の日記にそれなりに近づけたでしょうか。 {{ref_image substancePainter_03_20141208.jpg}} ↓メカ蟻は以下のような感じに。SubstancePainterでの表現は、2014/12/06の日記を参照。 {{ref_image substancePainter_04_20141208.jpg}} !Unity Unityでは、これはSkyShopを使ってますが {{ref_image substancePainter_02_20141208.jpg}} 「Marmoset/Mobile/Bumped Specular IBL」にそれぞれ、 diffuse/unity5_specgloss/normalのテクスチャを与えてみました。 これで、モバイル環境でもリアルなテクスチャ表現ができます。 !![SubstancePainter] マテリアルを似せる (2014/12/08) 数ヶ月前に、SubstancePainterのマテリアル表現をShade 3DやUnityで似せることはできないか試行錯誤してたんですが、すみません、まだ一致してなかったです。 ↓SubstancePainterでのPBR {{ref_image substancePainter_01_20141208.png}} SubstancePainterは、base color(diffuse)/height/roughness/metallicでさまざまな材質を表現できるけど、他ツール上でそれぞれのテクスチャの組み合わせで表現できるかは再度チェックの必要あり。 これらの検証はまた後で。 !!MMDとShade 3DのMMD Exporter (2014/12/07) http://shade3d.jp/15/marketplace/ でのShade 3Dの「MMD Exporter」「BoneUtil」を使って、オリジナルキャラクタをMMDに持っていけるようにするということについて説明。 その前にMMDについて。 MMD(MikuMikuDance)については、 http://www.geocities.jp/higuchuu4/ からゲットできます。フリーのモーション付けツール。ニコニコ動画などではおなじみですね。 MMD全般については、VPVP wiki - MMDのはじめかた http://www6.atwiki.jp/vpvpwiki/pages/187.html から参照するのがよいかと思います。 MMDは、最初期はVOCALOIDのキャラクタ(初音ミクやKAITO/MEIKOなど)を動かすツール、というのでニコニコ動画にアップされたのが私としては初見だったでしょうか。 ファイルフォーマットは公開されていなかったのですが、人気が出るにつれて有志の方が解析し、MMD用ツールを作る方で出てきたり、MMD用のモデリング/モーションデータをアップする方がでてきたり。 で、今現在、草の根的に広がってます。 MMD用ツールとしてはPMDEditor(Win用単体ツール)が便利です。解析でも使わせていただきました。 http://www6.atwiki.jp/vpvpwiki/pages/118.html 主なファイルフォーマットとしては、 *PMD ... 旧モデルデータ *PMX ... 現行のモデルデータ *VMD ... モーションデータ *VPD ... ポーズデータ があります。Shade 3DでのMMD ExporterではPMD/VMDのエクスポートに対応してます。 PMXについては私自身まだ解析できてない点があるので、アップデート時ですね。 トゥーンエッジを個別につけたりエッジの太さ調整など、細かい表現が可能になってます。 これについては、PMD EditorがPMX出力対応ですのでそちらで調整できます。 おそらくShade 3D上では、PMX対応するとなると透視図の表現のリッチ化が必須かと。 !Shade 3Dの「MMD Exporter」 Shade 3D上では、 1ポリゴンメッシュでキャラクタを作成し、それに対して'''決められたボーン構造'''をバインドするようにします。 {{ref_image shade_mmd_01_20141207.jpg}} ボーン(リグ構造)については手作業では手間なので、MMD Exporterに添付しているテンプレートshdを使うか、BoneUtilプラグインを使うようにしたほうが早いです。 ボーン配置時は守らないといけないルールがあります(ドキュメントでも記載済み)。 この日記でも過去書いていますが、ようはゲームなどリアルタイム向けで使うには 守らなければならないこと、でMMDに限った話ではない約束ごとがあります。 また、別で書くようにします。 材質については、無限遠光源の「環境光」、表面材質のパラメータの拡散反射/光沢1/サイズ/透明/環境光で色合いを調整します。 Shade 3DからPMD形式でエクスポートし、MMDに読み込むとこんな感じ。 {{ref_image shade_mmd_02_20141207.jpg}} 後は好きに動きをつけてみましょう。 Shade 3Dの役割としては、モデリングとマテリアル設定/ボーンの配置/スキン割り当てまでで、後はMMDに任せたほうが楽ではあります。 Shade 3DからMMD向けのデータを作成する、もしくは公開する、という場合はさほど問題にはなりませんが、 「有志の方が作ったMMDのファイルを改造したり流用する」のは問題になることがあります。 それぞれ作った方の権利がありますので、実際にこのあたりでトラブルがあったこともあるそうです。 ですので、Shade 3DにMMDデータを読み込む「MMD Importer」は個人的にはあったほうがいいですが、このへんの課題があります。 といいつつ、MMD Exporterを出すよりも数年前、MMD Importer(for Shade)のほうが先にできてたのですよ。テスト用で非公開ですが。 もうひとつ、インポータを公開する際は物理運動の再現とフェイシャルアニメーションの再現が、Shade 3Dのベース機能として必要になりますね。 ということで、MMD Importerを実現する際はいくつかクリアしたほうがいい課題を牽引できるかもしれないとは思ってます。 MMDやボーンについてはまだまだ語りつくせませんので、いろいろTipsなど書いていくことにします(たとえば、定番アップロードサイトとか、さすがにドキュメントには記載できなかったりする(^_^;;)。 !!ペイントの作業フロー (2014/12/06) ↓モデリングとUV展開をShade 3Dで。 {{ref_image shade_uv_20141206.png}} UVを重ならないように展開する開発中のプラグイン(もうできていて、モバイルアプリためのモデリングで使いながら検証中)を使用。 ↓fbx出力して「Substance Painter」でペイント。 {{ref_image substance_painter_01_20141206.jpg}} 汚れやサビ表現に強く、リアル系3Dペイントではすごく重宝してます。 http://www.allegorithmic.com/products/substance-painter Substance Painterでペイント後、テクスチャ画像をエクスポート。 生成されたテクスチャをShade 3Dに持っていってレンダリングで使用、もしくはUnityに持っていく。 の流れを確立できれば、テクスチャ/マテリアルはずいぶん楽になりそうです。 後はスカルプトですね。これに関しては、MeshMixerが無料で使えます。 http://www.meshmixer.com/ Meshmixerはまだまともに試してないですがobjやstlをインポートできます。いろんな無料や(安い)ツールを駆使すると表現力を高めやすくなるかもしれないですね。 面白いことに、ここで書いたツール群、どれも主要機能がかぶらなかったり。 Shade 3Dはモデリングはできるが3Dペイントやスカルプトはできない、Substance PainterはペイントはできるがモデリングやUV割り当てはできない、MeshMixerはスカルプトはできるが、モデリングやマテリアル/テクスチャ作成はできない。 Unityは、ゲームやシーン作成はできるがモデリングやペイント/UV割り当てなどはできない。 ので、全体像を描くと関連図みたいのができそう。ということで、私のほうでは作業フローがある程度確立されてたりします。中心にUnityがいて、その周りに各種ツールが取り囲んでいる感じ。 !![Shade 3D] 開発中のプラグイン (2014/12/04) こちらにはまだ紹介してない開発中のプラグインがありました。 今年は難しいので来年かな。 !木を生成するプラグイン {{ref_image tree_leaves_02_20141113.png}} SpeedTreeという木を生成するツールがあるのですが、もう少し面数を削減したモデルがほしいのと、成長機能がほしいので。 SpeedTreeの高いバージョンを買う予算がないのでケチるために開発。 上記は、レイトレーシングのレンダリング結果ですが、木でVertex AO、地面でAO Mapを使用しています。これも開発中のプラグインの機能になります。 木の表現については個人的にはAO(Ambient Occlusion)必須。パストレでも木の葉は表現できるのですが、時間がとてもかかるのと葉の裏の透けた感がどうしてもでませんでした。 !SVGインポータ illustrator買うお金ないな、ということでSVGを作図に使えるようにするため開発。 Inkscapeなどで作図したSVGファイルをShade 3Dにインポートするプラグインです。 {{ref_image shade_01_20141129_2.png}} インポートした線形状を直接利用する目的ではなく、あくまでも下絵用です。これを下書きに精密なモデリングをするのが目的です。 上記では2点間の距離の表示やテキストが図面に表示されていますが、この部分はプラグインの「行儀の悪い実装」で無理やり実現してるため、これは提供できないものになります。 CADのようにきっちりとモデリングしたい場合、数値表示と数値入力はほしいところではありますね。 !![Shade 3D] 続・Shade 3D マーケットプレイス (2014/12/04) 個人的には、Shade 3D専用のプラグイン/スクリプトは集約の場としては便利かと思いますが、コンテンツの充実にも期待したいところ。 モバイルのゲームやOculus向けのアプリを作る場合、UnityだとAsset Storeを活用するのですが、なかなか場面にフィットしたコンテンツ(3Dデータ)が見つからなかったりします。特に「日本風建造物」は海外コンテンツサイトだと弱かったり、海外の方が目に触れる距離でモデリングできないので当たり前ではありますが。 後、Unity Asset Storeのコンテンツは基本的にUnity内のものなので外のツールに持っていくのは控えたほうがよさそうというのもあり。 こちらは、岩や石、草、木、背景データ(hdr)などが求めるものとして多いかも。 モブなので個性や主張が強いのはダメです、没個性です!というのは意識する必要が。 後々、いくつかは私のほうでもコンテンツデータを登録予定ですが、ゲームだと3DCGとは違った最適化されたデータが必要だったりします。 場面場面に最適なコンテンツを、となるとどうしても幅が必要なので、この手のマーケットは結局量で勝負になるのかなぁ。 と書きながら、実はモバイルアプリ向けのモデリング(アニメーション含む)をここ最近ずっとしてます(^_^;; プラグインはあくまでも自身のアプリ開発でついでにできた効率化のための副産物、という立ち居地に。ツールだから理想の形なんだけど、とにかくわき道にそれること多し。 時間がかかりますよね、リソースの作成は。 後、宣伝ですが、テクスチャ素材に関しては http://www.ft-lab.jp/NaturalTex/ のやつをほとんど使用してます。今現在で368枚分の自然寄りテクスチャ素材があります。 これも数が勝負。まだまだ蓄えないと。 !![Shade 3D] Shade 3D マーケットプレイス (2014/12/04) http://shade3d.jp/15/marketplace/ にて、ft-lab(私)が開発したプラグイン「MMD Exporter」「BoneUtil」が公開されました。 「MMD Exporter」はキャラクタデータをMMD(MikuMikuDance)形式でエクスポートできるプラグイン。 「BoneUtil」は、ボーンの便利ツール群です。 ともに兄弟関係のプラグインで、ボーンを配置するには「BoneUtil」は必須に近い機能を入れています。これは、Unityに渡すモデリングデータを作る際に効率化したい箇所がいろいろあったため開発した、という経緯があります。 めんどくさい「人体ボーンのリグ構造を作る」は一発で作成できます。 このサイトでもちら見せしてますが、 *UV関連のツール群(UVをかぶらないように展開、ベイクなど) *頂点カラー、頂点AO、AO Mapなど も既に形になっていますので、随時公開できればと思います。 情報として公になりましたので、「こうすれば便利!」などのネタは日記にも書いていくようにします。 !![Shade 3D] THETAでのhdrパノラマ画像で実写合成 (2014/12/01) 先月のRICOH THETAで撮影したパノラマ画像を、3つの露出を変えた画像を合成してhdr化したもの。 これをShade 3Dに背景として割り当てて、カメラも合わせた状態(パースマッチングされた状態)でテストアニメーションしてみました。 {{h264player http://ft-lab.ne.jp/files/shade/shade_anim_theta_20141201.mp4,width=640,height=480}} レンダリングはパストレーシング(イラディアンスキャッシュ使用)、背景のIBL以外は光源はナシ。 パノラマ画像だと実写合成もやりやすいですね。 視点位置は変えることはできませんが、注視点をぐりぐり動かしても背景と3D形状はフィットしてます。