2016年1月29日金曜日

Pseudophysics driven bonesを使って揺らしてみる

Pseudophysics driven bonesはfaceRigで使われる髪の毛やアンテナ等の動くと揺れるボーンです

この特徴は
・振り子運動である。移動による圧縮延伸は起らない
・物理では無くあくまで揺れるだけの物で重力の影響を受けず当たり判定も無い
・現行verでは揺れる角度の制限も出来ない

うん、ごっつ使い辛い!

しかし受動的に揺らすにはコレしかありません

基本的な構造は下記が一セット

(Root > 揺らすボーン) + フラグ用Locator

揺らすボーンは各Root毎に一本限定
フラグ用ロケーターはボーンでも可ですがボーン数には上限があるので出力されないロケーターを使うのがベターです
フラグ用ロケーター名は"Rootボーン名" + "_planeNormal"とする必要があります
フラグ用ロケーターを持つRootボーンの子が揺れるようになります
例: Hair > HairPhys > Hair_planeNormal だとHairPhysが揺れる

フラグ用ロケーターの場所はどこでも関係ないようで、Rootの親にしても揺らすボーンの子にしても認識しました

自分が解りやすい場所に置いておけばいいようです

取りあえず作ってみます

適当に作った角柱にボーンを入れてほどよく曲がるようにウエイトを塗ります

フラグ用ロケーターも忘れずに

インポートしてテスト

揺れました

が。

この構造だと前後と右方向には揺れますが左方向には揺れませんでした
マニュアルにはこうあります
-The Y axis of this third bone represents the normal of a collision plane, which can be used to restrict the physics bone movement.
このthird boneというのがフラグ用ロケーターです
今のロケーターの回転軸を見てみるとこうなってます

Y軸がrepresentsされているのであれば左方向にも動き、後方には動かないはず

マニュアルにはこうもあります
-Beware that in some 3D applications Y and Z axis must be swapped from what Facerig is using.
Z軸が基準となって動くのであれば左方向には揺れない事に説明がつきます

実験
Y軸の方向はそのままにZ軸を変更

そしてテスト

前後左右に動くようになりました
Mayaの場合はZ軸が基準になるようです

つまり揺れるボーンの可動域はオリジナルの角度から+-60度ほどで、かつフラグ用ロケーターにより定められた範囲内に限る、と

これを利用すると髪が顔を貫通しないようには出来ます
しかしおっぱいの微妙な揺れを制御するには絶望的に足りません!
おっぱーとしては機能増強を強く要請します!!

って公式スレッドに書いたら消されるでしょうか

2016年1月23日土曜日

表情が動くモデルを作ってみる11 アイコンとプロフィールを作る

今回はアバター選択時のアイコンとプロフィールを作ります


イケメンな写真を撮って

縦横比1:1に切り取り適当な大きさにリサイズ
256x256もあれば十分でしょう
ico_アバター名.pngで保存
ヤマネコさんの場合はico_yamaneko.png
SteamLibrary\steamapps\common\FaceRig\Mod\VP\PC_CustomData\Objects\アバター名フォルダーの中に置く



ついでにプロフィールの編集を
同フォルダー内にあるcc_names_avatarアバター名.cfgをテキストエディタで開き
set_friendly_name avataryamaneko yamaneko

set_friendly_name avataryamaneko 'YAMANEKO-SAN'
に変更して名前表記をYAMANEKO-SANに

次にプロフィールを追加
set_avatar_skin_description avataryamaneko default 'Luchs - the gurdian of Serene Coast forest'

テスト


プロフィールの変更は適用されてますがアイコンが出てない

公式フォーラムを検索してみると「ico_フォルダー名.png」にしろとの事
ヤマネコさんの場合はico_avataryamaneko.png

変更して再テスト

小アイコンは適用されましたが大アイコンが出てない

