2012年10月23日

ユーザー法線を再適用してくれるやつ

ちょいと小ネタ
121016_1.jpg
ユーザー法線です。ポリゴンはエンベロープで変形します。
SIはエンベロープで変形の際、ユーザー法線も変形に沿って更新してくれるので・・・

121016_2.jpg
ギャーーーーーーーーーーーーー!!!

どうやら一度でもICEで編集したことのあるユーザー法線に関してはICEをフリーズした後でもその対象ではないご様子(SI2012で確認)
ICEのレイキャストで半球の法線をアニメ調のキャラの顔に転送・・・なんてことをしたとするとゾッとしますね。ゾッとしましたよ。
GATERで転送してきた法線や、マージ、抽出したポリゴンの法線もなんかおかしなことになるみたい?


そんな訳でユーザー法線を一旦削除して適用しなおしてくれるスクリプトを書くことに・・・
VBスクリプトです
===========================================================================

Option Explicit
dim nCls,nProp,obj,i,e

if selection(0).type = "normal" then
set nProp = selection(0)
set nCls = selection(0).parent
set obj = selection(0).Parent3DObject
redim v((nProp.Elements.count * 3) - 1)
redim a(ubound(v) / 3 - 1)
i=0
for each e in nProp.Elements
v(i) = e(0)
i = i + 1
v(i) = e(1)
i = i + 1
v(i) = e(2)
i = i + 1
next

for i = 0 to ubound(a)
a(i) = nCls.Elements(i)
next

'ユーザーノーマルを一旦削除→作成→削除しないと何故かうまくいかない
RemoveUserNormals selection(0), False
CreateUserNormals obj, False
RemoveUserNormals obj, False
SetUserNormalValues obj,a,v
end if
===========================================================================

ICEをフリーズしてユーザーノーマルプロパティを選択して実行
121016_4.jpgこれ
スクリプトの使用は自己責任でお願いします。
既にエンベロープを適用している場合は、一旦削除するかミュートするかリファレンスポーズにするかしてボーンの影響を受けていない状態にして使用してください
また、アンドゥ、リドゥを繰り返すと法線がおかしなことになったりするので注意です
121016_3.jpg
とりあえず何とかなった・・・
SDKにユーザーノーマルプロパティの中身が見当たらなかったので手探りで調べる羽目に・・・どこかに載ってたのかな・・・?
posted by ちょちょ at 02:50| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。