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の音声をリセットする項目でレジストし直してやれば、名前が変わってくれます。
セックス中の声って、キャラクターの見た目より大事だと思います(しみじみ)。


0 件のコメント:

コメントを投稿