再度公式フォーラムを彷徨うと
「コンフィグファイルでアバター名を変更した時は二行目の『set_skin_for_avatar avatarアバター名 Default Default』を消せ」と

消して保存して

再々テスト

良し

表情が動くモデルを作ってみる10 textureを仕上げる

Special AnimationとPoseを作りたいんですがマニュアルには何も書いて無いのと
試しに作ったアニメが認識はするが動かないという状況でして
公式スレッドで聞いてみたら「これから作り方のドキュメント作るわー」との事ですのでそれが出来るまで他の事をします

というわけでtextureを仕上げます

faceRig Texture Maps纏め

一々Import Wizardを通して再起動させるのもメンドクサイので
faceRigを起動させたままフォルダー内のテクスチャーを置き換えます
フォルダーの場所はSteamLibrary\steamapps\common\FaceRig\Mod\VP\PC_CustomData\Objects\アバター名
置き換えてからアバターを選択し直せば反映されます

ヤマネコさんの基本として使っているsht_metalclothシェーダー用のテクスチャを揃えます
要素は以下
diffuse("d")
normal("b")
normal("b1")
normal("b2")
normal("b3")
normal("b4")
specular("s")
specular2("s2")
anbient occlusion("ao")
colorize mask("cm")

1.diffuse "d"
通常のdiffuse textureです


2.normal "b"
通常のnormal mapです


3.normal "b1","b2","b3","b4"
animated normalsに使われるそうですが今回は使いません

4.specular  "s"
faceRig独自形式のspecular mapです
RGB各チャンネルとAlpha別々に使います

Red
channel gives information about the Glossiness factor >1 for rough surfaces 255 for shiny ones.
Between 1 to 5 for rough surfaces, 5 to 12 for a very little shine and increasingly shiner towards 255.
光沢の設定値で数値が高いほど強くなります、と書いてあるように読めるんですが
影の部分にだけ働く光・環境光のような挙動をし、数値が低いほど強くなります

50%に近くなると効果が目に見えなくなります


光らせたくない所の数値を高くしました



Green
used to set values for different materials,from 0 for hair and cloth,to 255 for other material types(metal,plastic,etc).
数値が低いほど光の影響が強くなるようです

マテリアルがなんちゃらとかの記述は何なんでしょうか

ほどほどに抑えました


Blue
used to specify areas of object that remains unaffected by lighting resulting in a light emitting effect when placed in the shadow (glow in the dark effect), 0 for non emissive and 255 for full emissivity.
光の影響の強さです
数値が高いほど影が薄くなります

表記の無い部分は50%

ヤマネコさんにはあまり影を落としたく無いので高めにしました


最終的にR/G/B各レイヤーはレイヤーモードを除外にして重ねて保存します


Alpha
gives information about the Specular Power 0 for no specular 255 full specular.
光沢の強さで数値が高いほど強くなります、と読めますが
光が当たっている部分では余り変化は無く、影になる部分の挙動に影響するようです


emissive同様高めにしました

必要なレイヤーを複製・結合し
Ctr + Aで全体を選択してCtr + Cでコピー
Alpha チャンネルを選択してCtr + Vでペーストです

マニュアルの記述と実際の効果が違う気がするんですけど私が英語noobだからでしょうかね?

5.specular2 "s2"
マニュアルに詳細無し

追加のspecular mapで光沢に色を付けられます
光沢の出方は"s"の設定値に依存しているようです

下は"s2"のテクスチャはそのままに"s"のAlphaを変更した物


明度に関係なく色相・彩度を反映するので
「一見黒く見えるけど彩度持ち」でもお構い無しに色を付けてくれます


Alphaチャンネルが適応率に対応しているようですが0の無効以外はあまり違いがわかりません


1-10%ぐらいは変化があるようなないような

鼻と肉球に少し赤みをいれてAlphaはRGBをそのままコピーしました


6.anbient occlusion("ao")
通常のAOだと思いますが今回は使いません

