!!!独り言日記 !![Shade 3D] 続:木について (2015/02/28) ↓同じくレイトレーシング + AO。 {{ref_image shade3d_tree_01_20150228.jpg}} {{ref_image shade3d_tree_02_20150228.jpg}} モデリングはSpeedTreeじゃなくて、Shade 3Dの開発中の木生成プラグインです。 !![Shade 3D] 木について (2015/02/28) AOUtilに付属のサンプルにある木については、まだまだ開発段階の木生成プラグインを用いてますがしばらくは公開できないため、手作業でモデリングする手順は用意しておいたほうがよさげですね。 木生成プラグインについては、幹のベースを線形状で用意してあげたらあとは自動で幹と枝、葉が作られます。 ↓レイトレーシングでレンダリング。AOも適用させてます。 {{ref_image tree_01_20150228.jpg}} {{ref_image tree_02_20150228.jpg}} テクスチャは用意する必要がありますが、ベータ公開している「自然寄りテクスチャ素材 (Beta)」に随時蓄えていってます。 http://www.ft-lab.jp/NaturalTex/ テクスチャ素材サイトもワークフローの一環ではあります。 !![Shade 3D] ポリゴンメッシュでキャラクタを作成(テクスチャ編) (2015/02/28) 「ポリゴンメッシュでキャラクタを作成(テクスチャ編)」の記事が公開されました。 http://shade3d.jp/store/marketplace/articles/polydecharacter/texture.html 他ツールへ渡す手段やリアルタイムでテクスチャを扱う場合に気をつけること、を中心に説明するようにしました。 3DCG(オフラインレンダリングを主軸とした)をやってると、どうしてもリアルタイムに渡す場合の最適化について見渡せていないことが多いですのでここを守っておいてほしい、という事柄を書いてます。 プログラム視点といえばそうかもですね。ちなみにUnityで開発してるユーザーに会う機会があったときに話をしていると、デザイナーだけどちょっとUnityのScriptかじってる、という方もたくさんいらっしゃいました。 リアルタイム方面に寄っていくと、プログラマはデザインのことを知らないといけないし(何を表現するための技術を掘ったり実装するか)、デザイナはプログラムのことを知らないといけない(ハードウェア制限などを知った上でデザイン)、ということはオフラインレンダリング時よりも知識を仕入れておかないといけないのかもしれないですね。 さて、この次でAOについて説明していくことになります。 AOでは、新しく申請したものを使った新機能についても解説入れていく予定です。 !![Shade 3D] AOUtil ver.1.1 申請しました (2015/02/27) Shade 3DのAO計算プラグイン「AOUtil」ver.1.1の機能追加作業が完了して検証も終わりましたので、マーケットプレイスに更新申請しました。 前回、BoneUtilで更新したときは10日くらいでアップされてましたので、それくらい見ておいたらよいでしょうか。 まだどれくらいでアップされるか探り探りであります。 そして、Shade 3Dプラグイン(本体もかな)でのグラフィック処理としてではないGPU計算(GPGPU)を活用したのは、たぶん初。 今後、このレールを引くことができるかはこれからになりそうですが、超並列で計算したいところはGPU使用でもいいじゃない展開もしていければと思います。 UVUtilプラグインもバージョンアップ予定がありますので、これも対処。 その後にSVG Importer/Exporter、で、MMD Exporterの拡張、となりますかね。 そして、もう3月になりますね、年頭にたてた予定が、、、(汗)。 !![Shade 3D] 続:AOUtil次バージョン (2015/02/25) 2月は28日までしかない!!来週あるかと思ったのにないとは。 「Disk-Area Approximation」のCPU計算とGPU計算を速度比較など(既存のRayTrace式との比較ではないです、新しい方式ね)。 「AOUtil」プラグイン内で実装したものです。 {{ref_image ao_01_20150224.jpg}} GPU化したら、18.7倍速。いかにGPUをいかせる箇所があるか、ですね。 これを既存のRayTrace式で計算すると4秒ほど(パラメータで調整するともっと短縮はできるけど、「Disk-Area Approximation」のほうが滑らか)。 後、nVIDIAの解説で使われていた形状でAO計算。 15163頂点/14968面、でAO Map計算(1024x1024 pixel)で2.5秒ほど。 {{ref_image ao_03_20150224.jpg}} 既存のRayTrace方式と、新しい「Disk-Area Approximation」との比較。 パラメータを詰めると既存方式でも問題ないのだけど、計算時間はGPU使用の新方式のほうが速く計算できます。 {{ref_image ao_04_20150224.jpg}} ↓AOなので、他の光源を混ぜてもそれほど違和感ありません(これに関しては、連載記事で書くけども)。 {{ref_image ao_05_20150224.jpg}} !![Shade 3D] AOUtilバージョンアップ予定 (2015/02/22) 目処がついたのでとりあえず告知。 {{ref_image aoutil_01_20150222.jpg}} Shade 3Dの「AOUtil」プラグインの次バージョンでは以下の対応を行います。AO Map時のオプションを追加。 * AO計算方式として「Disk-Area Approximation」を追加(今までのは「Ray Trace」式) *「Disk-Area Approximation」の場合は、GPUでの計算が可能になります。 きれいになるかというと近似方式ですので、パラメータを詰めると今のRay Trace式のほうが正確にいけます。 が、サンプリングの概念がない理論ですので新方式のほうが滑らかであります。 また、当然GPUを使うので速いです。 ただ、新方式の場合は、テクスチャのアルファ透過がある場合の対処は難しいですので(アイデアはあります)、初回は非透過でのAO Map計算となるかもしれません。 Ray Trace式は、これはリファレンスでまじめなやり方ではありますので、これはこれで残します。これは、従来どおりにアルファでの透過はサポートされてます。 次期としては、2月末の申請になるかなぁ。AOUtilについては、近々更新があるものとしてしばらくお待ちくださいませ。 連載記事でそろそろAOの説明が入るので、それに間に合うだろうか、、、。 たぶん、記事では新方式のほうの説明も入れます。 ということで、(対応が超遅いけど)時代はGPUです!! 追記: おそらくですが、GPUでのAO計算を行う場合は、源流は同じ論文になるかと。 Substance Designerもおそらく同じ計算方式かなぁと。 http://www.4gamer.net/games/032/G003263/20121201006/ の「Object Based Analytical Ambient Occlusion」もおそらく同じものと思われます。 リアルタイムの技術ですが、リアルタイムでは少し重いですね。 !![Shade 3D] ポリゴンメッシュでキャラクタを作成(UV編) (2015/02/21) 「ポリゴンメッシュでキャラクタを作成(UV編)」の記事が公開されました。 http://shade3d.jp/store/marketplace/articles/polydecharacter/uv.html リアルタイムだといかに1枚のテクスチャに詰め込むかが大事。ポリゴンメッシュをどんどんバラしていってUV展開する手順を記載してます。 オフライン3DCGでは特に問題なかったこともリアルタイムでは制限をつけたほうがいい、という内容も増えていきます。 このへん、現状Shade 3D製品に付属のドキュメントには説明がありませんので、知っているか否かだけの知識ですが理解しておくほうが応用が利くと思います。 その次は、テクスチャ作成(描画)についての話題になります。 UV編でちらっと出てきてますが、Photoshop、Bitmap2MaterialやSubstance Painterなども単語として出しました。 Shade 3D公式として他のソフトの名前を出すのはあまりよろしくないのですが(個人的に)、他ツールとの連携記事ですので、ということで許可はいただいております。 Shade 3Dだけで完結できない部分は積極的に他ツールに頼る、も今後大事になってくるかと。 !![Shade 3D] AOUtilプラグインをテコ入れ中 (2015/02/20) AOUtilプラグインのAO Mapの作成はRayTraceでやってる古典的な計算ですが、 面の相関を使った「Dynamic Ambient Occlusion」の論文を読んでます。 「Object Based」とも某所で書いてました。 主にリアルタイム向けなのですが、計算が速いのとそれなりにゴミが出ないように近似してくれるそうで、まじめ計算でないのもほしいなと。 GPU対応できるかは検証中です。 ということで、予定がぶれぶれですが気になってしまったので、AOUtilプラグインを先にてこ入れすることにします。 !![Substance Painter] AOの割り当て (2015/02/20) AOづくしです。 Shade 3Dでモデリング+UV割り当て+AOマップ作成し(UVUtil/AOUtilプラグイン使用)、 それをSubstance Painterに持っていきました。 こんなことできます、リアルタイム。 {{h264player http://ft-lab.ne.jp/files/movie/substance_painter_20150217.mp4,width=800,height=600}} この動画は、以下の解説のための検証用であります。 [Substance Painterの使い方 (5) AO Mapを割り当て編] http://qiita.com/ft-lab/items/5ff1a3dfdf43dde6fc57 また、Substance DesignerでAO Mapを作成する方法を記載しました。 [Substance DesignerでAO Mapを作成] http://qiita.com/ft-lab/items/a3fd0962a203b21f0bd6 !![Shade 3D] AOの理論 (2015/02/17) Shade 3DのAOUtilプラグインは、古典的な半球上のレイを飛ばしたときの交差を計算してます。 Substance DesignerにもAO Mapの計算の機能があるのですが、これのほうが速くてきれいだなぁ。GPUで計算する理論とのこと。 これかな。 http://http.developer.nvidia.com/GPUGems3/gpugems3_ch12.html ちと、こっちもサポートできるように推敲してみます。やることいっぱいありますね(^_^; !![Shade 3D] プラグイン予定 - モーション周辺あれやこれや (2015/02/15) SVGの次になると思いますが、MMD Exporterでの頂点モーフ部やPMX対応部。 頂点モーフ(フェイシャルアニメーション)をShade 3Dで再現、ができないと なかなか表情データをエクスポートするにも検討しにくいので、いくつかその周辺を推敲する必要があります。 頂点モーフ、の前に、MMDの場合は複数のモーフがありますが、 プラグインでなんとか対処できそうなのは「頂点モーフ」「UVモーフ」かなぁ。頂点モーフ以外は知らなかったりするけど(^_^; MMDだけじゃなくて、FBXでサポートされてるかも調査がいりますね。 いずれにしても、モーフをするとなると既存のモーションと同期を取る必要が出てきます。 私は、アニメーションではボーン以外は使わないので(他ツールに持っていくのにその他は不要)、 * ボーンのキーフレームアニメーションと、XYZごとのグラフ表示(offset/rotation) * ボールジョイントは中心位置の変わりに使う(とりあえず) * 頂点モーフ(合成のための影響度のグラフ表示) * Animation Clipの概念を入れたい(音楽のDAWみたいに小節に区切って並べることができるみたいな) * 複数タイムラインを持てないか といった、モーションウィンドウを使わないラッパーのインターフェースも考えておきたいところです。 まだ開発には入ってないですが、MMDのモーフ再現を考える前にこのようなモーションの洗い出しを先にしておこうと思います。 あくまでも、MMDやUnityなど、他ツールに持っていけることを目的にしますので、あんまり整合性は考えないことにします。手の届く範囲だけー。 これは、ちょくちょく情報を出していきますね。 PS. Shade 3D関連ばかり書いてますが、これでもモバイルにシフトしている身ですので、 それはそれで形にしていきます、、、。3D全般でいろいろ模索、と考えていただければ。 !![Shade 3D] プラグイン予定 - ベクトルデータのあれやこれや (2015/02/15) SVG Importer/Exporterのほうが長期戦になってますが、2つ、ちと技術的な壁があるので先に今できている部分だけを出してしまうか、全体を後ろにずらすか考えてます。 !Qtを使っている 内部的にQt(GUIのエンジン)を使用している箇所があるんですが、ライセンスの都合で使用側が関連ファイルを配置してもらう部分があります。 関連ファイル、あわせて60MBほどあるんですよね、、、。 Qtはプラグイン単体のものというわけではなく共有して使う形になるのと、たぶん今後の私のプラグインやもしかしたら他の方が使うプラグインでも利用する形になると、バージョンが衝突する可能性があるかも。 ちょっと提供時の敷居が高いので(開発はかなり便利になるのですが)、はずしたバージョンを先に設けて出すか検討中。 !自由曲面をエクスポートするのは意外と難しかった 自由曲面はベジェ曲線を組み合わせて面にする、というものですが、 これを陰線消去しつつベジェとして曲線や塗りをSVGで出そうとしてみました。 が、自由曲面に限らず「3次元の曲面」はすごい難易度の高い問題ってのが分かりまして。 試行錯誤はfacebookに書きましたが、当分は自由曲面はポリゴンメッシュに変換してSVGに出すか、陰線はしないで出す、と機能削減しておこうかと。 まだまだ研究が必要ではあります。曲面がらみで、Shade 3Dの自由曲面で実は今解決できていない部分もあります(そこは連絡済み)。ここではすみません、書かないですが。 ということで、先にいくつかの機能を省いたバージョンを出す方向性も模索することにします(無料か有料かは検討中。予定の機能を盛り込む前なので無料にしてしまうかも)。 SVGやってて思ったのですが、ベクトルデータ出力って、ai/swfなどありますが途中まではまったく同じ流れなんですよね。 ようは、「塗り」(今のShade 3Dプラグインのエクスポータではないかな)と「線/曲線」が出ればいい。その先は、フォーマットによって変わるだけ。 このへん、ライブラリ化して共有できてもよいのではとも思ってます。 半分、研究と実験も含める形になりそう。 !![Shade 3D] BoneUtil ver.1.1.0 (2015/02/13) 「Shade 3Dマーケットプレイス」にて「BoneUtil」がver.1.1.0にバージョンアップしました。 http://shade3d.jp/store/marketplace/ft-lab/boneutil/boneutil.html 変更点は以下のとおりです。 * 「人体ボーンの生成」でHumanIK形式でオプションの目を指定した場合に、LeftとRightのボーン名が逆になっていた問題を修正 他のプラグインもバージョンアップしたらお知らせしますが、バージョンアップの通知含めてシステムがまだ分かりにくいですね。 時間かかるかと思われますが、今後、改善されていくと思います。 私のほうもテストケース的に協力しながら、です(^_^;; !![Substance Painter] AO Mapの活用 (2015/02/11) Substance Painterで、レイヤの乗算でAO Mapの反映は簡単にできますね。さっき試して気づきました。 AO Map自身はShade 3Dで作成(Substance Designerでもいけます)。 {{ref_image substancePainter_01_20150211.png}} {{ref_image substancePainter_02_20150211.jpg}} 後でQiitaに書いておこう。 !!The Vanishing of Ethan Carter (2015/02/11) Steamで「The Vanishing of Ethan Carter」というインディーズのゲームを購入。 現段階で、グラフィックとしては最高峰のうちの1つでしょうね。 「フォトグラメトリー」といいう技術が使われているとのこと。グラフィックエンジンはUE4。 Terrainでもすごく参考になります。 {{ref_image 2015-02-11_00001.jpg}} {{ref_image 2015-02-11_00002.jpg}} しかし、数時間プレイしてると酔った、、、、。 !![Substance Painter] テクスチャをペイントする (2015/02/08) Substance Painterの初歩的な使い方をQiitaのほうにアップしました。 「SubstancePainter」タグでとりあえず4つ。 http://qiita.com/tags/substancepainter ↓以下にて、Substance PainterからShade 3Dにテクスチャを持ってくる組み合わせを記載してみました。 http://qiita.com/ft-lab/items/98cd34a7a9379d64e187 Shade 3Dでの「ポリゴンメッシュでキャラクタを作成」記事で、UV指定の後でテクスチャを作成する処理を解説する際に(他ツールの説明になるため)Qiitaのほうを参照できればと思います。 !![Shade 3D] ポリゴンメッシュでキャラクタを作成(人体/Unity Mecanim 編、MMD編) (2015/02/07) 連載記事の「ポリゴンメッシュでキャラクタを作成」の「人体/Unity Mecanim 編」と「MMD編」が公開されました。 ポリゴンメッシュでキャラクタを作成(人体/Unity Mecanim 編) http://shade3d.jp/store/marketplace/articles/polydecharacter/human.html ポリゴンメッシュでキャラクタを作成(MMD 編) http://shade3d.jp/store/marketplace/articles/polydecharacter/mmd.html 「BoneUtil」「MMD Exporter」のプラグインを使って効率化しています。 もう半分以上は、他ツールに渡すための解説になってきてますね。 そして、一通り流しての解説のラストは「UV」「テクスチャ」になります。 ここで、リアルタイム/ゲーム向けのUV展開やAOとかの話になってくる予定です(たぶん、1回分じゃ厳しいので複数に分けて)。 で、本筋は「Shade 3Dで」ではなくて他ツールで活用するには、という点に焦点を絞ります。 Shade 3D主体の解説じゃなくて他ツールを軸足にした解説、という視点なのだけど、本来のレンダリングツールとしての解説は入れてないんですよね。 ライティングとかレンダリング設定とか。カメラアングルとかもあるかな。 これは「ポリゴンメッシュでキャラクタを作成」の流れとは別になりますので、他の方にお任せしたいと思います。 しかし、3DCGって覚えることが多いですよね。 !![Shade 3D] BoneUtil ver.1.1 更新予定 (2015/02/02) Shade 3D マーケットプレイスに公開している「BoneUtil」 http://shade3d.jp/store/marketplace/ft-lab/boneutil/boneutil.html で、不都合を見つけたので更新したものを申請しました。 修正点は以下になります。 *「人体ボーンの生成」でHumanIK形式でオプションの目を指定した場合に、LeftとRightのボーン名が逆になっていた問題を修正 じきに更新されると思いますので、そのときまた日記に記載します。 その他の公開しているプラグインも、不定期に更新することになると思います(機能追加含む)。 !![Shade 3D] [Substance Painter] 続・テクスチャをエクスポート (2015/02/01) なんとかまとまってきたので、これらについてはQiitaにTipsを書くことにします。 ↓ Substance PainterでいくつかMaterialを変えて球を塗ったもの {{ref_image substance_painter_01_20150201.jpg}} 検証用のサンプルです。 これは、Substance Painter上のBaseColor/Height/Roughness/Metallicの4枚のテクスチャだけで表現されます。 このときのテクスチャをエクスポートし、Shade 3Dに読み込んで「テクスチャを変えるだけで」同じような表現ができるかどうか、というが主旨です。 それっぽくできるのは確認済み、ただし、マッピングレイヤが複雑化しますが。