今さら始めるセカンドライフ♪ りた~んず

タイトルのとおりです( ´艸`)
「セカンドライフに今更ながらハマってます。。。。おっ!、これタイトルにしようw」(2011年)・・2016年現在もいろいろ遊んでますよ~♪


テーマ:

引き続きにゃらんニコ調音譜

 

前回の記事で、

http://ameblo.jp/nyachio3/entry-12213272413.html?frm_id=v.mypage-checklist--article--blog----nyachio3_12213272413

 

3dsmaxでリグドメッシュを作る際、カルシウム不足問題Secondlife(SL)へのアップロード時に骨組み情報が無視される問題と、

一応、3dsmax上でそれを回避する方法について書きました。

 

その回避方法は簡単に言うと、

 

未使用ボーンにも0ウエイトを無理やりつける音譜

 

という、バグ技なんだか仕様なんだかわかんない方法で、しかも超めんどう・・汗汗

 

 

基本リグの26ボーン構成だって、スキニングの度に毎回やるの面倒ですし、フィットメッシュの50ボーン構成になってくるともうやる気なんておきません。

 

あたしは顔面だけアップしたいの~汗

 

に、なんで足のボーン設定せにゃならんのね。あせる

 

・・・

 

と、ちょっと脱線しまして、

3dsmaxでスキンを扱う場合のワークフローっていうかあたしのやり方なんですが、

まず基本のリグに対して、ある程度完成したメッシュでスキニングをします。

 

で、その後メッシュを作りこんでいったら、スキンラップモディファイヤとかスキンユーティリティーウェイト情報をコピーするやり方が多いです。

 

この辺のやり方は、3dsmaxでスキンを扱う場合の基本的な操作方法(?)なので詳細は省略しますけども、

 

https://knowledge.autodesk.com/ja/support/3ds-max/troubleshooting/caas/sfdcarticles/sfdcarticles/kA230000000u0TZ.html

 

 

このスキンラップとかでオリジナルのメッシュからウエイト情報をコピーする際に、新たにスキンモディファイヤが割り当てられます

 

そーすると、またカルシウム不足問題が発生するので全ボーンにウエイト付けする作業をしないとならなくなります・・・

 

非効率汗汗

 

効率よくできないかしら・・

 

あ、こういうのMAXスクリプト作ればいいじゃん!!

 

という事で、簡単なMAXスクリプト組んでみました音譜

 

---------------------

 

--スキンモディファイヤで選択された頂点一個だけにちょこっと全ボーンのウェイトつける

(

    local mfSkin =$.skin
    local boneNum = skinOps.GetNumberBones  mfSkin
    local vNum=skinOps.GetNumberVertices mfSkin
    local vIndex = 0
    
    format "Vertices:%\n" vNum
    
--強制的にボーン上限を設定
    mfSkin.bone_Limit = boneNum
    format "Max bones:%\n" boneNum
    
--使用されていないボーンをリストアップする
    local barry=#()
    for i=1 to boneNum do(
        barry[i] = 0
    )
    
    for i=1 to vNum do(        
        local wc=skinOps.GetVertexWeightCount mfSkin     i
       
        --ついでに選択頂点のIDを一個だけ確保
        if  (skinOps.IsVertexSelected mfSkin i )==1 then(
            vIndex = i
            format "Selected:#%\n" vIndex
        )
    
        for j=1 to wc do(
            local bID = skinOps.GetVertexWeightBoneID mfSkin i j
            if barry[bID]==0  then(
              local nm = skinOps.GetBoneName mfSkin bID 1             
              format "Bone used: % by #%\n" nm i
            )
            barry[bID]=1          
        )
    )
    
    for i=1 to boneNum do(
        if barry[i]==0 then(
            local nm = skinOps.GetBoneName mfSkin i 1             
            format "Unused: %\n" nm
        )
    )

--リストアップされた未使用ボーン
    if vIndex!=0 then(
        for i=1 to boneNum do(
            if barry[i] ==0 then(
                --選択された頂点に強制的にちょこっとウエイト設定してやる
                skinOps.SetVertexWeights mfSkin vIndex i  0.001
            )
        )
    )

)

---------------------

 

ウエイトが1になってる頂点を1個選択して、その頂点に対して未割り当てボーンのウエイトをちょこっと設定するという乱暴なスクリプトですw 

(なんでかって話は前回の記事をごらんください)

 

あ、スクリプトに関する質問とか一切お答えできませんのであしからずショボーン

 (そんな詳しくないので汗

 

前回の基本26ボーン構成のでやってみますね。

 

「絶対mHeadだろ~、ここは!」」的な頂点1個選んで

 

 

ウエイトテーブルで確認

 

 

 

スクリプト実行!!

 

 

実行後、選択頂点のウエイトを1に戻せば終了~グッド!

 

 

楽ちん音譜

 

まー、

MAXスクリプト詳しくないので、もっと良い処理の仕方があるかもしれませんけど、とりあえずはこれでよしとしてますw

 

これ、使えるならフィットメッシュの50ボーン構成でもめっちゃ楽できるじゃん!!

 

でも、フィットメッシュ全ボーンの基本ウエイト設定を1からするのも大変ですので、

ここはテンプレート的なものが欲しいです。

 

http://wiki.secondlife.com/wiki/Mesh/Rigging_Fitted_Mesh#Download_links

 

アップこのリンクから入手できるフィットメッシュのサンプル"Skeleton.Female(Male).dae"は予め基本的なウエイトが設定されているようですので、これをベースにします。

 

とりあえず、

顔面というか頭部部分だけの部分フィットメッシュを3dsmaxで作ってみます

めっちゃ、しっかり50個のボーンw

 

 

 

自作の顔面部分をボーンの位置にあわせます

 

 

 

で、スキンラップモディファイヤ適用してオリジナルのウェイト情報をコピーします

で、[スキンに変換]ぼちっとして

 

 

新たにスキンモディファイヤが割り当てられます。

 

 

そーすると、形状に合わせてある程度ちゃんとウエイト情報がコピーされてるのが確認できます。

 

 

 

この状態でdaeを出力してもカルシウム不足でフィットメッシュとして認識してくれません。

dae見てみますと、

 

<source id="CompositHead009Controller-Joints">
          <Name_array id="CompositHead009Controller-Joints-array" count="12">
 HEAD NECK mHead CHEST UPPER_BACK mChest L_CLAVICLE R_CLAVICLE BELLY L_UPPER_ARM
mSkull R_UPPER_ARM</Name_array>

 

12個だけ割り当たってます。 なんかフィット用のボーンで意味不明なのも割り当たってますけど気にしないw

 

 

したっけ、エンベロープ編集から良さ気な頂点1個選んで

 

 

さっきのMAXスクリプト実行

 

 

 

で、ウエイト1にもどします。

 

 

daeみてみますと、ちゃんとリンクが50個出力されてます。

 

<source id="CompositHead009Controller-Joints">
          <Name_array id="CompositHead009Controller-Joints-array" count="50">
 HEAD NECK mHead CHEST UPPER_BACK mChest L_CLAVICLE R_CLAVICLE BELLY L_UPPER_ARM
mSkull R_UPPER_ARM mPelvis mTorso mNeck mEyeRight mEyeLeft mCollarLeft mShoulderLeft
mElbowLeft mWristLeft L_HAND L_LOWER_ARM mCollarRight mShoulderRight mElbowRight
mWristRight R_HAND R_LOWER_ARM LEFT_PEC RIGHT_PEC LOWER_BACK mHipRight mKneeRight
mAnkleRight mFootRight mToeRight R_FOOT R_LOWER_LEG R_UPPER_LEG mHipLeft mKneeLeft
mAnkleLeft mFootLeft mToeLeft L_FOOT L_LOWER_LEG L_UPPER_LEG PELVIS BUTT</Name_array>

 

SLにアップするときって、この骨情報のリンク個数とボーン名で判断してるのかしら・・・はてなマークはてなマーク

だとすると、別の回避方法も考えられますけど、まーいいやw

 

で、SLにアップしますと

お、カルシウム認識されてる( ´艸`)

 

 

 