7.colorize mask("cm")
アバターの色変更の設定に使います
今回は使いません

一通り揃えてこうなりました

肉球の質感は良いのですが全体的にヌメり気が足りてません
が、ひとまずコレでいきます

いい方法を思いついたら手直しします

faceRigモデルのUV展開時の留意点

faceRigのシェーディングはUVmap上で分離されているエッジの影響を受けるようです

ヤマネコさんの体と帽子のUVmap



ミラーリングした時に結合し忘れていた中央のエッジもうっすらと

強い光が当たらない限りさして目立ちませんが頭の片隅に置いておきましょう

又、UVが重なっている部分は重ねただけ影が多重にかかる疑いがあります


髪の毛等でテクスチャを使いまわすのは注意が必要です
片側を作ってミラーリングしてUV共有したままなのもこれに該当します

追記

geometryそのままにUVを変更したら濃い影が出なくなったので確定です
別オブジェクトだと大丈夫なようなのでテクスチャを使いまわす場合は別けましょう

2016年1月22日金曜日

faceRig Texture maps

随時加筆

faceRig上でのテクスチャーの扱いは通常とは違う物がある
テクスチャーはalpha有tga *32bitで保存しないとalphaが破棄されるので注意
サイズは二の乗数(16,32,64,128,256,512,1024.etc)
avatarName + "_" + shaderName + "_" + textureType.tga
例:"chinko_kitou_d.tga"
chinko - アバター名
kitou - シェーダー名
d - テクスチャータイプ、"d"はdiffuse

Texture Types Suffixes

"d" diffuse
"b" normal map
"b1" 追加normal map
"b2"追加normal map
"b3" 追加normal map
"b4" 追加normal map
"s" specular
"s2" specular2
"sc" skin scatter
"ao" ambient occulusion
"m" fur mask
"cm" color mask
"iristext_d" sht_eye
"roatext_d" sht_eye

1. Diffuse texture:"d"
通常通りRGBとAlphaチャンネル
alphaは0(black)が完全透過、255(white)が不透明

2. Normal map textures:"b"
通常通り
デフォルトはR127 G127 B255 A255

3. Specular texture:"s"
デフォルトは全て0

Red
channel gives information about the Glossiness factor >1 for rough surfaces 255 for shiny ones. Between 1 to 5 for rough surfaces, 5 to 12 for a very little shine and increasingly shiner towards 255.
光沢の設定値で数値が高いほど強くなります、と書いてあるように読めるんですが
影の部分にだけ働く光・環境光のような挙動をし、数値が低いほど強くなります

50%に近くなると効果が目に見えなくなります


Green
used to set values for different materials,from 0 for hair and cloth,to 255 for other material types(metal,plastic,etc).
数値が低いほど光の影響が強くなるようです


Blue
used to specify areas of object that remains unaffected by lighting resulting in a

light emitting effect when placed in the shadow (glow in the dark effect), 0 for non emissive and 255 for full emissivity.
光の影響の強さです
数値が高いほど影が薄くなります
クロマキー用の緑背景は結構暗いので高くないと黒くなります

表記の無い部分は50%

Alpha
gives information about the Specular Power 0 for no specular 255 full specular.
光沢の強さで数値が高いほど強くなります、と読めますが
光が当たっている部分では余り変化は無く、影になる部分の挙動に影響するようです


-additioal Specular texture:"s2"
デフォルトは全て0
マニュアルに詳細無し

追加のspecular mapで光沢に色を付けられます
光沢の出方は"s"の設定値に依存しているようです

下は"s2"のテクスチャはそのままに"s"のAlphaを変更した物


明度に関係なく色相・彩度を反映するので
「一見黒く見えるけど彩度持ち」でもお構い無しに色を付けてくれます

激闘の記録

Alphaチャンネルが適応率に対応しているようですが0の無効以外はあまり違いがわかりません


