プロフィール

Na-7

Author:Na-7
SE(システムエンジニア)として約15年間システム系ソフト会社を勤めあげ、2008年3月退社。現在、ゲーム制作会社設立を目指して活動中。


アクセスカウンター


最新記事


最新コメント


最新トラックバック


月別アーカイブ


カテゴリ


DATE: CATEGORY:スポンサー広告
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
| BLOG TOP |
DATE: CATEGORY:Softimage Mod Tool
透明度処理03
透過シェーダの描画テスト
XNA用アニメシェーダに透過処理を実装した。よく見ると境界線が…?



◎アルファデータの受け渡し

今回はテクスチャの透過処理に再チャレンジします。

まず、XNA向けシェーダ置換処理をコメント化して、BasicEffectで表示してみました。

シェーダを置換せずにBasicEffectで描画

おや?透過処理されましたね?
ちなみに、BasicEffectはボーンアニメ処理をしないので、このままでは動きません。

透過処理に必要なアルファデータはXNAに渡されていることが確認できたので、ボーンアニメシェーダに透過処理を実装しましょう。



◎透過度の検証

ところで、どのように改修すれば透明になるんでしたっけ?確か、ピクセルシェーダ出力(rgba)のaを設定するだけで透明になったような…?

試しにシェーダを改修すると予想外の結果になったので、わざわざテスト環境を作ってピクセルシェーダの中身を下記のようにしました。

float4 color = float4(1.0, 1.0, 0.0, 0.5);
return color;


最初は透過度(4番目の引数)に何を入れても変化せず、かなり悩んだのですが、

spriteBatch.Begin();
spriteBatch.End();


Drawの先頭に上記を追加したら、透過度が有効になりました。どうやら、レンダーステートの初期化が問題だったようですね。


その後、透過度を変えて試すと、0.002以上で黄色が描画され、0.0019以下で何も描画されませんでした。0で透明、0以外で不透明のようです。(0.002は多分誤差)0.5で半透明になると予想していたのですが、半透明にはなりませんでした。



◎実装

BasicEffectのソースを参考に、ピクセルシェーダの末尾を数行だけ改修しました。

// 透過処理のためにコメント化
// float4 result;
// result.xyz = AmbientColor + lightcolor ;
// result.w = 1;

// 透過処理のために追加
float4 result = tex2D(AlbedoSampler, IN.texcoord0);
result.xyz = AmbientColor + lightcolor ;

return result;

透明度処理03

透過クロスアニメがXNAで動きました。
(クロスアニメをボーンアニメとしてXNAに渡しています)

あれ?近くでよく見ると境界線が見えますね?
うーん、どうしよう…。

境界線を消すのは大変そうだし、離れて見ると目立たないので、とりあえず無視します。



◎次回予告

これでいいのかなぁ?と不安を感じつつ、次回は旗手モデルを作成します。

スポンサーサイト

テーマ : ゲーム製作 関連 - ジャンル : ゲーム

| BLOG TOP |
DATE: CATEGORY:Softimage Mod Tool
パーティクル03
パーティクルの練習
フォースを勉強するために、パーティクルで噴水を作成した。SotimageパーティクルモデルをXNAで動かすことは可能か?



◎パーティクルと重力フォース

XNAでクロス等が使えるようになったので、シミュレーションの勉強を再開します。フォースについてもう少し慣れておきたいので、以前のパーティクルチュートリアルを、重力フォース適用までやりましょう。

パーティクル03

噴水の動きになったのですが、静止画で見てもわかりませんね…ごめんなさい。


パーティクルは本来XNAで動きません。ただし、

・粒子数の上限は設定値で決まる

・個々の粒子には番号が付けれらており、
 通常のポイント(頂点)と同様の扱い

なので、粒子上限と同数のNullを予め取得しておき、コンストレイントで連動させれば(クロス等と同様に)XNAで動きそうな気がします。パーティクルが動けば、流体やエクスプロージョンも動くかもしれません。

HairRigのソースを解析して、ポイントとNullのコンストレイント設定を修得すれば案外あっさりできるかも…?と思ったのですが、HairRigは.xsiaddon形式で肝心な部分がバイナリっぽいので諦めました。

興味はありますが、自作ゲームでパーティクルを使う予定は今の所無いので、チャレンジはまたの機会にしましょう。



◎風と乱流

重力フォース適用時に気付いたのですが、フォース適用前に予め適用対象オブジェクトを選択しておく必要があります。前回、風や乱流がうまく適用できなかった原因はコレか?

パーティクル04

風と乱流を適用しました。風で右方向に流れるのはよくわかるのですが、乱流の影響があるのか無いのかパーティクルではよくわかりません。


クロスのサンプルを確認すると、乱流は存在せず、風とファンがありました。ヘルプで確認すると、クロスと乱流の組み合わせは不可でした。…おや?(汗)

そもそも旗手を作るのが目的なんだから、サンプルの旗と同様のものを目指しましょう。



◎クラスタにテクスチャマテリアルを適用する

まず、XNAで表示する旗を用意しようとしたのですが、これまでメタセコイアモデルをコンバートしてたので、実はXNA向けテクスチャマテリアルを1から自作した経験がありません。

確かメッシュのマテリアルに直接テクスチャを張るとNGで、クラスタを作ってそれにマテリアルを適用すればOKのはず…あれ?クラスタ作ってもマテリアルを適用できないぞ?

Explorerからマテリアルを選択したポリゴンにドラッグアンドドロップして、マテリアルを割り当てることはできません。

Softimageらしくない仕様だなぁ…あれ?他の方法でもダメじゃん?

…結局、頂点のクラスタを作成したのが間違いでした><

で、改めてポリゴンのクラスタを作成すると、今度はXNAでエラーになりました。

BasicMaterial にテクスチャーがありますが、メッシュ "grid" のジオメトリにテクスチャー座標が含まれていません。

どうやら、クラスタに適用したテクスチャマテリアルとは別に、メッシュオブジェクトに対してテクスチャサポートを作成する必要があるようです。オブジェクトを選択して「レンダ>取得>テクスチャ>イメージ」でプロパティを開き、テクスチャプロジェクションの新規ボタン>XZ平面…わかりにくい(+_+)

とりあえずメッシュ直下にTexture_Supportが作成され(XNA的には不要?)、Clusters直下にTexture_Coordinates_AUTOが作成されました(必須?)。UV座標を調整して、ようやくこの状態になりました。

