トップ 差分 一覧 ソース 検索 ヘルプ PDF RSS ログイン

独り言日記(2008/03)

独り言日記

fbxでのマテリアル(2008/03/31)

fbxの構造でのマテリアルはややこしいのですが、オブジェクトごとにレイヤがあり、その中に「マテリアルマッピング」と「テクスチャマッピング」が存在する、という構成のようです。

マテリアルマッピングはテクスチャを考慮しないもの、テクスチャマッピングはテクスチャ(イメージ)を考慮したもの、で多重にマルチレイヤ化できる仕組み。厳密には「マテリアル」という言葉は、レイヤ内に入っている要素のことをさしているのかな(レイヤはそれよりひとつ上の層)。

レイヤ0
  マテリアル0
  マテリアル1
  マテリアル2
  テクスチャ0

レイヤ1
  マテリアル0
  テクスチャ0
  テクスチャ1
 ...

といった感じ。

ひとつのレイヤ内に複数のマテリアルまたはテクスチャが存在するのですが、これらはひとつのオブジェクト内でポリゴンごとに割り当てを変えることができる構成みたいです。

KFbxLayerElementMaterial::GetMappingMode ... マテリアルの場合
KFbxLayerElementTexture::GetMappingMode  ... テクスチャの場合

でのreturn値として「KFbxLayerElement::eALL_SAME」が返ってくる場合はすべてのポリゴンで同じマテリアルまたはテクスチャを採用、「KFbxLayerElement::eBY_POLYGON」が返ってくる場合は各ポリゴンごとに別々にマテリアルまたはテクスチャを採用、といった感じ。

また、テクスチャの場合はレイヤごとにdiffuse/specular/emissiveなどを取得できます。このときにUVもレイヤごとのdiffuse/specular/emissive別に割り当てることができるようです。

UVに関して面白いのは、オブジェクト(ここではポリゴンメッシュ)の各頂点ごとのUVを持つことのできる設定と、ポリゴン別の頂点ごとにUVを持つことができる設定がある点。レイヤごとのUVにて

KFbxLayerElementUV::GetMappingMode

で取得できる値が「KFbxLayerElementUV::eBY_CONTROL_POINT」の場合は頂点ごとのUV、「「KFbxLayerElementUV::eBY_POLYGON_VERTEX」の場合はポリゴンの頂点ごとのUVになってます。レイヤのマテリアル(KFbxLayerElementMaterial)、テクスチャ(KFbxLayerElementTexture)、UV(KFbxLayerElementUV)にて「GetMappingMode」があるのですが、その戻り値を統一して扱うようにしている、ってのになるほどなぁ〜と思いました。そのニヤっとする構成にちとこだわりを感じますねぇ(プログラムマニアなら分かるはず、、、ですよね?)。

