2018/05/26

SexLabの表情jsonの書式

昔、ゲーム内で表情を確かめながらSexLab用の表情jsonファイルを作れるModを作った覚えがあるのに、どこに行ったかわからなくなりました。おまけに二年前の表情ファイルもMCMでSexLab自体の設定をエクスポートしたら上書きされて無くなってしまいました。
sex中の「表情」は「音声」の次に大事だと思ってるので、死活問題です。

とり急ぎ、SexLab用の表情jsonファイルがどんな仕様だったか、確認し直したのでメモっておきます。
SexLabの表情jsonとは「skse/plugins/SexLab/」に出力される奴のことですが、ぱっと見は数字の羅列で何がなんだかわかりません。
数字はそれぞれ「Phoneme」「Modifire」の各項目の強度になっており、最後に「MOOD TYPE」とその強度の「MOOD Strength」が並んでいます。
「female1」~「female5」、「male1」~「make5」の項目は受・攻の各フェイズを表しています。フェイズは最大5つまで、もちろん多い方が表情の変化をより楽しめます。

「Phoneme」は0から15の下記の16項目がそれぞれどのくらいの強さで適用されるかで並んでいます。強さは1~100を0.01~1.00として記載します。
0:Aah
1:BigAah
2:BMP
3:ChjSh
4:DST
5:Eee
6:Eh
7:FV
8:i
9:k
10:N
11:Oh
12:OohQ
13:R
14:Th
15:W
お次は「Modifire」。0~13まであります。カッコ内の日本語はRaceMenuの表情メニューの日本語訳です。
0:BlinkL(瞬き左)
1:BlinkR(瞬き右)
2.BrowDownL(左の眉を下げる)
3.BrowDownR(右の眉を下げる)
4.BrowInL(眉を左に)
5:BrowInR(眉を右に)
6:BrowUpL(左眉を上に)
7:BrowUpR(右眉を上に)
8:LockDown(視線を下に)
9:LockLeft(視線を左に)
10:LookRight(視線を右に)
11:LookUp(視線を上に)
12:SquintL(右斜視)
13:SquintR(左斜視)
最後に「MOD TYPE」。TYPEの数字を記載したら、最後にその強さも追加します。
0:Dialogue Anger(怒り)
1:Dialogue Fear(恐れ)
2:Dialogue Happy(喜び)
3:Dialogue Sad(悲しみ)
4:Dialogue Surprise(驚き)
5:Dialogue Puzzled(混乱)
6:Dialogue Disgusted(うんざり顔)
7:Mood Neutral
8:Mood Anger(ムード・怒り)
9:Mood Fear(ムード・恐れ)
10:Mood Happy(ムード・喜び)
11:Mood Sad(ムード・悲しみ)
12:Mood Surprise(ムード・驚き)
13:Mood Puzzled(ムード・混乱)
14:Mood Disgusted(ムード・うんざり)
15:Combat Anger(戦闘・怒り)
16:Conbat Shout(戦闘・シャウト)

2018/05/25

SexLabの音声の弄り方

2年ぶりのSkyrimではSexLabを始めとするModがことごとくアップデートしていました。
私が愛用していた御三家Mod(SexLab・Defeat・Soulgem Oven)も全部新たなバージョンに入れ直すことになったので、ただいま絶賛魔改造中です。
ところでSexLabなんですが、二年経っても相変わらずSexLabの音声はイケてないですね。
SexLabを導入したら、まず真っ先に変更すべきはデフォルトの音声ファイルだと思うので、今日はSexLabの音声について覚え書きをまとめたいと思います。