1-10%ぐらいは変化があるようなないような

4. Fur mask texture;"m"
デフォルトは全て255

5. ambient Occlusion texture:"ao"
デフォルトは全て255
Red channel should hold the PPAO(Per Pixel Ambient Occlusion) information for tensed muscles.
Green channel should hold the directional attenuation information for relaxed muscles.
Direct light Attenuation 0 means no direct light (only ambient and radiosity) 255 full direct light intensity.
Blue channel should hold the directional attenuation information for tensed muscles.
Direct light Attenuation 0 means no direct light (only ambient and radiosity) 255 full direct light intensity.
Alpha channel should hold the PPAO information for relaxed muscles.

6. Colorize mask texture:"cm"
デフォルトは全て255

色変更の範囲と影響の強さの制御に使われる
255(white)に近いほど影響を受けなくなる
RGBとAlphaを使って同時に二種の範囲を制御できる

Additional skins for avatars and props

2016年1月21日木曜日

表情が動くモデルを作ってみる9 アニメ編6 anim フォルダー用 表情アニメ

アニメテンプレートと一覧参照
ファイル形式はcollada
フレームレートは30fps
開始フレームは0

今回作るアニメはcheekL/Rを除いて
-This animation is used as a reference for shading nodes activating specific normal maps.
だそうです
よく解りませんが今まで作ったアニメで作れる物ですので作っておきます

今回のアニメはanimフォルダー直下に置きます



ではひとつづつ
_frown
LeftEyebrow_DとRightEyebrow_Dを同時に行ったもの

_laugh
MouthCloseLeft_UとMouthCloseRight_Uを同時に行ったもの

_unveilTeeth
サンプルはMouth_unveilledTeeth_Uとは違う形ですが
問題ないと判断しMouth_unveilledTeeth_Uを使いました

_wonder
LeftEyebrow_UとRightEyebrow_Uを同時に行ったもの

さてこの二つ
cheekL
cheekR
-It's an animation used for correcting transformations for bones surrounding the mouth for models used retargetting tracking method.
This surrounding bones are not tracked so they get transformations from this animations.
They must have idle pose at frame zero,and the subsequant frame useally contains MouthOpen,Laugh,and purse lips poses.
The animation is set on central and left side bones.

口回りのボーンの動きは追跡出来ないのでこのアニメで補完します、というのと
このアニメは中央と左側のボーンだけを含みます
というのは何となく解るんですが

0frameはidleポーズに、subsequant frameにMouthOpen,Laugh,and purse lips posesを含みます

私の辞書には載ってない単語なんですけどもsubsequantって何ですかね?subsecondの誤記ですかね?
教えてグーグル先生!
次の検索結果を表示しています: subsequent

('A`)
英語noobは一文字間違いでも解らなくなるのでしっかり校正していただきたい!

サンプルでは2frameまでしか無いのですが、0-30frameが原則ですので
0frameをidleポーズに、15frameで口を引き、 30frameですぼめました

テストimport

しようとしたらcheekファイルが一覧に出てきません
手動でファイルを指定しそのままimportすると
ANIMATION_UNKNOWN.daeが生成されました
再度geometoryファイルを読み込んでみるとUNKNOWNANIMATION.daeがcheekL/Rに指定されます
サンプル準拠に0,1,2frameにキーを移動し、0-2frameを書き出すも変化なし
その状態で0-30frameを書き出しても同様

公式のサンプルファイルだと読み込んでるんで
 読 み 込 ま な い

尤も手動で指定してimportするとコピー先のフォルダにちゃんとcheekL/Rファイルが出来てますので

問題は無いんじゃないかとテスト

特に変化無し

まあ不具合も無かったので良し
次に行きます

今回の分の参考用画像抜粋

_unveilTeeth

cheekL
0が原点
サンプルの不備なのか仕様なのか2frameまでしか無い
↓はそれぞれ0,1,2frameの物