部分フィットメッシュとしてちゃんとアップできます音譜

 

 

顔面びょ~ん音譜

ちゃんと頭部のスケールとかに追従しますねラブラブ


 

最終的な調整とかフィニッシングはBlender先輩とAvaster使ってもいいんですけど、

モデリング作業途中でBlenderへ持ち込まずとも、3dsmaxで出力して形状確認できるので、

とても効率が良くなりました音譜

 

必要なとこだけじっくり調整すればいいんですからねラブラブ

 

ということで、

フィットメッシュの50ボーン構成でとりあえず作業方針っていうか、やり方の目処が立ちましたので、

 

じゃあ~、いよいよ

Project弁当の160ボーンやってみましょかね音譜

 

ってなりませんはてなマーク( ´艸`)

 

フェイスアニメーションとかやってみたいな~

 

ま~でも、

(部分)リグドメッシュ&フィットメッシュを3dsmaxで作ってSLへアップするにょだ音譜という目的で、

だいたいの作業目処が立ちました。

 

自分用のアバのシェイプとかも3dsmaxに取り込めましたし、

あとは、衣装でもヅラでもいいし、

作りこめばいいですねラブラブ←ここが一番難しいしw

 

そんなこんなで、

現行SLの仕様向けの、とりあえず的備忘録はここで一旦終了で~す

 

 

AD
いいね!した人  |  コメント(0)  |  リブログ(0)

AD

ブログをはじめる

たくさんの芸能人・有名人が
書いているAmebaブログを
無料で簡単にはじめることができます。

公式トップブロガーへ応募

多くの方にご紹介したいブログを
執筆する方を「公式トップブロガー」
として認定しております。

芸能人・有名人ブログを開設

Amebaブログでは、芸能人・有名人ブログを
ご希望される著名人の方/事務所様を
随時募集しております。