でも、正直、ややこしい(^_^;;。少し旧フォーマット的なニオイはしますが、いろんな状態を吸収できるフォーマットにはなってますね。これの欠点としては、シーンで使用しているマテリアルを別リストとして持つ、テクスチャを別リストとして持つ、という構成にできていない点(そのような関数はないようです)。ただ、UVはマテリアルやテクスチャよりも形状(ジオメトリ)に直結する情報ですのでこのあたりは わざと、なんですかね。この部分は、構成がどうも古い感じがする・・・。

しかし、マテリアルがBlinnとPhongのモデルの情報しかないけどこれはいいとして、なぜか屈折率の情報を保持するパラメータがない・・・。なぜだろう?

fbxをShadeに読み込む(2008/03/29)

fbx sdkのサンプルシーン(humanoid.fbx)をShadeに読み込んでみました。

ボーン(スケルトン)はLimbのみ開いた線形状でつなぐようにしています。このhumanoid.fbxの読み込みではボーンによるスキン変形も考慮しないといけないため、その部分もfbx SDKのサンプルを参考に渡すようにしました。これでそのままボーンやスキンを使うアニメーションへの流用ができそうです。

アニメーション対応は今回は行わないのですが、ShadeのプラグインSDKにあるskin_class/skin_bind_classあたりに頂点ごとにウエイト値を割り当てることができる仕組みがあるので、もしかしたら対応できるのかもしれません。

fbx sdk(2008/03/27)

某ツールの基盤とするシーンフォーマットとしてFBXを使うことにしているのですが、SDKの構造を見るだけでも勉強になります。ただ、fbxでやりとりするツールを持ってないので(読むだけならMaya PLEでいけるけど、インポートパラメータが多くてよく分からない・・・)、Shadeにてfbxインポータ・エクスポータを作ることにしました。

FBXフォーマットは拡張可能なように設計されており、シーンや形状に対して独自パラメータを持たすことができます。

FBXでのレンダリング情報はKFbxCamera内から引き出せますが、GIに関するパラメータはないようです。こういうのはユーザ情報で持たせてやればいいのかな。でも、どこに何を入れている、を明記しないといけないのでいずれにしても方言は生んでしまうかも。

ボーンやNURBS・アニメーション関連の情報なども入れることができますので、基本的なシーン構築には使えそうです。Shadeでいうジョイントは、各ノードのPivotやLimitというのが対応するのかな(まだ調査中)。

シーン内のオブジェクトは「ノード」の階層構造になっており、ノードの属性(Attribute Type)は

  • Null Node
  • Marker
  • Skeleton
  • Mesh
  • Nurb
  • Patch
  • Camera
  • Light

が存在してます。NurbとPatchはポリゴンメッシュ(Mesh)にコンバートできます。PatchというのがShadeの自由曲面みたいなもの?NurbはNURBSですね、たぶん。

で、Shadeでも独自のユーザ情報(カスタム情報)をstream_interfaceを使って持たせることができるのですが、fbxと大きく違う点があります。

fbxのユーザ情報はKFbxObject(ノードやシーンの派生元)で、どのタイプの情報を格納したか、も保持してます。なので、内容の分からないユーザ情報でも読み込むことが可能(どう使うかは結局明記しないとどうしようもないですが)。

種類としては、

  • bool
  • real(doubleに相当)
  • color(RGBA情報)
  • int(整数値)
  • vector(XYZ情報)
  • List(?)

があり、種類と内容をゲットまたはセットできます。

Shadeのstream情報だと、XMLのテキストでシーンをファイルに出してみれば分かりますがカスタム情報は数値の羅列になってます。ですので、格納したデベロッパしか扱えません。ということで、Shadeのstream_interfaceは種類と内容をセットにして格納する仕組みにしてほしいかなぁと思ったりもします。

ただし、fbxでUUIDみたいなのを使ったユーザ情報の識別はないようですので、1つのKFbxObjectに複数のユーザ情報を割り当てることはできないのかな?このあたりはShadeの構成のほうがいいかもしれません。

今回はあくまでもテストシーンを作るためにShadeを使うので、fbxインポータ・エクスポータをさくっと作ってしまうかな。とりあえずはアニメーションとボーンは割愛して、汎用的に使えそうなら公開するようにします。直接的に仕事で使うものではないので、公開可です。でも、いろんなツールで使えるようにと考えると、fbxにてユーザ情報を持たせる機能は方言になりますので、あんまり使えないのかもしれないですね。

ライブラリ開発中(2008/03/21)

ライブラリ開発に集中していたのでしばらくモデリングから遠ざかってました。どこまで自由度を保ったライブラリが出来るか、ちょっと挑戦中です。仕事で使うやつなんですが、基盤のコア技術なのであっちでもこっちでも使えるように、なんで自然と拡張性が要求されます(^_^;;。

後、これにも絡むのですがfbx掘らねばと思って、ひさびさに最新版のSDKを見に行くと、、、、2006年11月バージョンから止まってますねぇ。

関係ないですが、ペルソナ4が出るようで。ニコニコでPVがあがってました。

http://www.nicovideo.jp/watch/sm2705966

確実に購入してしまいそう・・・・。でも、オートダンジョンと敵キャラの使いまわしが退屈なんでそのへんどうなってるのかなぁ。システムは同じっぽいですね。ライドウも続編作ってほしぃ。

Shadeでのポージング(ボールジョイント+スキン+IK)(2008/03/16)

Shadeでの鬼門であるスキンを使ったポージングについて。なぜ鬼門であるかというと、使ったことがある方ならおわかりのとおり操作が複雑という部分もあります。が、SDKではもっと厳しい現実があります(関数がいろいろ足りない)(^_^;;。なんで、プラグインを作る側は正直言うとあんまり触れたくない機能だったりします。

そうは言っても始まりませんので、まずは操作ムービーです。やろうと思えばポージングできそうな予感もしますね。ただ、「ここが足りない」という部分も多いです。

スキン設定までの道

Shadeの「スキン」は、ようはボーン変形を行う機能です。まず、動かしたい形状の上にボールジョイントを配置していって、スキンウィンドウにてバインド(自動割り当て)します。

この際に「頂点に対してスキンの影響を自動的に設定」します。編集モードにして、ポリゴンメッシュの場合は頂点を全選択。複数のポリゴンメッシュを選択して割り当てもできますが、スキンウィンドウ内の表示上は1形状のみのようです。

この部分はスキンウィンドウにて影響頂点をリスト化するんではなくて、影響範囲をボックスかウエイトマップ(頂点ペイント)で設定させてほしいかもしれません。そして、リストは見ないのでいらないかも。

この自動で行われている「バインド」ですが、ボールジョイントの球のサイズはまったく関係なく、どうもボールジョイント間の距離で「どの頂点でどのボールジョイントの影響を受けるか」を割り当ててるみたいです。mikotoだと1つのスケルトンになる三角形の幅が影響範囲の円柱(というかカプセル)になるのですが(スフィリカルディフォームでのボックスでの影響範囲指定も可能です)、Shadeのこの部分は全自動でなくて半自動にするべきじゃないかなと。

バインド自動化の欠点として、服のようなヒラヒラはどうやってもIKによる変形ができない、というパターンが出てきます(スカートでも履かせてみれば分かります)。影響範囲ってスキンでは大事であると思います。

IKの操作

IK(インバースキネマティクス)操作は、Shadeではちょっとコツがいります。上のムービーでも操作してますが、

  • 移動させるボールジョイントを選択
  • ツールボックスのmoveメニューの下より、固定するジョイントを選択
  • 連続して操作したいのでツールボックスの「連続」をOnにする。

の3つの操作がいります。普通のボーンのように「ロック」という機能を入れると、固定するジョイントをいちいち選択する必要もないのになぁと思ってます。

後、どうも図形ウィンドウ上の透視図ではIK操作は正面図の動きのようにXY平面で動いています(以前からなんですが、、、バグと見ていいのかなぁ)。正面、上面、側面だと思い通りに動かせますが、、、もちろん斜めを向けてポージング変更もしたいので、必然的に「Shift+Space」での視点変更が必須になります。

また、先端(上のムービーの場合指先)のボールジョイントを選択しない場合は、選択されているボールジョイントがくるくる回転してしまいます。これも固定化しておいてほしいかも。

ただ、いいところもあって回転ジョイントで可動範囲制限ができたりしますので、このへんのボールジョイント+スキン+IKへの要望としては、「普通のボーン希望」ってところでしょうか(^_^;;。後、正面・側面・上面ではなくて透視図でもIK操作を快適にさせてほしいです。

アニメーションの場合は、モーションウィンドウにてキーフレームを打っていくのですが、これもちょっとクセがあります。私の調べたところでは(まだまだ浅いですが)、ボーンについてはツールによって得手不得手があるようで難しそうではありますが、

  • ボーン影響の範囲指定(ボックス、ウエイトマップ)
  • IK操作で、図形ウィンドウで選択した形状をドラッグ対象として簡単に切り替えることができるように(現状は、ブラウザでの選択操作をいれないといけない)。
  • ボーンのロックを指定可能なように。これができると、ツールボックスのmoveでの固定化するジョイントの選択は不要になりそうです。
  • IK操作時に、対象ジョイントでのマニピュレータがほしい(特に回転)。

が最低限必要かなと感じました(逆に、これができれば飛躍的にポージングがしやすくなるのでは)。

後はボーンの見やすさについて。mikotoの場合は、形状を青暗くしてボーンを見やすいようにするモードがあるのですが、シェーディング時+IK操作時はそんな見え方もほしいかも。

んでも、Shade10のスキンやIK、描画がおかしくなったり途中で落ちちゃったりShade終了時にエラーが出たりで不安定になる場合がありますね(落ちる動きを見てると、メモリリークっぽいけど)。

後、すでにShadeフォーラムでも書かれている方もいらっしゃいますが、マルチスレッド時での不安定さについて。OpenGLの問題などは特にですが、私もマルチスレッドでハードにアクセスしてないかい?というのをにらんでいます。基本、ハードへの命令は一方通行でしょうから(ドライバで交通整理しているかどうかは分かりませんが)、この部分はプログラム側で一本化すれば安定するのではと思ったりします。SDKでも結構な部分が並列動作してしまって、スレッドセーフには設計できてないんだよなぁ。

これ、ヘタに「並列で速くなるだろう」と思って実装すると逆に重くなると思います(それが裏目に出てるように感じます)。グラフィックのプログラムしている方なら分かると思いますが、描画もそうですよね。Windowsの場合は、ちらつき現象はWM_PAINTメッセージが同時に呼ばれたなどの場合に起こりやすい現象ですし(Macはこのへん強固。というか、描画を遅延させる処理をOSで行うような動きをしてます)。

e-taxでの所得税申告(2008/03/15)

用意はそろったのでネットを使った所得税申告です。準備するのは以下。

  • 住基カードを役所にて発行してもらう(有効期間は10年)
    • 4ケタの暗証番号を設定します(役所にて)。
  • 電子証明書を役所にて発行してもらう(有効期間は3年)
    • 暗証番号を設定します(役所にて)。「公的個人認証サービス」での暗証番号がこれです。
    • PCで電子申請をするためのCD-ROMをもらえます。
  • ICカードリーダー(PCショップで売ってます。住基カード対応のを買うこと)
  • e-taxの開始届出書(http://www.nta.go.jp/e-tax/index.html から調べるべし)
    • 「利用者識別番号」と「暗証番号」がもらえます。なお、開始届出書は毎年行う必要はなく、一回行えばそれで毎年利用できます。

これに加えて、確定申告に必要な書類(給与明細・報酬明細・源泉徴収書など)をそろえます。

ICカードリーダのドライバインストール

住基カードをPCにて読み込むためのリーダのドライバをインストールします。接続確認テストができますので、正常に読み込めているかテストすること。

公的個人認証サービス(クライアントソフト)のインストール

Java実行環境(JRE 1.4以降)が必要です。住基カード・電子証明書を発行してもらったときの付属CD-ROMにて「公的個人認証サービス」アプリケーションをインストール。

ユーティリティの「ICカードリーダライタ設定」にて、必ずカードリーダの名称設定をするようにします(これが設定できてなくてはまってしまいました)。

後、住基カードをさすとその中身を見ることができます。これも確認のこと。なお、確認の際はその都度暗証番号がいりますので「電子証明書」の暗証番号を指定します。

ブラウザはIEを使う。また、ポップアップブロックを解除する

https://www.keisan.nta.go.jp」がe-taxで使用するURLになりますが、処理途中でポップアップが出るところがあります。それを解除しないと正常に作業が進みません。以下を参照のこと。

https://www.keisan.nta.go.jp/survey/publish/25331/faq/25355/faq_26593.php

FireFoxは対象になってなかったため、確実に進めるためIEを使うようにします。FireFoxで念のため確認してみましたが、表示がボロボロです(ボタンが出なかったり)。

初期登録を行う

e-taxを利用する前に「http://www.nta.go.jp/e-tax/index.html」のページから「初期登録」を行います。利用者情報の入力、電子証明書の登録、納税用確認番号の入力などを行います。

これで前準備は整いました。

書類の作成

「確定申告書作成コーナー」より、申告書類を作成します(Web上で作成できます)。

https://www.keisan.nta.go.jp/h19/Ta_etax105.htm

システム的には、Webからそのまま入力したデータを送るのではないみたいです。本年度であれば「19年所得電子申告用データ.xtx」というデータを自分のPCに保存し(ここにWebで入力した情報が保存されている)、改めてこれを送付するという感じになります。書類の最終は、xtxのファイルを保存するところまで。これは、e-taxを使用しない場合も同じ手順です(印刷して税務署に提出する場合に使えます)。

e-taxにて書類を送信

な画面が出て、xtxファイルを添付する画面がJavaにて表示されます。この後に、電子証明の暗証番号を聞いてきたりしますので、ICカードリーダに住基カードをさしてスタンバイしておきます。

送付されたかの確認

処理が終わったら、「メッセージボックスを確認するように」というのが出ています。以下のサイトで確認できます。なお、e-taxの利用者識別番号と暗証番号が必要です。

http://www.e-tax.nta.go.jp/sakusei/messagebox-web.html

Web上のメールボックスみたいになっていて、

  • 電子申告・納税等開始(変更等)届出(個人)
  • 電子証明書の登録
  • 所得税申告

っていうのが列挙されてます。これの「所得税申告」の内容を確認すればOKです。

後は納税があれば納税の通知書に金額を記入して、2008年度は3/17までに郵便局や税務署に支払えば完了。誤解していたのですが、5000円キャッシュバックは納税の場合でも-5000円で有効のようでした(ただし、平成19年度分か20年度分のうち1回のみ)。

ということで、税務署から指摘がなければこれで大丈夫なはずですが、、うん、素人さんはまだ敷居が高くないっすか(^_^;;。半日費やしてしまいました。

mikotoでポージング(2008/03/10)

mikotoにて奮闘中。ちょっと時間をおくとやっぱりというか、モデリングとテクスチャを調整したほうがいい箇所が出てきますね。が、とりあえずボーン調整のテスト。CamStudioで取ると、さすがに重いからかカクカクになりました(Celeron 1GHzのノートPCにて)。flvを最高品質にしてみたのですが、細い線が著しく汚くなりますねぇ。このあたりの撮りかたも要調査です<自分。

楽に対応できるだろうと思ったんですが、胴体と肩から腕部分が明確に分離されている場合、ゆがまないようにする動きをうまいこと調整できない・・・(回転の稼動部分は肩の中心)。「スフィリカルディフォーム」というので崩れないようにできないかな、といろいろ試したのですが、、む、難しい、、、ちょっとほかの方のボーンデータを見て研究する必要がありそうです。ロボット系(?)は、そもそもスキン変形するのが妥当なのかな。違うような気がしないでもないです。

mikoto以外でもポージングのソフトがあるみたいですので、ボーンによる変形以外の動きがサポートされているのがあるか調べるようにしよう。意外とShadeのほうが回転ジョイントとかでは制限かけることができるし、楽なのかもしれない(今回は服はないに等しいですので、スキン適用部分は手と足の関節部分のみ)、これもチェック予定です。

後、そろそろBlenderの調査も開始しなくては。Blenderの場合はウエイトマップもできますね。

surface_class::find系(2008/03/09)

Shade9プラグインSDKにて表面材質の色をたどる場合、surface_classを取得して

surface_class::get_number_of_mapping_layer()

などのようにgetで取得するものと

surface_class::find_number_of_mapping_layer(shape)

のようにfindで取得するものがあります。

findはいつ実装されたのだろう。表面材質は拡散反射や光沢・マッピングレイヤなどほとんどのパラメータは、その形状に存在しない場合は親パートにさかのぼって継承されるようになっているため、get系では正しい値を取得できません。

エクスポートプラグインでマテリアルを出力する場合は注意したほうがよさそうです。というのに本日気づきました(^_^;;。幸い、今公開しているものでクリティカルなのはないのですが、vmd exporterはアウトかな。でも、マテリアルがリスト化されているフォーマット(メタセコのmqo、WinOSiのvmd)ではそのような構造ではないため分離しないといけません。この場合はマテリアルと形状の結びつけが大変そうです。

fbxはどうだったっけな?fbxはちと仕事に絡む部分ですので(Shadeではないです)、マテリアルのフォーマットはどのようなのが一般的なのか、調査の必要がありそうです。

続・Shade10 トゥーンレンダラ(2008/03/09)

トゥーン設定の「輪郭線」の「法線境界」にて「法線角度」というのがあります。これは、隣り合う面同士の作る角度によりエッジを出すかの判定に使われています。で、これを0にするとワイヤーフレーム描画が実現できます。これはポリゴンメッシュのスムーズの限界角度とは(意味合いは似てますが)用途が違うので注意が必要です。

法線角度を変えてみた例。左から0、30、60度。

後、Shade10 Professional版のベクター出力にてshadeonline_rex.shdを曲面「普通分割」でswf出力したのをキャプチャしたもの(最も細かいだと不正になる)。法線角度を0にしてワイヤーフレーム化しました。

690KBという大きなサイズ。ただ、ポリゴン数を見ると妥当かな。もちろん、ベクターデータですのでサイズ変更してもジャギーが目立ったりはしません。ベクター出力では、線のみで塗りは反映されていません(線の色は反映されます)。線の太さに関しては反映するオプションがありますね。ただ、ライン数が多いと出力したベクターデータ自身が重くなるかも。

しかし、内部的に自由曲面の分割方法が変わったのかなぁ?エクスポータ書いていてrexはテストしてたのですが(Shade9にて)、以前と違うような気がしないでもないです。これで「最も細かい」だと何ポリゴンくらいになるのだろうか。結構重い形状ですね。このへん(自由曲面からポリゴンへの変換)、もっと最適化すればやたらめったらメモリを食う、遅い、とかの問題が解決するように思ったりします。もう十分細かくて分割する必要がない、というところも分割入るのでしょうかね。

なお、触っていて見つけた問題はここで書いてもまとまりがないので、Shadeご本家のフォーラムに書くようにします(ちょうどやりとりしているスレッドがあったので、それを利用させてもらってます)。

Shade10 トゥーンレンダラ(2008/03/08)

Shade10トゥーンにてやわらかい陰影を出す場合は、複数の光源を利用するのがよさげです。

上画像は、黄色の面光源をトゥーンの塗りを無効にして配置、形状(表面材質のトゥーン設定)はカスタム設定にて線の「距離による太さ調整」「明るさによる調整」をOnにしてます。そして、右側から左に向かって無限遠光源を配置してます(これはトゥーンの塗りを有効)。

無限遠光源、面光源、スポットライト、点光源でカスタム情報の「トゥーン設定」を選ぶと、光源用のトゥーン調整ができます。メイン光源以外はトゥーンを無効にしたほうがいいのかもしれません(でないと白飛びする。マニュアルには詳しく書いてないすね)。

なお、Shade 10.0では光源が強いとエッジが消えるので(バグですな)必ずShade10.0.1にしましょう。

Shade10で追加された機能(2008/03/08)

ここの日記に過去書いていたことで、対応されているのが結構ありますね。(開発中は自分の範囲しか見てなかったので、対応されていたのは詳しくは知らなかったりします(^_^;;)

パストレ+フォトン

パストレーシングの大域照明のオプションとしてパストレ+フォトンが加わってます。仕組みは、まず光源からフォトンを飛ばして(一つ目のパス)空間上の面に光量を蓄えていきます。そして、視点からのレイトレース(二つ目のパス)にてフォトンを回収するのですが(おそらく)パストレでの間接照明の2〜3反射目にてフォトンをあつめてます。これにより、レンダリングが速くなるのと今まで表現できなかった閉じた空間の窓から光が漏れて間接照明が部屋全体にいきわたる、が表現できます。

またMaxwellと比べてみよう。この機能追加はうれしいです。

UVマッピング

選択した面のみにUV割り当てを行うことができるようになりました。また、複数の形状をマージしたときでもUVは壊れなくなりました。これも大きな進歩ではあります。現状でUVに関してはメタセコのプラグインなしと同じことはできそうです。欲をいえば、UV展開後の画像ファイルへのワイヤーフレーム書き出し機能がほしいですけど、プラグインですぐに作れそうではあります。

UVマッピングでのキューブ展開

これでサイコロの面張りで楽できます。6方向に投影してそれにUVを割り当てて配置。

いつでもShift+Space押しながらドラッグで回転

カメラの「視点」「注視点」「視点+注視点」「ズーム」のどれを選択してても、Shift+Spaceでの透視図のドラッグにて回転が効くようになってますね。

マニピュレータ

回転・移動・拡大縮小が1つに収まってます。これ、意外と使いやすいですね。隠すこともできます。表示する・隠すはショートカットに割り当てておいたほうが扱いやすいかな。

まだこれがほしい(追記です)

面や頂点の選択動作で、矩形指定の範囲内を確実に選択してほしいのですが(意味わかりますかね、メタセコでの普通の範囲選択操作です)うまいこといかない、、、。見えている面なのに、と思ったら分かりました。選択モードにしてるのに、他の形状がイキになっていて(手前にあって)選択できてない、、、、。これは直してほしい。。。

後、ヘアーサロンで使った技術で、既存のものとこちらで考えたアルゴリズムがありますので時間があれば解説していければ。ファーのレンダリングや3Dペイント部、衝突判定などなど実験していた技術の投与は結構してます。

続・Shade10のヘアーサロン(2008/03/07)

自戒の念を込めて、アピール用のムービーを作ってみました。ヘアーサロンのヘアー(というかファー)を作るまでの流れです。

実際この時間で操作してますので、5分強でヘアのスタイリングしてます。この後の細かい調整を入れても10分くらいで作ってることになるかな。レンダリング結果は日記の下に出した画像になります。

Shade10のヘアーサロン(2008/03/07)

某所でShade10付属のサンプル画像をアップしている方がおられますが、イーフロの名誉のために記載しておきます。あれ作ったのは、私(と自社で作らせた)です。開発者が開発の最中に2日くらいで作った実験と検証用サンプルですので評価基準にはしないでね。

ちなみに、うちのデザイナに形状を起こしてもらってそれに私がヘアをつけたのが以下です(正面は厳しいので(髪じゃなくて顔が。まつげが適当なんで怖い表情っす)後ろ向きですけど(^_^;;)。ヘア作成ための操作は30分くらい。操作ムービーも撮ったので後で説明入れます。

言い訳かも知れませんが、素人が作るものとみて多めにみてくださいませんかねぇ?

後、イーフロの宣伝での製品アピールが弱いというのは私も思うところ。本来なら、サンプルでもデザイナさんがきっちりやるべきではあると思います(開発者がすべきではない)。という、外側の開発者の声でした。

ちなみにヘアーサロンではアンチエイリアス4x4でレンダリングするようにしてください。そのままだと細い毛が汚くなります。Shadeのレンダラはデフォルト2x2らしくて、これだと精度が保てませんので。パストレーシングだとピクセルサンプリング数が多いので、そのへんの精度は意識しないで済みそうです(遅いですが。髪の毛ですと、レイトレーシングで3〜4点のライトを配置したほうが映えるような気も)。

でも、Shade10のレイトレース処理はちと遅くなってる点はありそうではあります(ヘアーサロンは、Shade本体のレイトレース(トラバース)に乗る仕組みで実装されているため、Shadeのレンダラに完全に取り込まれた状態で動作してます。その欠点としてエフェクタのようなお手軽・高速描画ができないんです)。

mikoto用にボーンを入れる(2008/03/07)

メタセコである程度モデリングとテクスチャが完了したらポージングです。mikotoを使ってポーズをつけるのですが、mikoto上ではボーンの配置とかはしませんで、メタセコ上で三角形をつなげてボーンとしています。

オブジェクト名の前に「bdef:」をつけるとそれがボーンの適用オブジェクトになります。ボーン自身は「bone:ボーン名」というオブジェクトをつくり、そこに三角形を入れていきます。

上の画像のキャラクタの後ろにあるのがボーン。三角形の2番目に長い辺がボーンの中心、一番短い辺が影響範囲(半径)になります。

http://sasakingdom.com/

のマニュアル参照。

実際は、このボーンをキャラクタの中心を通るように移動させて保存します(上画像では便宜上ボーンを後ろに移動させてます)。ボーンでの変形がどのオブジェクトに影響を与えるのか、といった割り当てもできるようです。個人的には、ボーンを生成・配置するツールもポージングツール内ではほしいかも。

なお、mikotoは現在開発されておらずVer 0.4cが安定しているのかな、といった手ごたえです。

mikoto上ではこんな感じで読み込めます。

しかし、普通の人体と違って肩と足の付け根はゆがんでほしくないので、ボーン入れは再度やり直さないといけない予感・・・。もうちょっとボーン設計を推敲してからムービーで説明を入れることにします。ボーンの「影響範囲」が大事ということを解説していければ。

mqoImporter Ver 1.0.1 for Shade9/Shade10(2008/03/06)

もう届いている方もいらっしゃいますのでいいですよね(^_^;;。Shade10にて動作するメタセコイアのmqoインポータを公開しました(Ver1.0.0ではテクスチャの読み込みが失敗します)。メタセコ形式(mqo)をShade9またはShade10に読み込むことができるインポータプラグインです。

mqoImporter」のページよりダウンロードできます。また、ソースコードも同梱しています。

機能追加として以下に対応しました。

  • オブジェクトの階層構造を反映
  • 可視・ロックフラグをオブジェクトに反映

Shade9のプラグインSDKにてビルドできます。Mac版は今しばらくお待ちくださいませ。開発環境であるXCodeをインストール済みの方は、Shade9プラグインSDKを入れてmqoImporterのソースをビルドすることでプラグインを作成できると思います。

Shade10にて9用のプラグインが動かなくなる件(2008/03/05)

もうすでにShade10がちらほら届いておられる方もいますので。主にプラグインを書かれている方に対してですが、

text_stream_interface::get_name

にてファイルのフルパスを取得していた方、これがShade10ではなぜかカラ文字が返されます。

stream_interface::get_name

は生きているようですので、これに変える必要がありそうです。

こちらで公開しているプラグインでも不都合が出てますので(mqoインポータ)、分かる範囲で修正と情報公開していければと思っています。

mqoImporter for Shade10は、テストして安全性を確認次第バージョンアップして公開するようにします(ついでにメタセコの階層構造も引き継ぎましょうかね)。

でも、なぜtext_stream_interface::get_nameが無効になったのかは謎です。

顔の微調整など(2008/03/03)

すっかりモデリング過程の駄文に成り下がりましたが、顔の輪郭調整、目の水平位置を調整、首が長かったので少し短く、頬を少し膨らませる、などの細かい修正を加えてみました。

数日おいてから見てみるとおかしい点も見えてきますね。

Shade9のパストレでレンダリング。

背景によってはそこにある感じが出ますね。光源は背景のIBLのみです。このキャラで、頂点数は1895、三角形数は3040です。レンダリングは数分で終わりますので、勢いに乗ってカメラ移動などしたいところ。これでアニメーションできればいいのですが・・・、ノイズでちらつくんだよなぁ。

と、そろそろポージングに入ることにします。実は仕事の締めが今週末で忙しい時期のはずなのですが、そんなときこそ息抜きははかどります(^_^;;。

Shadeでの視点のパンと回転(2008/03/02)

Shadeいじっていたら、使えそうな機能を発見しました(日頃から使い慣れてないのがバレバレですが(^_^;;)。

カメラにて「視点&注視点」を選択した状態で、「Space」を押したまま透視図をドラッグ=パン、「Shift + Space」を押したまま透視図をドラッグ=回転。これで、一面図の場合の操作が格段に楽になりました。

使い方のHTMLヘルプの用意次第で初心者が引いてしまうのを防げるのに。PDFは私の個人的な偏見かもしれませんが、オンラインヘルプとしての使い勝手が悪いと思ったりしてます(印刷ではOKかもしれませんが)。ちょっと機能を知りたい、という工夫もできればアプリケーションに取り込むほうがいいですね(これはShadeに限らず、自分でアプリを作る場合も指針になりそう)。メタセコの場合は面生成や選択モードなどの時にトップメニューの下に何が行えるのか、というのが1行で書いてます。Adobe製品でも(これは使い方が統一されているので分かりやすいですが)下に出てますね。

でも、動きがメタセコと全部逆だ・・・(パンも回転も)。たしかカメラウィンドウの操作イメージはジョイスティック(フライトシミュレータっぽい)のようなもの、とどこかで聞いたことがあるのですが、これは昔から変わってないのかな。

フリーのHDRI素材(2008/03/01)

仕事場にて実験的に使うHDRIファイルがほしい時期がありまして、以下のサイトを重宝させていただきました。

http://www.cr-market.com/

2000x1000ピクセルといった解像度のものがダウンロードできます。実際はこれでも高解像度というわけではなく、5ケタ台のピクセル数もざらのようですのでHDRを扱うソフトを作る場合、メモリ管理が大変そうですね。このへん、カメラの知識のない私のような者には助かります。

で、テスト的にメタセコで作った形状をShade9で読み込んでHDRIを背景としてレンダリングして確認(上記サイトのHDRI素材をお借りしました)。ShadeはHDRI一灯だと素材次第ですがきれいに出ますね。無限遠光源は無効にしています。背景のHDRI(球)のみです。

顔のバランスはもう少し調整がいりそうです(輪郭と鼻筋がのぺっとしているのが気になる)。ずっと見ながら調整していたらマヒしてきて、イケてるのかイケてないのか分からなくなってきました(^_^;;。

金属部は反射とメタリックを適用しているのですが、この部分はShadeの表面材質とレンダラに頼ったほうが楽そう。メカっぽい表現ではShadeはさすがですね。若干眠い結果なのは、イラディアンスキャッシュを調整すると緩和できます。

腕と足、リボンはテクスチャを貼ってないのですが問題なさそうな気も。後は全体的に調整を加えてからポージング&ボーンに入ることにします。衣服などのひらひらが少ない場合は、Shadeのボールジョイント+回転ジョイント+スキンにてアニメーションにこぎつけることができたりします(IKも使えますよ)。これとMikotoの両方を試してみます。

顔のテクスチャ(2008/03/01)

まだ気になる部分があるのですが、顔をSAIにて描いて形状に反映。

やはりというか目を描くとモデリングの悪い部分が見えてきたので、頂点を微調整してテクスチャを描いて、を繰り返してます。ワイヤーフレーム表示しないと粗が見えるため、まだ悪い部分はありそう。

ペルソナのキャラは両目の間隔が少し離れているキャラが多い気がするのですが(絵師さんのクセかなぁ)真似ようとすると違和感が出てしまったため、描いているうちに結局自分の描き慣れた絵柄になってしまいました。

最終的にShadeに持っていってレンダリングする予定ですが、金属部分が多いキャラなのでマテリアルを分離しようかどうしようか思案中です(今は光沢も拡散反射のテクスチャとして描いてます)。

LSCMでのUV展開をマテリアル別に行えるかと思ってたのですが、どうも挙動が怪しい・・・。やっぱりオブジェクト別なのかな、体のパーツを1つにまとめていたのですが再度分離してUV割り当てなどをしました。メタセコのLSCMでは辺の選択で分割位置を指定するのですが、この部分選択が難しいです(間違えるとすべての選択が解除されてUNDOが効くときと効かないときが出てしまう)。

しかし、ローポリキャラの顔をテクスチャにした場合、アニメーションさせる(目パチ、口パク)にはどういうインターフェースで行うのが一般的なんだろうか。タイムラインにてキーフレームを打ったところにてテクスチャを入れ替えるアクションを作ればいいんですかね。Blenderの動画をニコニコとかで見る限りはできてるっぽいですので、研究材料にせねば。

e-taxへの道 〜 住基カードと電子証明書とカードリーダー(2008/03/01)

先月末に、住基カードができたので役所に取りにきてくださいという書類をいただきました。連絡待ちは二週間強だったのですが、遅くなっている原因は注文が多いため混み合っていたとのことでした。また、役所にも電話連絡して受け取りの予約してください、ということでしたので予約。

で、続いて予約日に役所で手続きです。窓口に届いた書類と自分を証明するものを持っていってしばらく待つと、住基カードと電子証明書の暗証番号を入力してください、とのことで個室に通されまして、昔の古いタイプと思われる専用機に自分で暗証番号を入力しました(キーボードも専用のもの、OSも専用っぽい。どこか懐かしい感じのシステムでした)。その間、オペレータと思われる方は後ろ向いてました。そうか、この作業で時間がかかるのね。もちろん、部屋にはオペレータと登録者の2人しか入ることが許されず、念には念をおいて対処されてるのだな、ということが分かりました。

この作業が終わると、無事住基カードと証明書をいただけました。また、PCに証明書をインストールするためのCD-ROMと手続きのマニュアルや案内書などをもらいました。

住基カードは同じ区内であれば10年有効、電子証明書は3年有効のようです。なんで、私の場合は後3年は確定申告関連で役所に行かなくてよさげです。

残るはカードリーダーです。ヨドバシにe-taxコーナーがありましたのでそこで購入。3000円くらい。ちなみに、ソフトのところでShade10が積んでました。まだパッケージだけなのかな、ちと眺めてました。操作説明のビデオも一緒に販売するみたいですね。自分でメタセコの操作説明などをムービーで取ってみて分かったのですが、結構ムービーでの教則マニュアルって有効かもしれない。

カードリーダー(接触型)と住基カードです。これで役者はそろいました。後は、申告する内容をまとめてPCにて入力するだけ。今回は、e-taxでの確定申告に成功しそうです。

あ、上記写真は携帯カメラで撮りました。今年はじめにSoftbank携帯に乗り換えまして一気に200万画素ですよ。自分自身はこれで十分満足です。個人情報部分をぼかしたり、何回か変換処理をかけたりしてますので元の品質は失われていますが、携帯カメラもきれいになりましたねぇ。

ところで、役所での届け出やカードリーダーの購入などで5000円はいっていると思いますので、ぶっちゃけ税金5000円キャッシュバックの意味がないような気がする(^_^;;。やるんなら10000円くらいまけてくれよ〜〜。

確定申告は3/17までですので、まだの方はお早めに。

Future's Laboratory 技術格納庫 2004-2013 Yutaka Yoshisaka.