まずSexLabのデフォルトの音声(女性用8種・男性用4種)は「Sound/fx/SexLab/」配下にあります。単純にこちらにあるwavファイルを同じ名前で別の物に差し替えてやれば、セックス中の音声が変わるわけです。各フォルダがどの音声名に対応しているかは下記の通りです。
vFemaleMoan01……Classic (Female)
vFemaleMoan02……Breathy (Female)
vFemaleMoan03……Young (Female)
vFemaleMoan04……Stimulated (Female)
vFemaleMoan05……Quiet (Female)
vFemaleMoan06……Excitable (Female)
vFemaleMoan07……Average (Female)
vFemaleMoan08……Mature (Female)
vMaleMoan01……Neutral (Male)
vMaleMoan02……Calm (Male)
vMaleMoan03……Rough (Male)
vMaleMoan04……Average (Male)
ちなみにこれらの音声フォルダの中はさらに「hot」「medium」「mild」のフォルダに分かれています(「hot」フォルダが無い音声もあります)。
名称からいって「mild」<「medium」<「hot」の順で再生されるのかなと思いきや、実はスクリプト上ではこんな設定だったりします。
上記はSexLabの音声全般を担当する「sslBaseVoice.psc」スクリプト内にある、セックス中に発生する音声を決定する関数です。
これを見る限り音声の出しわけはこんな風になっているのがわかります。
「Hot」……Strengthが76以上(ただしHotの音声が存在する場合)
「Medium」……レイプの被害者(ただしMediumの音声が存在する場合)
「Mild」……Strengthが75以下でレイプの被害者じゃない場合
「Strength(強さ)」はSex中は「Enjoyment」の値がそのまま放り込まれてます。
「Enjoyment(悦楽)」というのはSexLabのセックス中のステータスの一種で、Sexをどれだけ楽しんでいるかの数値です。SexLabのv1.6番台がリリースされた直後の頃は行為中にコンソール窓を開くと「Enjoyment」の値が確認できるように出力されてたんですが、今は開発モードにしても出なくなってますね。
この「Enjoyment」がどのような仕組みで増減するのかは、SexLabのv1.6になってからはSKSEのプラグインのdllの中で計算されるネイティブの関数になってしまったので詳細はわからないのですが、引数を見る限りでは「Sexのスキル」「前戯をしたかどうか」「Sex時間」「全ステージ内で現在どのステージにいるか」などが関係していることがわかります。
まあ私が観察する限り、Sexアニメーションのステージが高いほど「Enjoyment」が上がりまくって最終ステージではよっぽどの早漏でない限り100になってることが多いです。

まあそれはさておき、Sex中の音声がどのような法則で出し分けされてるかが分かったところで問題なのは、この「hot」「medium」「mild」の出し分けの条件が私の好みには全然合わなくて、単なる音声ファイルの差し替えでは何も改善されないということです。
私は、和姦と強姦とで声の出し分けは要りません。
ああ、イクイク…って極まってる時か、そこまでいってないか、くらいの区分けで結構。
(好みの音声ファイルを用意するのも大変だしね)
それよりも欲しいのは、女の子がフェラチオしている時の「んっ…んっ…」みたいな声です。
SexLabのオーラル系のアニメーションでは「silent」のフラグがつくので、いきなり音声が消えてシーンとなっちゃうんですが、今までアンアン言ってた娘が急に無言になるのは違和感ありまくりで結構萎えます。
そんなわけで私は「hot」をフェラチオ用の音声に、「medium」「mild」を和姦・強姦の区別なくEnjoyment(Strength)50を境目にして使い分けることにしました。

さきほどの「GetSound」関数をこんな風に変更。
これでStrength50以上と以下で「medium」「mild」のどちらかになります。
フェラチオ用の「Hot」はどうするのかというと、デフォルトの「PlayMoan」という関数をそっくり真似してフェラチオ専用に「PlayOralMoan」という関数を新たに作ってやります。
本当はデフォルトの「PlayMoan」関数の中でフェラチオ用とそうでない時の切り分けをしたいんですが、デフォのPlayMoanの引数だけでは「フェラチオしてる時」を判別できないのです。(勝手に引数を追加しちゃうと、SexLabの他のアドオンModでこの関数を呼び出している時にエラーになっちゃうので追加できないのよね)
なのでフェラチオ時かどうかの判定は、「PlayMoan」関数を呼び出している大元の「sslActorAlias.psc」でやります。
「sslActorAlias.psc」というのはその名前の通り、SexLabのセックス中のアクター全員にかかっているセックス中の人物の挙動を司るスクリプトです。