クラスタにテクスチャマテリアルを適用する01   クラスタにテクスチャマテリアルを適用する02

これだけでもちょっと面倒な感じですが、さらに続きがあります(^_^;



◎アルファぬき(透明度処理)

テクスチャにはアルファ値(透明度)が設定済みなんですが、それを有効にする方法がよくわかりません。Q&Aで‘アルファ用マップを別途用意する手法’を見かけた記憶がありますが、プロパティやヘルプを見てもよくわかりません。

ネットを探ると、こちらにアルファマップ不要の手法が紹介されてました。こちらの方が汎用的でいいですね!

透明度処理01   透明度処理02

Color2alphaをPhongに接続する際にScalar_to_Colorというノードが自動生成されたので、RenderTreeの構成が記事と若干異なりますが、ほぼ同じ手順で透明化できました。これでようやくマテリアル設定完了。ふぅ…。

以前確立したこちらの手法を適用済みなので、DirectXシェーダへの変更作業は不要です。これが無かったらさらに面倒ですよw



◎ぱたぱたアニメ

旗ポリゴンが準備できたので、次にクロスメッシュを作成します。

9個のノットを持つリニアカーブを描き、各ノットの座標を調整してから8回複製して位置を調整。スクリプトを利用して8×8の平面クロスを作成しました。

しかし、このクロスにファンを適用しても動きません(風はOK)。おかしいなぁ、範囲内のオブジェクトに有効なはずなんだけど…。

あっ、動いた!風力や粘性を極端に大きくすると動きました。手順の問題ではなくて、パラメータ調整の問題だったんですね。

その後、サンプルを参考にパラメータを調整したのですが、なかなか思惑通りに動かなくて、時間かかりました。各パラメータの意味をきちんと勉強すべきなんだろうなぁ…。

クロスメッシュぱたぱた

Clothのパラメータやプリセットをいじってもろくに反応しなかったのですが、ClothOPのフォースタブの外力係数パラメータをいじると反応が良くなりました。先にこれを調整してから他のパラメータを調整すべきだったのかもしれません。



◎XNA動作テスト

クロスのNullをデフォーマとして先のポリゴンにエンベロープを設定し、XNAで動かしてみました。



XNAでは透明処理されませんでした。ガーン!
そうか、レンダツリーをいじくってもXNAでシェーダを一括置換するから無意味だったのね(哀)

もう少し派手に動かしたかったのですが、やりすぎるとシミュレーションが破綻するので調整が難しく、動きが地味になってしまいました。

動画をよく見ると、棒がチラチラして微妙に動いているように見えます。ファンの影響かと思ったのですが、Softimageで見ると棒は動かないので、ファンは無関係でした。

ということは、XNAのレンダリングの問題か?しかしXNAでよく見ると、棒の一部のポリゴンが瞬間的に移動してました。何だかなぁ(謎)



◎次回予告

テクスチャマテリアルに時間を取られて、肝心のクロスの勉強があまり進みませんでした。しかもXNAで透明にならないし><

というわけで、次回はテクスチャの透明処理に再チャレンジします。シェーダ改修はなるべく避けたいなぁ…。

テーマ : ゲーム製作 関連 - ジャンル : ゲーム

| BLOG TOP |
DATE: CATEGORY:雑記
今回は特別番外編です。

友人に送ったくだらないメールが案外好評だったので、実験的にUPします。くだらない話がキライな人は無視してください。




今日は月に一度のトライアル(少し離れたスーパーマーケット)遠征日。大量に購入してレジを済ませ、袋詰めコーナーでレシートを見ると、末尾にこんな記録があった。

鮮魚100円×2=200円

なんだこりゃ?魚なんて買った覚え無いぞ?
まさか長崎皿うどんのことか?
いやこれは別に記録があるな…。

レシートをざっとチェックしたが、どうにも心当たりがない。
ここでようやく次の客の分が紛れていたことに気付く。
ガーン!!

いつもならレジに戻って返金してもらうのだが、レジの行列を見て気が引けた。
レジでモメてあの行列を止めるのもなんだしなぁ…。
結局、諦めてそのまま退却したのだが、帰宅中ずっと頭の中で引きずっていた。

200円あれば67円のポテチが3つ買えたじゃねーか!
さんざん悩んで諦めたのが馬鹿みたいだ!

麻雀やゲーセンの200円とトライアルの200円は感覚的に違う。1円でも安いものを血眼になって探す場所で、200円丸損は大きすぎる。こんなに引きずるなら文句言えば良かったとさらに自己嫌悪に陥る。

ああ、10月22日はアンラッキーデーとして私の胸に3日間刻み込まれることであろう!!


帰宅後、全購入物とレシートの照合チェックを開始した。
そんなことをしてもさらに気が滅入るだけとわかっているのだが、やらないと気が納まらなかったのである。
しかしここでドンデン返しがあった。

うなぎのタレ×2=200円

そうか!コレだったのか!!
やっぱり文句言わなくて良かった~~!!!

結局、得も損もしてないのだが、気分はちょっぴり晴れやかになったw




いかがでしょうか?

普段は堅いメールが多いためか、とある友人に「いつものメールよりこっちの方がイイ!」と言われてしまいました。
それはそれでちょっとフクザツ(笑)

「もっと読みたい!」「くだらない話はヤメロ!」など、ご意見ご感想などありましたらお気軽にコメントください。

テーマ : 日記 - ジャンル : 日記

| BLOG TOP |
DATE: CATEGORY:Softimage Mod Tool
クロスXNA連携テスト
クロスシミュレーション動作テスト
アニメは貧弱だが、SoftimageのクロスシミュレーションがXNAで再生可能となったらしい。



◎XNAモデルへのコンバート

クロスシミュレーションの動作を受け継いだNullボーンを用意して、XNAにクロスの動きを反映させることができるか検証テストを行います。

まず、クロスのサンプルシーンに板ポリ1個とNull9個を加え、Null9個をデフォーマとしてエンベロープを設定しました。次に、板ポリをXNAモデルにコンバートしようとしたら、シーン全体がコンバートされてしまい、アニメーションマネージャを開く際にエラーが表示され、キャラクターキーセットが作成できない状態になりました。

この状態を回避するため、新規XNAシーンへのマージを試みたりしましたが、結局原因は元の板ポリが非モデル形式だったからというオチで、「作成>モデル>新規モデル」で板ポリをモデル配下としてからXNAモデルに変換したら成功しました。

新規モデル作成という、最も基本的な手順を知らなかったことが問題ですね(汗)



◎試行錯誤

板ポリメッシュとデフォーマ(Null)の関係を設定したので、次に、板ポリデフォーマがクロスメッシュの動きに連動するようエクスプレッションを設定します。

頂点番号を指定するパスがわからないので、適当なスクリプトファイルをDLして解析を試みました。でも、VBスクリプトとエクスプレッションは微妙に違うみたい…。

mast.flag.geometry.Points.208.posx

こんな感じで適当にエクスプレッションに設定すると、Unknown elementでエラーになりました。もっと確実な方法で調べないとダメですね><


前回注目したスクリプトなら、カーブとメッシュ頂点の間にエクスプレッションorコンストレイントが設定されると思うので、そちらでメッシュを作成して設定状態を確認しましょう。



◎クロスメッシュの作成

スクリプトをインストールして実行すると、メニューが表示されます。

HairRigメニュー

わかりやすくていいですね。3本のベジュノットカーブからクロスメッシュを作成しましょう。

HairRigで作成したクロスメッシュ01   HairRigプロパティ

プロパティが「クロス」って感じでちょっと感動^^

さらに中身を確認すると、メッシュとは別にNullが21個作成されており、メッシュがコンストレインオブジェクト、nullが被コンストレイントオブジェクトに設定されています。つまり

クロス → null

の連携が確立されており、クロスメッシュを動かすとnullも動きました。How Nice!!(素晴らしい!!)

前回紹介した記事は正しく記述されてました。疑ってごめんなさい。でもお陰様でXNA連携できそうな気がしてきましたよ!



◎おや?

いろいろ試そうとしたら、2回目以降作成したクロスメッシュが風に連動しません。最初はスクリプトやメッシュの問題かと思いましたが、フォースを削除して追加すると動かなくなるので、フォースとの連携設定やシミュレーション環境の問題かもしれません。できれば乱流を使ってみたかったのですが、まだ動かすに至りませんでした。

シミュレーションの勉強はまだこれからですので、原因はいずれわかると思います。とりあえず動く状態に調整してXNAで試してみましょう。



◎XNA連携テスト

クロスのNullをデフォーマとして板ポリのエンベロープを設定し、XNAで動くか確認しました。

…が、動きません。ガーン!!

キャラクターキーセットを確認すると、板ポリのSRTしか登録されてませんでした。通常はデフォーマから自動生成されるのですが、今回は手動で追加する必要がありそうです。

しかし、アニメーションマネージャでキー項目の確認はできるのですが、追加は出来ないようです。とりあえず通常機能の「マークパラメータの追加」でNullのPosを追加すると、エクスプローラ上のKeyableParamsには追加されますが、アニメーションマネージャのキャラクターキーセット一覧には反映されません。うむむぅ…。

そもそも、キャラクターキーセットの自動生成時にNullが無視されるのは何故でしょうか?Nullが板ポリのデフォーマとして認識されているのは確認済みなんですが…。

待てよ?NullのEnvelopeGroup(リンク)だけじゃなくて、Nullの実態も同一モデル階層下に配置しないとダメなのでは?

結局、同一階層下に移動してキャラクターキーセットを再作成したら、NullのPosも追加されました。忘れた頃にひっかかる落とし穴だなぁ…。



◎再テスト

その後もXNAでビルドエラーが発生したりしましたが、最終的にはXNAでクロスを再現できました。まだシミュレーションの勉強を始めたばかりなので、動きが貧弱なのはご容赦ください。



動いた瞬間感動して、夜中に声を上げそうになりましたw



◎クロスシミュレーション再生手順

以下、クロスメッシュの動きをNull経由で板ポリメッシュに伝えてXNAで動かす手順です。

1.スクリプトを利用してクロスメッシュを作成する

2.風等のフォースを配置しクロスメッシュの動作を確認する

3.板ポリを新規作成する

4.板ポリをメッシュ→通常モデル→XNAモデルに変換する

5.クロスのNullをデフォーマとして
  板ポリのエンベロープを設定する

6.アニメーションマネージャでキャラクターキーセットを
  取得し、新規アクションを作成する

7.PublishしてXNAで動かす

ソフトボディやヘア等も上記手順で出来そうです。余計な手間が少なく実用的なので、後日HPにまとめるつもりです。



◎次回予告

いや~久々にXNAで感動しましたw

階層違いで動かなかった時は「やっぱり駄目なのか~!?」とかなりショックでしたが、諦めずに最後まで達成できたのは、過去の試行錯誤経験と最近の勉強の下積みがあったからでしょうね。

XNAで動くことが確認できたので、次回から改めてシミュレーションをしっかり勉強します。

テーマ : ゲーム製作 関連 - ジャンル : ゲーム

| BLOG TOP |
DATE: CATEGORY:Softimage Mod Tool
パーティクル01
パーティクルの練習
粒子が上昇するシンプルなパーティクルモデルを作成した。粒子はポリゴンのようだが、XNAで動くのか?



◎フォース

フォースとは、自然な動きをシミュレートするためのコントロールオブジェクトです。Softimageでは重力、風、ファン、ドラッグ、アトラクタ、旋風、円環状、乱流、渦巻きの9種類があります。

フォースはシミュレーションタイプの一種かと思ったのですが、そうではなくて、シミュレーションオブジェクトやシミュレーション環境に適用するものだそうです。

シミュレーションタイプには パーティクル/流体/エクスプロージョン/ヘア/リジッドボディ/クロス/ソフトボディ などがあり、これらにフォースを適用してシミュレーションを構築します。

えーと…1つのフォースは、シミュレーションタイプと、シミュレーションオブジェクトの両方にリンクする、ということ?…いや、シミュレーションタイプとシミュレーションオブジェクトはイコール(同じもの)みたいですね。

実際にフォースを適用して試してみたいのですが、その前に適用対象となるシミュレーションオブジェクト(パーティクル等)を作る必要がありそうです。



◎パーティクル

ヘルプでパーティクルの説明を見ると、凄いボリュームです。パーティクルだけでNURBS関連全体に匹敵します。従来ペースだと半月ぐらいかかりそうです。今はパーティクルにそこまで時間かけたくありません。

というわけで、一度断念したこちらのチュートリアルに再びチャレンジすることにしました。

噴水の土台

以前は土台を作ることさえ出来ずに断念しましたが、カーブやサーフェイスを修得したので今回は簡単に作成できました。

パーティクル01

まだ重力等のフォースは未適用で、粒子が真上に上昇するだけの状態ですが、パーティクルがこんなに簡単に作れるのは嬉しいですね!

でもこれ、XNAでちゃんと動くでしょうか?



◎XNA連携テスト

とりあえずこの段階でXNAで動くか試してみました。

パーティクル02

全く動きません。と言うか、XNAに渡す前にアニメーションマネージャでアクションを指定する対象が無い(キャラクターキーセットを取得できない)ので、動かなくて当然です。

XNA連携ヘルプを確認すると、XNA連携でサポートするアニメは Transform animation だけでした。ということは、パーティクルもクロスもヘアもシェイプも全部ダメってことです。

ガーン!!



◎クロスサンプル

このままだとSoftimageを使う意味が無い…とまで言えるか微妙なところですが、デザイナーさんに「全部トランスフォームアニメだけで作って」とは言いにくいので、何とかXNAで動かす方法を探りましょう。

ランダムで次々に粒子を発生させるパーティクルは難しそうなので、クロスシミュレーションをテーマとします。

クロスサンプル

これはSoftimage付属サンプルです。風/ファン/重力フォースが存在し、再生すると海賊旗がパタパタとはためきます。

旗自体はポリゴンですので、ポリゴンが動く軌跡をアクションに格納してXNAに渡すことはできないでしょうか?例えば、シミュレーションデータをプロットしてアクションを格納し、.xsiファイル出力機能でXNAに渡すとか…。



◎非トランスフォームアニメについて

XNA連携機能は、Transform animationしかサポートしません。では他のアニメ機能以外は一切使えないかと言うと、そうとも限らなかったりします。例えば、コンストレイントやエクスプレッションの設定の一部は、XNAに反映されることがあります。

具体例を上げると、SoftimageのIKアニメはコンストレイント機能で実装されていますが、XNAで再現されます。これは、コンストレイントで計算された結果であるTransform値(アニメ)をXNAに渡しているからです。ボーン位置を定数で指定したエクスプレッションなども同様で、エクスプレッションにより計算されたボーン位置をトランスフォームアニメとしてXNAに渡すので有効です。逆に、他のオブジェクトの計算結果を前提としたコンストレイントやエクスプレッションは、XNAで無視されます。

シミュレーションやシェイプアニメーションも、最終的に頂点が移動する様子をトランスフォームアニメとして渡すことができれば、XNAで再現できるのではないかと考えました。



◎暗中模索

考え方は悪くないと思うのですが、具体的にどうすれば良いのかというと、わからないことだらけです(汗)

例えば、アクションの格納機能は17種類もありますが、これらがシミュレーションやシェイプをサポートしているのかはっきりしません。ヘルプを読んだ感触としては、シミュレーションとシェイプはアクションの範囲外っぽいです。ソフトボディとかどうなるんでしょうか?(謎)

全頂点のSRTをキー設定したり、キャラクターキーセットに含めたりすれば可能かもしれませんが、データ量は膨大になります。各頂点の軌跡をFカーブ/パス/トラジェクトリ等に変換すればデータ量は減りますが、XNAに渡す際に無視される可能性が高そうです。うーん…。

シェイプはアクションにプロットできるようなので、もしかしたら何とかなるかもしれません。シミュレーションはキャッシュファイルへプロットしてAnimation Mixerに渡せるとのことですが、ここからAnimation Editorに渡すことは多分出来ないと思うので、やはり簡単にはいかなさそうです。うーん…。



◎光明?

ヒントを求めてネットを探ると、こちらの記事を見付けました。クロスの挙動をボーンに落とし込むことができるなら、XNAにも渡せるのではないでしょうか?

スクリプトの元を辿っていくと、初めはこちらがベースとなって、それを実用化したのがこちら、さらに改良したのがこちらのようです。

元々は、カーブやボーンをガイドとしてリグを作成するスクリプトのように見えますが、改良版ではメッシュが生成されて、それにフォースやコリジョンを設定するそうです。クロス、ヘア、ソフトボディ等で使えそうです。

これでボーンとクロスが連携されるなら、XNAでも有効ではないか?と思ったのですが、よく考えるとちょっと違う気がしてきました。最初に見付けた記事の

このクロスの挙動を、ボーンに落とし込みます。

という記述から

クロス → ボーン → メッシュ

というイメージが先行してしまったのですが、冷静に考えると

ボーン → クロス → メッシュ

の可能性が高そうです。後者であれば、クロスの動きはXNAに伝わりません。うむむ…。



◎次回予告

クロスメッシュの頂点数と同数のNULLを作成し、そのNULLをボーンとして最終メッシュに伝えれば

クロス → NULL(ボーン) → メッシュ

という流れでXNAにも反映されると思うのですが、どうでしょうか?

というわけで、次回はその検証を行う予定です。

テーマ : ゲーム製作 関連 - ジャンル : ゲーム

| BLOG TOP |
DATE: CATEGORY:Softimage Mod Tool
ポイントを連続性の管理対象外にする
サーフェイスメッシュの組み立て練習
複数のサーフェイスを1つのサーフェイスメッシュに組み立てて、接合部に穴を開けた。接合部の上下部分が滑らかで、中央付近が連続性の管理対象外となっている。



◎サーフェイスメッシュの概要

複数のサーフェイスを空間上に配置してサーフェイスメッシュを作成します。

接合部を滑らかに連続させるには、接合境界のコントロールポイントを揃える必要があります。接合部の連続性を管理するのが「サーフェイス連続性マネージャ」で、コントロールポイントを揃えるのが「境界のスナップ」オペレータとのことです。


他に、概要説明の中でちょっと引っ掛かったのは次の一文です。

個々のサブサーフェイスには、ローカルマテリアルとローカルテクスチャを使用できますが、 UVテクスチャ投影はサポートされません。

ローカルテクスチャはXNAでサポートされるのか?などと考えたりしましたが、それ以前にサーフェイスメッシュが非サポートでした。つまり、ポリゴンへの変換時にローカルテクスチャがサポートされるかどうかの問題であって、XNAで試す必要はありません。



◎境界のスナップ

サーフェイスメッシュを組み立てる前に、「境界のスナップ」機能で境界付近のポイントの位置を揃えます。

境界のスナップ01   境界のスナップ02

以前練習で作成したモデルを対象コピーで複製し、オペレータスタックをフリーズしてから元のモデルをいじって境界付近を歪ませました(左図)。その後、境界をスナップすると、2つの境界が綺麗に揃いました(右図)。

境界線があるように見えるのは、境界付近でカーブの角度が急激に変化するからです。



◎サーフェイスメッシュの組み立て

サーフェイスメッシュのコマンドメニューに「アセンブル」というのがあって、何の機能か予想出来なかったのですが、これがサーフェイスメッシュの組み立てコマンドだそうです。
これだからSoftimageのネーミングセンスは…(以下略)

サーフェイスメッシュの組み立て

2つのサーフェイスを組み立てて単一のサーフェイスメッシュとし、SCM Fixer Op2(サーフェイス連続性マネージャ)の設定で境界をシームレスにしました。もちろん、元の形状のまま組み立てることも可能です。



◎接合部に穴を開ける

一部のポイントだけ連続性の管理対象外として、穴を開けることができます。

ポイントを連続性の管理対象外にする

中央付近のポイントを連続性の管理対象外として穴を開けてみました。

クラスタにポイントを追加したのは初めてです。ヘルプの表現がわかりにくくて少々苦戦しましたが、一度慣れてしまえばしめたものw



◎オペレータスタック

オペレータスタックとは、オブジェクトに適用された全ての操作履歴です。ポイントの移動なども全部オペレータスタックで記録されます。うへ~(汗)

槍兵モデルが次第に重くなっていったのは、アクションではなくオペレータスタックが原因だったようですね(爆)
時々手動でフリーズするか、履歴が記録されないイミディエイトモードを活用すべきでした。


通常のツールでは、履歴は「元に戻す」「やり直し」ぐらいしか利用できませんが、Softimageは以前の操作履歴をピンポイントで編集可能です。編集結果が現在のオブジェクトに反映された上で、それ以降の操作履歴も改めて反映されます。

これが大変便利な機能であることは以前から知っていたのですが、基礎的な知識が全くない(オペレータスタックの実体がどれかすら定かでない)ので、活用できないばかりか混乱の要因になってました(^^;

とりあえず今回はオペレータの分類、実体、フリーズ操作などを確認しました。一番の収穫は、フリーズすべきタイミングが何となくわかってきたことです。というか、こういう基礎的なことを知らずに試行錯誤するなんて、無謀としか言いようがないですね(爆)



◎コンストラクションモード

Softimageでよくわからなかったモードの1つに、コンストラクションモードというものがあります。これはモデリングやアニメーション等の作業工程を4つに分けて、編集前に予め工程(モード)を選択しておくと、オペレータスタックの履歴が4つの領域に分けて記録される、というものです。こうしておけばオペレータスタックがさらに活用しやすくなります。

なるほどな~と感心する一方、これを日常的に活用してるのは一部の上級者ぐらいで、他の人達は特定の操作のときだけ活用しているのではないかと予想しました。少なくとも今の私には過剰機能と思います。

ちなみに、オペレータスタックの順序はドラッグ&ドロップ操作で簡単に変更可能ですが、コンストラクション領域に影響し注意事項が多いので、順序変更は当面自粛します。

ただ、「フリーズM」機能のMはモデリングコンストラクションのMということなので、フリーズ対象は全領域かモデリングコンストラクション領域のみかを意識する必要がありそうです。



◎次回予告

XNA4.0が正式リリースされたそうですね。いずれバージョンアップしたいのですが、Softimageライブラリ等の問題があるので、当面は旧バージョンを使用します。

NURBS関連の修得が完了したので、次回からシミュレート関連を修得します。

テーマ : ゲーム製作 関連 - ジャンル : ゲーム

| BLOG TOP |
DATE: CATEGORY:Softimage Mod Tool
トリミング01
トリミングの練習
カーブを使ったトリミングの練習。穴の空いたパーツや複雑な境界のパーツなどが作成しやすくなる。



◎ノットカーブの挿入

ヘルプに「同じ位置に複数のノットカーブ(多重ノット)を追加して、鋭い隆起を作成することもできます」と記述されているのですが、実際にやってみるとサーフェイスが隆起しません。オプションをいじっても変化なし。追加したノットカーブを別途Transformしろってことでしょうか?

説明を読んだ時は、ナイフツールでポリゴンのエッジを立てる時と同じような効果が得られそうな気がしたのですが、何か勘違いしてるのかなぁ?いろいろ試してみたのですが、すっきりした答えは見付けられませんでした。



◎サーフェイスの分割について

ノットカーブの削除機能を試すため、カーブを片っ端から消していくと、必要最低限のラインだけ残せば原形を維持できることに改めて気付かされました。NURBSサーフェイスの凄さを改めて実感すると同時に、ちょっと疑問が湧いてきました。

ポリゴンの場合は、分割数を増やすと滑らかになりますが、NURBSサーフェイスは分割数を増やしても形状に影響しません。これって何の意味があるんですかね?XNA連携等でポリゴンに変換する場合は意味がありますが、それ以外では無意味な行為なのでしょうか?



◎サーフェイスの修正

法線の反転、サーフェイスの開閉、UVのシフト、スワップなどを一通り試してみました。

サーフェイス閉じるシフト開く

先日のモデルを閉じてトーラス(ドーナツ)形状とし、UVシフトで境界をシフトしてから再度開いた状態です(上図)。

UVアイソライン、つまり任意で好きな所を指定できるので、NURBSサーフェイスの加工は(頂点やエッジを前提とするポリゴンよりも)自由な感じがします。


サーフェイスの整理

先日のモデルをクリーン機能で整理し、コントロールポイント数を減らしてみました(上図)。たった4つのノットでこの形状を保てるのは凄いかも。


サーフェイスのステッチ01   サーフェイスのステッチ02

モデルを複製して左右均等に配置し(左図)、中間カーブを指定してステッチを実行すると、左右非対称の形状になりました(右図)。これは、左右それぞれのモデルから中間カーブを見ると、カーブの向きが逆方向に見えるためです。



◎カーブを使った投影とトリミング

サーフェイス上にカーブを投影し、他のモデリングに活用したり、境界の内側or外側を削除することができます。穴が空いたパーツや複雑な境界のパーツを作る際にとても便利な機能です。

トリミング01   トリミング02

例のモデルの上方に円形カーブを投影してトリミングしてみました。左図はカーブの内側、右図は外側を切り取った状態です。いろいろ使えそうな機能ですね^^


トリミング03

両面ポリゴン化(複製&反転)してXNAで表示できることを確認しました。切り口が結構滑らかなのでポリゴン数をチェックすると158でした。ポリゴン数を減らしたい場合は他の機能で調整可能です。



◎鋭い隆起の作成

「サーフェイスのヒント」のページに、鋭い隆起の作成方法が記述されてました。

多重ノットカーブを使用する以外で3次NURBSサーフェイスに鋭い隆起を作成するには、ハルが自分自身を交差するようにコントロールポイントを配置する方法があります。

多重ノットカーブで鋭い隆起を作ることができなかったので、もう1つの方法を試してみましょう。

鋭い隆起の作成01   鋭い隆起の作成02

ポイントを引っ張り上げて隆起を作成し(左図)、赤矢印と青矢印のポイントを入れ替えてみました(右図)。
ハル(青線)が交差して隆起(黄矢印)が鋭くなりましたね。



◎次回予告

トリミングという単語は時々見掛けたのですが、こういう機能だったのですね。上手に活用したいものです。

ヘルプではサーフェイスとサーフェイスメッシュの項目を分けて説明しています。次回はサーフェイスメッシュです。

テーマ : ゲーム製作 関連 - ジャンル : ゲーム

| BLOG TOP |
DATE: CATEGORY:Softimage Mod Tool

回転体を作成する練習
グラスの断面をカーブで描き、回転体作成機能でグラスを作成した。このようなアニメが簡単に作成できるのもSoftimageの特長の1つ。


◎押し出し-2プロファイル(その2)

カーブを開く角度を変えたり向きを反転したりポイント増減したりといろいろ試したのですが、なかなか上手くいきません。一度諦めかけたのですが、再びチャレンジしてようやく思い通りの形にすることができました。

押し出し-2プロファイルの練習03   押し出し-2プロファイルの練習04

レイルカーブをライトビューで2つのプロファイルカーブの中央に描いていたのが間違いで、トップビューでプロファイルカーブの両端に描いたら上手くいきました。

押し出し-2プロファイルの練習05   押し出し-2プロファイルの練習06

形は良いのですが、何故か暗い感じになりました(上左図)。

これは法線の影響のような気がしたので、カーブを反転して法線の向きを変えようとしたのですが、変化なし。よく考えると、Softimageは両面レンダリングなので、面が反転しても意味が無いようです。

そこで、プロファイルカーブを指定する順番を変えると、明るくなりました(上右図)。

指定の順番を変えると第一/第二カーブが入れ替わるので、オプションの法線指定とライトの位置の関係で、明るさが変わったようです。



◎4サイド

4本のカーブを使って面を作る機能です。

4サイド

わかりやすい機能ですね。4つのカーブを時計回りで選択するという点だけが不可解ですが…反時計回りじゃないの?



◎ロフト

複数の断面プロファイルカーブを使って立体を作る機能です。ロフトという単語はQ&Aで頻繁に出てきましたが、コレのことだったのですね。

ロフト

こちらの「機能紹介>Modeling>ロフト」を真似て指を作ろうとしたのですが、とても指に見えません(汗)

チュートリアルの画像は職人技ですね。
でも爪を付けるのはズルくない?w



◎軸の周りに回転

カーブを回転させて立体(回転体)を作る機能です。たまにスイープという単語を見かけますが、回転体のことだったのですね。



わざわざ動画にするのもどうかと思いましたが、キャプチャしたら34KBと小さかったのでUPしちゃいましたw



◎カーブに沿って回転

別に用意したカーブを軸としてプロファイルカーブを回転させて立体(回転体)を作る機能です。

カーブに沿って回転

ヘルプとチュートリアルでカーブを選択する順番が違いますが、チュートリアルが正しくてヘルプが誤りでした(苦笑)


これで、カーブからオブジェクトを作成する9機能が一通り修得できました。



◎法線の確認

ヘルプを適当に読み漁ると、法線が表示できることに気付きました。これはいいですね。序盤のモデルの明暗について、法線の向きを確認しましょう。

法線の確認01   法線の確認02

左図の暗いモデルは、法線(青)が内側に伸びています。Softimageは両面レンダリングですが、内外両面が内向き法線として処理されたため、内外両面が暗くなったようです。

右図の明るいモデルは、法線(青)が外側に伸びています。内外両面が外向き法線として処理されたため、内外両面が明るくなったようです。

XNAでは片面のみ表示される

XNAで確認すると、やはり片面しか表示されませんでした。
Softimageは両面レンダリングですが、ポリゴンは片面しか存在しないようです。内側と外側の明るさを変えたい場合は、両面にポリゴンを張って法線を変える必要がありますね。

ちなみに、プリセットのオレンジ色が反映されないのは、ディフューズカラーのフォーマットがイレギュラーでXNA用のシェーダにマッチしないからです。多分HLSLをちょっと改修すれば対応可能でしょう。



◎3Dオブジェクトの分類

Softimageには様々なタイプのオブジェクトがあります。これを体系的に把握すれば、SRT変換やコマンドの実行対象となり得るか予測しやすくなると思うので、まとめてみました。

・ジオメトリオブジェクト
 →ポリゴンメッシュ、サブディビジョンサーフェイス、
  カーブ、サーフェイス、サーフェイスメッシュ
 →ポイントクラウド、パーティクルクラウド、
  ヘアもこれに分類される

・ヌル
 →空間内の位置を定義する

・インプリシットオブジェクト
 →数式により定義される基本シェイプ
 →レンダリングやデフォームは不可
 →リグのコントロールオブジェクトとして使用可

・コントロールオブジェクト
 →波、重力、風などの自然の力を表現するオブジェクト
 →パーティクルなどのシミュレーションに影響する

 ・チェインエレメント
  →ルート、ボーン、エフェクタ

 ・ラティス
  →オブジェクトの変形に使用する3Dの格子

 ・ウェーブ
  →ジオメトリオブジェクト内に波紋を作成する

 ・テクスチャコントロール
  →テクスチャをジオメトリオブジェクト上に
   投影する方法を定義、制御する

 ・フォース
  →重力、乱流、風などの自然のエフェクトを
   定義するコントロールオブジェクト

 ・ボリュームデフォーマ
  →ジオメトリオブジェクトの変形に使用する
  →オブジェクトのセンターから境界に向かって
   一定の割合で減衰していく

・カメラ
 →レンダリング対象となるビューを定義する

・ライト
 →照明

リグのコントロールオブジェクトは、上記のコントロールオブジェクトには該当しません。上記のインプリシットオブジェクトに該当します。

リグモデル作成当時の謎がまた1つ明らかになりましたが、Softimageの用語はやっぱりややこしい(苦笑)

他にも、単語の意味が一般的なPC用語と微妙に異なることが多く、初心者を混乱させる一因となっています。用語の理解を前提としたヘルプを書くなら、用語辞典も付けて欲しいですね。



◎次回予告

サーフェイスメッシュの構築は一通り修得できたので、次回はサーフェイスの修正、カーブを使った投影、トリミング等を勉強します。

テーマ : ゲーム製作 関連 - ジャンル : ゲーム

| BLOG TOP |
DATE: CATEGORY:三国志軍記開発
戦略三国志
戦略三国志
基本プレイ無料のブラウザゲーム。建物の建設等は他のブラウザゲームと同様だが、武将はカードで表現されており、合成/強化/伝授なども可能。



◎9月の目標達成度

・活動時間月144時間以上

実績:108h(達成率:75%)

 (中間目標:9/15迄に72h以上)

実績:57h(達成率:79%)


・槍兵モデル再作成(24h)

実績:22h(達成率:100%)


・旗手モデル作成(24h)

実績:構成検討中断(達成率:1%)


・履歴画面イメージ作成(8h)
・企画見直し(40h)

実績:未着手(達成率:0%)


・ブログ更新/HP更新(48h)

実績:41hでブログ更新(達成率:100%)


・予定外の作業

実績:41hでSoftimage修得(達成率:?)


XNA連携の目処が立ち、Softimageの修得が進んだのは良いのですが、活動時間が少なすぎです(ーー;



◎作業時間分析

作業時間集計2010年9月(PDF形式)

○良かった点
・Softimage修得はメリハリを付けて取り組んでいる
・ブログの月間UP件数は今年最多

○悪かった点
・活動時間が少なすぎる


Softimage修得の時間は項目毎にバラつきがありますが、これはテーマ毎にどこまで深く追求すべきか考えながら取り組んだ結果です。今回はこれまで苦手だったカーブとサーフェイスを克服すべく集中的に勉強しています。

活動時間が少ない点は非常に問題ですので対策を講じます。(後述)



◎Softimage修得について

以前は「XNAで動かなきゃ意味ないじゃん」ってことで、どうしてもSoftimageに対して本気になれなかった(実はメタセコイアに戻るか悩んでました)のですが、槍兵モデル再作成が納得できる状態で完了し、XNAで動く目処が立ちました。これでようやく腰を据えてSoftimageに取り組めます。

しかし私はあくまで「モデル制作は他人任せ」を前提としているので、今後Softimageとどのように向き合うべきか迷っていたのですが、あるQ&Aを見て「これまでのやり方じゃダメだな」と痛感しました。

そのQ&Aは「別ツール製のアニメモデルがSoftimageで動かない」という質問に対し、「様々なパターンが考えられる云々…」と細かい回答があり、2つのツールの違いやモデルの特性を知らないと答えられないような内容でした。

私は他人に作ってもらったモデルを動かしたいのですが、そのためにはこの回答者と同レベルにならねばなりません。しかし闇雲に試行錯誤するだけでは、いつまでたっても「NURBS?なにそれ?」レベルから抜け出せません。やはり「基礎から応用までしっかり勉強する必要がある」と痛感したわけです。

ですが、Softimageの機能はボリューム満載で、英語も含めると情報は無数に存在します。私にとっては不要な機能や情報もあるので、どのように学習すべきか手探りで始めたわけですが、しばらくすると自分の学習スタイルが確立してきました。今はヘルプを中心に他の情報を参照しながら進めています。



◎活動時間について

ブログはわりとコンスタントに更新していたので、集計するまで気付かなかったのですが、9月の活動時間が8月より少ないのは、我ながらちょっとショックです。

やる気や集中はOK、手応えも感じているので、あとは活動時間が増えればペースが上がると思いますが、やる気があるのに活動時間が伸びないのは何故?

…自己分析の結果、‘時間に対する緊張感が足りない’という結論に至りました。

例えば、ブログをUPすると満足してその日の活動は打ち切ってしまうのですが、まだ時間はあるのだから活動続行すべきです。体調が悪くて休むなら、体調の良い時にその分活動すべきです。

そんな分かりきったことが実践できないのは、緊張感が足りないからです。こういう時は「気合いだー!」とかけ声をかけると一時的に気合い入りますが、しばらくすると凋んでしまうので、持続可能な工夫を施す必要があります。


実は2009年7月も同じような問題に直面し、総合管理という対処策を講じました。その後現在に至るまで鳳雛さんにメールし続けて、一定の成果がありました。(作業時間やジョギングの実績データはこのメールを集計したものです。ちなみにジョギングが1年以上続いたのは生涯初ですw)

今後はこれをさらに発展させて、前日の実績と当日の予定をツイッターで毎日UPします。実績だけでなく予定もUPするのは正直しんどいですが、本気で取り組むならそれぐらいやらないとイカンですね。


…そういえばブログで自己紹介するのは初めてですが、私のツイッターのアカウントは‘Na_78’です。別に大した話はしてませんが、もしよろしければフォローしてやってください。



◎進捗状況チェック

スケジュールは凍結中です。企画見直しが完了したら、スケジュールの見直しを行います。



◎10月の目標

・活動時間月160時間以上
 (中間目標:10/15迄に80h以上)

・Softimage修得(64h)

・旗手モデル作成(16h)

・履歴画面イメージ作成(8h)

・企画見直し(24h)

・ブログ更新/HP更新(48h)

10月はSoftimage修得強化月間とします。
やる気がある今がチャンス!!



◎次回予告

次回は前回のサーフェイス(&ポリゴン)修得の続きです。

テーマ : ゲーム製作 関連 - ジャンル : ゲーム

| BLOG TOP |
DATE: CATEGORY:Softimage Mod Tool
カーブネットの練習02
カーブネットの練習
縦横のカーブでオブジェクトの形状を作成してから面を作る練習。オプションを利用すると、手描きのカーブが綺麗に補正された。



◎回答

前回フォーラムに質問しましたが、その返信を頂きました。
(リンクが閲覧できない人はこちら

アドインヘルプ(英語)にサポートノードの一覧があり、その中にNURBSサーフェイスが含まれていないので、非サポートという結論です。アドインヘルプは昔一通りチェックしたつもりでしたが、見落としてました。

DEARNAさん、どうもありがとうございました。_O_



◎サーフェイスの構築

サーフェイスの概要と選択方法を一読したので、次は構築です。


○フィット

既存のサーフェイスの形を崩さずに新しいサーフェイスを作成する機能です。


○ブレンド

2つのサーフェイスの隙間を埋めるサーフェイスを作成する機能です。

サーフェイスのブレンド機能

試しに球(赤)と円盤(緑)をブレンドすると、こんなオブジェクトが作成されました(青)。何と何をブレンドするとどんな形のオブジェクトになるのか?想像するとちょっと楽しいかも^^


○フィレット

2つのサーフェイスの交差を滑らかにするサーフェイスを作成する機能です。

サーフェイスのインターセクションのフィレット

球と円錐の接合部をフィレット機能で滑らかにしてみました。どこかで見覚えがある形?w


○マージ

2つのサーフェイスをスパンする3つめのサーフェイスを作成する機能です。

元の2つのオブジェクトも含まれた形状となる点や、「継ぎ目」などのオプションが存在する点がブレンドと異なります。


機能名はいずれも「修正」のイメージですが、Softimageではターゲットと別のオブジェクトが新規作成されるので「作成」機能に分類されるわけですね。

でもこれだけでは既存オブジェクトの加工だけで自由なオブジェクトを作成できません。やはりカーブをベースに作成できるようにならないと…。



◎カーブからオブジェクトを作成する

カーブからオブジェクトを作成する機能が9種類あります。この9種類の機能に関しては、ポリゴンメッシュもサーフェイスメッシュと同様の手順で作成可能です。

機能共通説明の中で、下記2点がちょっと気になりました。

・同じ方向において3次入力カーブと1次入力カーブが混在している場合、その方向の次数は必ず1次になります。
 →混在時は3次が望ましいのでは?

・テクスチャUV座標はプロパティエディタで生成ボタンを押すと生成されるが、削除時はエクスプローラでクラスタまたはプロジェクションを選択して削除する
 →この操作性がSoftimageらしい(ー_ー;



◎バイレイル

ヘルプにはプロファイルカーブとレイルカーブという単語が出てきますが、例によって単語の説明がありません。ネットを検索すると、3Dの世界では断面図の膨らみを表すカーブをプロファイルカーブ(=断面カーブ)と言うようです。レイルカーブは…はっきりしません(汗)

ヘルプを見ただけではよくわからないので、結局こちらの機能紹介のModelingを参考にしました。

バイレイルの練習01   バイレイルの練習02

試しにカーブの上側を揃えずに実行したら、綺麗に作成されました。プロファイルカーブは他のカーブと上下を揃えた状態に拡縮されて作られるようです。

ポリゴンメッシュを作成する場合も同様の操作です。この形状だと見た目もほぼ一緒でした。



◎カーブネット

横方向(U)、縦方向(V)の形状をカーブで作成してから面を作る機能です。

カーブネットの練習01   カーブネットの練習02

カーブが若干歪んでいるため、曲面も若干歪んでしまいました(左図)。ノットの座標を数値入力しないと綺麗な曲面にならないと思われたのですが、オプションの‘特徴一致’をチェックしたらカーブが綺麗に補正されました(右図)。

おおスゲー!どーゆー判断基準なん?w

このオプションは「パフォーマンスに重大な影響を与えることがあるので注意してください」とのことですが、多分Softimage上でレンダリングする場合の話でしょう。モデルデータ出力時は計算結果が出力されると思うので大丈夫と思います。

ちなみに、この形状で分割数が少ないとポリゴンの方が露骨に角ばって見えました(下左図)。光が反射する面としない面の境界が目立つからでしょう。

カーブネットの練習03   カーブネットの練習04

ここで‘特徴一致’のチェックを外すと、意外と滑らかに見えました(上右図)。他の角度から見てもあまり不自然に感じません。不揃いなカーブのはずなんですが、人間の目は錯覚しやすいってことかなぁ?

ちなみに、‘特徴一致’をチェックして分割数を増やすと、ポリゴンでも綺麗で滑らかな曲面になります(ポリゴン数は増えます)。



◎軸に沿って押し出し

物体の断面カーブをまっすぐに押し出しながら面を作る機能です。

軸に沿って押し出しの練習

わかりやすい機能なので、リニアで適当に描いて確認終了。次行きましょう。



◎カーブに沿って押し出し

物体の断面カーブを用意したカーブに沿って押し出しながら面を作る機能です。

カーブに沿って押し出しの練習01   カーブに沿って押し出しの練習02

これもわかりやすい機能ですね。終了位置にキーを付けて伸びていくアニメも確認しました。こーゆーアニメが簡単に作れるのもSoftimageの特徴の1つでしょうね。



◎押し出し-2プロファイル

1本のレイルカーブに沿って押し出しながら面を作る機能ですが、先端と終点の形状を指定可能です。

押し出し-2プロファイルの練習01   押し出し-2プロファイルの練習02

適当にカーブ作って試したら、かなりヘンな形状になりました(左図)。ポイントを数値で正確に調整するとマシになりましたが、どうしても両サイドのY座標が0にならず、宙に浮いてしまいます。

…一見簡単そうな機能なのに、こんな所で悩むとは(汗)



◎次回予告

10月になったので、次回は「9月の総括と10月の目標」です。

テーマ : ゲーム製作 関連 - ジャンル : ゲーム

| BLOG TOP |

copyright © ゲーム制作の舞台裏 all rights reserved.Powered by FC2ブログ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。