↓これがオリジナルの「sslActorAlias.psc」中の音声呼び出し
SexLabのデフォルトの設定ではセックス中の音声は各アクターの「OnUpdate」のタイミングで「sslBaseVoice.psc」スクリプトの「PlayMoan」関数が呼ばれることで発声するようになっています。
条件としては「isSilent」、つまり再生されているアニメーションが「音声無し」のフラグがついているかどうかしか見ていません。
あまりに大ざっぱすぎるので、それをこんな風↓に改造してやります。
「OpenMouth」というのは「Silent」と同じく、各アニメーションごとに設定されているフラグです。この「OpenMouth」のフラグが立っていると、そのアニメーションを再生するアクターはMfgコンソールのSetPhonemeModifierでガバっと大口を開けるのです。
(もちろんアニメの各ステージの各アクターごとにフラグが設定されているのですよ)
単に「isSilent」かどうかの判断だと、たまに手コキしてる時まで「Silent」になってる時があるので、おしゃぶりしているかどうかの判定は「OpenMouth」で判断した方がよいと思います。
こうして条件わけして、フェラしている時(OpenMouth時)は、先ほど作ったフェラ専用Moan(呻き)関数「PlayOralMoan」を呼んでやります。
二年前はボイスの種類を新たに追加するアドオンModを作ったりしたものですが、もうそこまでやるのは面倒くさいので、デフォルトの音声ファイルの差し替えだけで済むように改造しています。
とりあえずフェラしてる時、それ用の声が出ればいいよ、うん。

ところでデフォルトの音声ファイルを差し替えただけだと、どのフォルダにどんなタイプの声を入れたか、わからなくなりません?
「Classic (Female)」とか「Breathy (Female)」とかデフォルトの音声名のままだと判別つかないので、名前を変えてやりましょう。
MCM上のこの音声名を変えてやるには、デフォルトのボイス設定をしている「sslVoiceDefaults.psc」を弄ってやります。
たとえば「Average (Female)」だったら「FemaleAverage」という関数で設定されているので、その中にある「Base.Name」という項目のところを変更すればOK。
すでにSexLabを導入中でも、MCMの音声をリセットする項目でレジストし直してやれば、名前が変わってくれます。
セックス中の声って、キャラクターの見た目より大事だと思います(しみじみ)。


2018/05/17

MCMのMod名を変更する方法

調べたけど探し方が悪いのかどこにもやり方が載ってなかったのでメモ。
ただいま二年ぶりにMod環境構築中なんですが、しょっちゅう設定を弄るModは毎回探すの大変なんでMCMの一番上に登録されてて欲しいです。でもこのリストの並び順は勝手にMod名のアルファベット順で並んでしまうようになってる。
…というわけでMCMのMod名を変更して並び順を一番上に来るようにします。
まず変更したいModの、MCMを設定しているスクリプトを探す。大抵ファイル名に「mcm」とか「config」とかいう名称が入っているのでそれで見当をつけて、ファイルを開いたら一行目を見る。

Scriptname sslConfigMenu extends SKI_ConfigBase
こんな感じで「SKI_ConfigBase」の拡張スクリプトになってればアタリ。

そうしたら「OnGameReload()」イベントにMod名を変更する記述を加えます。
「OnGameRelad()」イベントはゲームをリロードするたびに呼ばれる処理。
これから新規で入れるModの場合は「OnConfigInit()」イベントの方がいいんだけど、既に導入してしまっている場合は「OnGameReload()」イベントの方がいいかと。
「ModName」というのはMCMで使われてるMod名の変数なので、元々あるその変数に変更したい名称をぶち込みます。

「OnGameRelad()」イベントがスクリプト内に無い場合は自分で追加しちゃって良し。
んでスクリプトをコンパイルしたらゲームを起動して、最後にコンソールコマンドでMCMをリセットします。

setstage ski_configmanagerinstance 1
これでMCMが再度Modをレジストし直してくれるので、変更した名前に変わってくれます。
このコマンドはMCMになかなかModが登録されない場合も有効。
batでいつでも実行できるようにtxtファイルにしてskyrimフォルダに入れておくべし。