2018/06/29

UIExtentions リストメニューの実装方法

ユーザーメイドのModが許されているゲームで、どれだけ斬新なModが登場するかは(1)モーションを自由に作れるかどうか(2)UIを自由にカスタマイズできるかどうか、の2点にかかっているんじゃないかと思う今日この頃です。
スカイリムでは、モーションの壁についてはFNISという偉大なModが早々に制約をぶち破り、発売から7年が経過した今では、プロの犯行かと思われるような秀逸なアニメーションが溢れかえっていますが(でも釣りモーションは探せども無いです。誰か作って!)、残念ながらUIの方面については、二、三年前から進化が止まっているように思います。
いい加減、SkyUIのMCMと覇権を競うくらいの新たなUIのフレームワークが出てきても良さそうなものだと思うのですが……いまだにMCM一択というのが残念でなりません。
また、メニュー追加系のUIでは、RaceMenuやEFFの作者さまがお作りになったUIExtensionsがよく使われているなあという印象です。こちらは特にリストメニューがよくできているので、Modderに好まれるのもさもあらん、という感じ。

これはスカイリムのデフォルトのリストメニュー(Message Box)
デフォルトのUIのリストメニューの致命的な欠点は、選択肢が横並びなところです。
横並びだとスペースの都合上、選択肢の個数が限られてしまうし、選択肢の内容も長いテキストは使えません(日本語のような全角文字だとますますつらい)。
デフォルトのメニューの利点ですが、唯一上げるとするなら、本体がMessageというオブジェクトなので選択肢のテキストがローカライズしやすい、という点でしょうか。
しかしそのせいでスクリプトだけでは完結しない(選択肢をCK上で追加しなくてはならない)ので、そこが不便といえば不便です。

ちなみにリストメニューを追加するUI Modとしては、SkyUIの作者さま作の「SkyUILib」についても、私としてはお勧めしたいところです。
字幕ModもDirectorもかな入力メニューも、私はこのModのソースを見ることができたから、Flashファイルの中身まで全部公開してくださっていたから作ることができました。
そんなわけで私にとっては師匠ともいうべき存在なので、ついでに紹介させていただきます。
SkyUILibのリストメニューはデフォルトのメニューの横並び状態を
縦並びにしただけのシンプルな作りです。
SkyUILibのリストメニューの利点としては、バニラのデフォルトのメニューと同様に、メニューの上にタイトル的な一文を追加できるという点がポイントです。
UIExtentionsのリストメニューだと選択肢オンリーなんで、「○○○について選んでください」というような補足説明が表示できないんですよね。
スクリプトもSkyUILibはバニラのMessageの「show()」と同じ感覚で使えます。

ところでスカイリムでは、こういったUI追加Modの実装方法を解説したドキュメントやチュートリアルのようなものって、全くといって良いほど見かけないですね。
汎用のMCMの実装方法については、作者様が自らGitHubのWikiにまとめてくださってますけど、SkyUILibもUIExtentionsも「ソースを見て察しろ」という状態です。
Modderの皆さんはどうやって使い方を会得してるんでしょうか。
皆さん、このくらいは説明なんかなくったって楽勝だろ、というレベルなのでしょうか。
少なくとも私は全然わかりませんでした……特にUIExtentionsは。さっぱり。

そんなわけで手探りで解読したUIExtentionsのリストメニューの実装方法を書いておきます。
■UIExtentionsのリストメニューの実装方法
UIExtentionsのリストメニューの最大の特長は、選択肢にさらに子の選択肢を簡単に追加していけるところです。この子選択肢の機能があるからこそ、多くのModで採用されているのではないかと思います。
UIExtentionsはフレームワークのスクリプトだけでなくUI自体のクライアントとなるespが独立して存在していますので、前提必須ModとしてUIExtentionsを導入した上で、下記のようにして自作Modの任意のスクリプト内でUIExtentionsのリストメニューを読み込みます。
UIListMenu listMenu = UIExtensions.GetMenu("UIListMenu") as UIListMenu
これでUIExtentionsのリストメニューを読み込んだ「listMenu」に関して、「UIListMenu.psc」の関数がなんでも使えるという寸法です。
というてもリストを用意するには「AddEntryItem」という関数さえ知っていればOKです。

たとえばこんな感じの構造のリストメニューを作りたいとします。
最初に「メインメニュー1」「メインメニュー2」「メインメニュー3」の3つの選択肢があって、そのうちの「メインメニュー2」「メインメニュー3」からはさらに分岐する。
「メインメニュー3」のサブメニューの2からは、さらに子の選択肢が3つ派生する。

このような構造のリストの作りたい時はこういう記述になります。
エディタのスクショ画像を貼ったので少し見ずらいですが。
でも「AddEntryItem」という関数だけで指定できてしまっているのが分かりますでしょうか。

「AddEntryItem」という関数で選択肢を追加すると、追加した選択肢は追加した順に0から通し番号が振られます。
(「AddEntryItem」関数の戻り値として取得することができます)
その番号を「entryParent」や「entryCallback」といった引数の値に使うことで、選択肢の分岐を指定するのです。
「entryParent」は自分の親の選択肢の番号、「entryCallback」はおそらく最初の分岐の根元の選択肢の番号です。また子の選択肢を持つ選択肢については「entryHasChildren」の値を「true」にしてあげます。
上記のサンプルではわかりやすいように選択肢のテキストを直接ぶちこんで個別に記述していますが、もちろんstringの配列でwhileなどを使ってまとめて記述してOKです。

選択肢の準備ができたら、あとは「OpenMenu()」関数でメニューを開き、選ばれた選択肢の情報を取得します。
「GetResultInt」で選んだ選択肢の通し番号が分かります。
また「GetResultString」で選んだ選択肢のテキスト自体も取得できます。

こうして書くと、結構単純な作りなのですが……何も説明がないので、どういうしくみなのか解読するのにえらい時間がかかりました。
せめてソースにコメントくらい書いておいて欲しいです。

2018/06/25

SexLab環境のCTD対策

CTDしまくりだったマイエロイリム環境が、試行錯誤の末ようやく安定してきたので週末は純粋にプレイを楽しむことができました。
ウィンターホールド魔法大学をより大学らしくするImmersive College of Winterholdと、ウィンターホールドの町を再建するQaxe's Winterhold Rebuildを入れてみたのですが、本命のSkyrim Romanceはそっちのけで大学生活を満喫しています。
これらのModを入れたからといって魔法大学のクエストに変更があるわけではないのですが、魔法系のスキルを学べる施設が充実したり、先生はより先生らしく生徒たちはより生徒らしく演出されていて、学生としての疑似体験プレイがはかどります。

幻想的な温室のルストラトリウム。
そういえば魔法大学にはスプラウト先生みたいな薬草学の講師っていませんね。
キナレス聖堂みたいなコレット先生のお部屋。
先生方の私室も個性に合わせて飾り付けされてて素敵です。
ちなみに最初はSexLab抜きでプレイしていたのですが、真面目に大学の先生たちにお金払って訓練受けようと思ったら、金策に困ってしまって結局SSLを入れるはめになりました。
何のModが変更しているのか不明なんですが、私の今の環境では薪割りで荒稼ぎができないのです(薪1本1Gにしかならない…)頼みの錬金術もやはり何かのModのせいで(たぶんComplete Alchemy and Cooking Overhaulだと思う)まったくお金にならない。
安易に売春に頼るのはどうかと思うんですが、その辺は自作でリスクを追加しているので、金稼ぎの手段としては我ながらちょうどよいバランスになっているのではないかと思います。
そんなわけでSexLabを入れてもCTDしない安定した環境構築というのが何をおいても大事なわけなんですが、いろいろ試行錯誤した結果、一番効果があったのは下記の2点でした。
(あくまで私のボロいPC環境で、の話です)

(1)必要のない時は「Creature Framework」のCloak rateを「0(無効)」にする。
最初は「Creature Framework」のMod自体のインストールを止めていたんですが、てんこもりのクリーチャーアニメがもったいないので、Modは導入しておいて、必要な時だけ機能をオンにすることにしました。
よくよくMCMの説明を読んでみたら、Performanceの「Cloak rate」を0にすればCreature Frameworkの機能は無効になるのですね。(set to 0 to disable entirelyって書いてある)
確かにここを0に設定すると、クリーチャーにちんちんを付けるスクリプトが全く配られず、ダッシュで屋外のフィールドを駆けまくってもCTDしないようになりました。
ちなみにクリーチャーとのSexを楽しみたい時は、Cloak rateを元の数値に戻すだけでOK。
Creature Frameworkを改めてリビルドする必要もなく、設定した秒数後にはスクリプトがその場のクリーチャーに自動的に配られ、ちんちんが付くのを確認しました。
昔は普通にインストールしても、クリーチャーにちんちん付かないことはざらにあったのですが、バージョンアップのおかげでしょうか、だいぶ反応が良くなりましたね。

(2)バニラ(デフォルト)の装備やアイテムをリプレイスするModは使わない

これは体感として個人的にかなり効果があったと思うだけで、CTDの原因になっていたという確証はまったく無いのですが、まあ、参考として。
SexLab用の環境にして、ちょくちょく起こるようになったのは、アイテムを表示するメニューを開く際に起こるCTDです。
倒した敵の持ち物を漁るためにインベントリを覗くとCTD。
お店で何かアイテムを買おうとするとCTD。
なんかもうメニューを開くのが怖くなってしまって、倒した敵のインベントリは漁らず、買い物もできるだけしないようにしてたのですが、とても不便で仕方がなくて。
いったい何が原因なんだろうとあれこれModを出し入れして、一番「あれ?めったにCTDしなくなったぞ」と実感したのは、バニラのリプレイス装備一式でした。
妊娠Modを導入する際に、バニラのデフォルトの鎧や服を妊娠対応にするべく「PSVAC pregnancy scalable vanilla armor and clothing」というModを導入していたのですが、これがどうも私の環境には合わなかったみたいで。
こちらを抜くとCTDすることがかなり減ったので、登場率の多いバニラのアイテムを直接差し替えることのリスクを改めて実感しました。
インベントリを覗くだけでCTDって、かなりのストレスです。
これは「なんとなくそう感じる」というだけの感想ですが、3Dの画面表示に関する部分で何かしらの問題が発生した場合のCTD率というのは致命的で、何も言い訳も弁解もなく、即落ちするような気がします。
そういうのはPapyrusのエラーログとか見ても無駄です。
そもそもスクリプト自体が元凶になっているCTDなんてほんの一握りなんじゃないかな。

(1)の「Creature Framework」の場合だって、別にスクリプトが悪いわけじゃなく、スクリプトの発動するタイミングが悪いだけだと思います。
おそらく一気に大量の3Dが読み込まれる瞬間が一番危険で……単品ならさほどの負荷ではないアイテムでも、塵ツモで問題が起きやすくなるんじゃないかと。
バニラのアイテムのテクスチャを高解像度なものに差し替えるのも、3Dの描画のタイミングでメモリを圧迫するのか、CTDの一因になってるような気がします。
(特にインベントリに入るアイテムは要注意)
まあ、私のPC環境が貧しいだけで、リッチな環境ではまったくの無問題という気もしますが。

そろそろPC買い替えようかなと思うんですが……普通、PCを四年以上使っていたら調子の悪いところのひとつやふたつは出てくるものなのに、今のPCはまったくの無問題なので、なかなか思い切って買い替えることができないんですよね。
次のTESが出たらと思っていたけど、まだまだ先のようだし……悩ましいです。

2018/06/20

SexLabのアニメ設定を複数保存したい

SexLabのMCMは項目が多くて設定するのが大変ですが、「再設定&掃除」の「設定を保存する」をクリックするとその設定が保存できることは誰でもご存じかと思います。
その際、アニメーションの有効・無効や強姦、前戯フラグのオン・オフなども一緒に保存されていることはご存じでしょうか。もちろん保存した時にレジストしていたアニメーションに限られますけども、人間・クリーチャー共に現在の状況が保存され、後からその設定を読み込むことで、再び同じフラグ状態にすることができます。
(もちろんレジストされていないアニメに関しては復帰しません)
ちなみにこの時、表情の設定も一緒に上書き保存されてしまうので、私はこのおかげで二年前に愛用していた表情jsonファイルを失いました。表情(Expression)の設定は個別にインポート・エクスポートできる機能がついているのだから、一括保存はやめて欲しかったです。
ああ、昔の表情jsonは会心の出来だったのにな……

それはともかくとして、アニメーションの設定もできれば個別に複数セーブ・ロードができたらよいのになと思う今日この頃です。
そんなわけで今日はSexLabとは別ファイルのjsonに、複数セーブ&ロードできる機能をお試しで作ってみました。
セーブ枠はお試しで3個作ってみましたが多くても10個もあれば十分かと。

↓こんな感じで、各セーブをまたいで利用できる外部jsonファイルとして保存されます。
SexLabのMCMのアニメーション設定を保存する関数をそのままパクったので、特に何の苦労もせず30分くらいでできました。
ちなみにSexLabは設定をエクスポートする時、ゲーム自体もセーブする必要があるんですが、いつも面倒くさいと思っていたので、ゲーム自体のセーブは不要にしました。

個別のModとしてブラッシュアップするか、もしくはDirectorに追加するか……考え中です。
セーブ枠が多いと何を保存したか見分けがつかなくなる可能性があるので、日時かセーブ名を残せる機能を追加してもいいかもしれませんね。

2018/06/19

笑いありエロスありのAnub's animation(Human編)

Billyy's SLAL Animationsのおかげでクリーチャーアニメに関してはめちゃくちゃ充実したマイエロイリム環境なのですが、人間のアニメはサムネが揃っているものは100足らずといったところで、物足りなさを感じるようになってきました。
そこで今日はAnub's animation dump (REBORN) Updated 10.06.2018 04.2018のHuman Animation 45種を撮影しましたよ。よかったらこちらどうぞ。
download :
SexLabDirector_Thumb_Anub's animation dump (REBORN) Human.zip (1.16MB)
バカップルにおすすめのアニメーション。一見の価値あり。
↑この「Anubs Training」というアニメ、ほんと笑わせてもらいました。筋トレしながらのSex、ぜひガチムチノルドのバカップルにやってもらいたいわあ。
そういえばスカイリムにバカップルってあんまりいませんね。トリグ×エリシフくらいしか思いつかない。
この杖を使ったマジックアニメ、ぜひネロス様に使っていただきたい。
ちなみにサムネ用のスクショを撮影する時、クロスヘアやキャラのアクティベート表示などが邪魔になるので、SexLabのSexシーンのステージ開始ごとに下記のようなスクリプトを使って自動的にUIの表示を消しているのですが、

UI.SetBool("HUD Menu", "_root.HUDMovieBaseInstance.Crosshair._visible", false)
UI.SetBool("HUD Menu", "_root.HUDMovieBaseInstance.ActivateButton_tf._visible", false)
UI.SetBool("HUD Menu", "_root.HUDMovieBaseInstance.RolloverNameInstance._visible", false)
アニメオブジェクト(ディルドーとかテーブルとかの小道具類)を使うアニメだと、そのアニメオブジェクトを初めて呼ぶステージでは、UI表示を消すのに失敗するんですよね。
アニメオブジェクトを画面にロードするために処理が遅れて間に合わなくなるんでしょうか。謎です。

本日最大の衝撃だったアニメーション。
いや……正直言うと、アニメを再生する前から、男一人のアニメで「スイートロール」という名称を見た時からイヤな予感がしてたんです。
それなのに、今回男プレイヤーで撮影するのはこのアニメ一つだけだったから、つい無精をしてウルフリック首長のセーブデータでやっちまったんですよね……
この恍惚とした表情……愛してるけど……キモイ。
ほんと、撮影用にSOS切ってて良かった。
あの穴に突っ込んでる姿を目撃してたら、今日は一日仕事にならないところでした。

2018/06/18

SexLabのアニメ変更時にStage1にジャンプする方法

週末はいろいろとSexLabの自作Modの調整をしてました。
それにしてもCKのQuestのダイアログって、ほんとクソみたいな仕様ですね!!!
会話の多いクエストModを作ってる人達の忍耐力ってホントはんぱないです。
こんなポンコツなツールでよく、Falskaarとか作れたよなー。
今日は時間がないので、SexLabの小ネタを1つご紹介。
小ネタといってもスクリプト書ける人じゃないと使えませんが……まあ、私も最初、どうやったらいいんだろうと悩んだ記述なので。

sslThreadController controller = SexLab.HookController(argString)
controller.UnregisterForUpdate()
controller.SetAnimation(sslUtility.IndexTravel(controller.Animations.Find(controller.Animation), controller.Animations.Length, false))
controller.Stage = 1
controller.Action("Advancing")
SSLのsslThreadController(SexLabの各スレッドの拡張スクリプト)のインスタンスを取得したら、そいつのUpdateの動きをUnregisterForUpdate()で一回留めて、次のアニメーションに切り替えるためにSetAnimation関数でアニメ候補の順番を差し替えます。
そして「controller.Stage = 1」でカレントステージを1に戻して、 「controller.Action("Advancing")」で進行モードに切り替えると、ステージ1の状態でアニメチェンジしてくれます。

Directorのサムネ用に各ステージのスクショを撮ったりする時など、アニメチェンジのたびにステージ1まで逆流して戻るの大変ですからね。
私はこのスクリプトを特定のキーに割り当てて、キーひとつでアニメチェンジの際、最初のステージから始まるようにしています。


2018/06/16

SLAL(SexLab Animation Loader)のPACKの作り方

きちんとどこかに書いておかないと、鳥頭の私は少し間が空いたらまたすぐにやり方を忘れてしまいそうなので、今日はSexLab Animation Loader(SLAL)のPACKの作り方の手順をまとめておきたいと思います。
ちょうど乳揉み専用アニメーションが欲しかったところなので、作者様の違う個別のモーションを組み合わせて、カスタマイズした一つのアニメーションとして登録するという流れをサンプルとして紹介しようかと思いますよ。人間のアニメで、小道具(AnimObject)なども使ったりしていないきわめて簡単な例になりますが、基本の流れさえ押さえておけば、小難しいオプションはその都度調べればいいだけなので、備忘録としては事足りるかなと思います。
今までSLALのPACKを自分で作ってみたいと思っていたけど、英語のガイドを読んでも意味不明だった、もしくは英語自体読む気がしない、という人がいましたら、参考にどうぞ。

こんな感じで別アニメのモーションを組み合わせたカスタムアニメを作ろうと思います。
ステージ1は「Babo_StandingBound01」のStage1。
ステージ2はSexLabに標準装備の「3jiou Breastfeeding Straight」のStage1。
ステージ3は「Babo_Conquering01」のStage2。


【1】まずはSLALのPACKを作るための作業フォルダを準備します。
私はMOを使っているので、MOの「mods」フォルダ内に「196_SLAL_obachan pack」という名前のフォルダを作りました。名前はもちろん適当でOK。
作業フォルダを用意したら、まずそこに「meshes」フォルダを作り、下記の階層の通りにフォルダを作っていきます。

「meshes」の中に「actors」、さらにその中に「character」を作ります。
ちなみに「character」は人間用のアニメのフォルダ名なので、クリーチャーアニメの場合はそれぞれの種族名のフォルダを作る必要があります。
「character」の中に、さらに「animations」と「behaviors」というフォルダを作ります。「animations」にはモーションのhkxファイル、「behaviors」にはFNIS様に作成してもらうモーションの定義ファイルが入ることになります。

【2】次にモーションファイル(hkxファイル)を用意します。
先ほど作った「meshes/actors/character/animations/」の中に、自分のPACK名(他のPACK名と被らなければ自由に付けてOK)のフォルダを作り、そこに使いたいモーションファイル(hkxファイル)を入れます。
ちなみに流用元の他のModのモーションファイル(hkxファイル)も、人間用でしたら「meshes/actors/character/animations/xxx」(※xxxはMod名やPACK名)の中に入っています。アニメーション名とかけ離れた名前がついていることは稀ですので、名前を頼りに見当をつけ、元のModやSLAL PACKのデータの中から取り出します。
私はPACK名は「obachan」にしました。
先ほど紹介したように既存の3つのアニメーションから乳揉みシーンのあるステージのみを使うので、流用元はこんな風にバラバラの名前になっています。

なお、SexLabではモーションファイルは各Actorの各ステージごとに1つずつ存在しています。
つまり男女2人のアニメだったら男性と女性は別々に、それぞれステージの数だけhkxファイルが存在しているということです。
さらに注記すべき点として、SexLabで使うモーションファイル(hkxファイル)は慣習的に下記のような命名法則で名前が付けられています。SLALに登録する場合も、モーションファイルの名前はこの命名法則に従って名づける必要がありますので、ちゃんとこのお約束の意味を理解しておく必要があります。
「作者名」_「アニメーション名」_「アクター番号」_「ステージ番号」.hkx
SexLabでは1つのアニメ内では、人間やクリーチャーは合わせて5人まで、つまり最大5Pのプレイが可能です。んで、このアクターには1から通し番号がついていまして、上記のファイル名で使う「アクター番号」というのはActorの頭文字の「A」とその順番のことを指しています。
(つまり「アクター番号」はA1からA5までしか存在しません)
基本的に女性、というか受身側のキャラが「A1」です。
同性同士の場合も、クリーチャーの場合も、攻められる側がA1、攻める側がA2、それ以上の参加者はアニメによってまちまちなので特に決まりはありません。
モーションファイルは各アクターごとに必要ですので、2Pのアニメだったら「A1」と「A2」、3Pだったら「A3」までのモーションファイルを用意する必要があります。

「ステージ番号」は言葉通り、Stageの頭文字の「S」と各ステージの数字が組み合わさった表記です。ちなみにこのステージ数、二年前までは10を超えるステージ数を持つアニメは存在しなかったので、Directorのサムネ画像枠もMax10個にしていたのですが、先日Komotorさんという方のアニメを導入したら、ステージ数が14もあるアニメーションがあって、のけぞってしまいました。
いやー、アニメの数や種類だけでなく、ステージ数までインフレを起こしていたとはね……
アクターと違って、ステージ数は特に限度は無いと思います。

そんなわけで上記の命名法則でhkxファイルをリネーム。
男女2人のステージ3までのアニメとして編集しようと思うので以下のようになります。
オリジナルの作者名のところをリネームするのは気が引けるのですが、PACK内のアニメーションは同じ作者名で統一する必要があるので、やむなく「oba」に改名させていただきました。
またアニメーション名も、同じアニメとして使用したい場合は共通の名称にしないと、SLALは一連のアニメとして認識してくれなくなります。
あとはアクターの区別(A1・A2)とその3ステージ分、順番を間違えないように名前を付けるだけです。今回はアニメは一個だけですが、もちろん複数のアニメを同じPACK内に入れることができます。Papyrus上で管理する関係上、おそらく1つのPACK内に入れることができるアニメは128個以下の筈ですが、まあ、数が多い時はまた新たにフォルダを作ってPACKを分ければ良いだけの話です。
自分のPACKフォルダにリネームしたファイルを用意したら、これでモーションファイルの準備は完了です。

【3】お次は「SLAnims」フォルダとそのソースファイルの準備です。
SexLab Animation Loader(SLAL)をダウンロードして、解凍したデータ内にある「SLAnims」フォルダ、これをごそっと【1】で作った作業フォルダの下に持ってきます。
つまり先ほどの「meshes」フォルダと同じところに並びます。
「SLAnims」フォルダの中にはまず「SLAnimGenerate.pyw」というPythonのスクリプトが入っています。これは後で使います。
次に「source」というフォルダの中に「Example.txt」というサンプル用のソースファイルが入っているのですが、こちらを参考に同じ場所に自分のPACK用のソースファイルを作ります。
ソースファイルの名前は、先ほど「meshes/actors/character/animations/」以下に作ったPACK名に拡張子の「txt」を付けた名前にします。
つまり、私の例ですと、「obachan.txt」です。
この新規作成した自分のPACK用のソースファイル(txtファイル)をメモ帳やエディタで開いてアニメーションの設定を記載します。ちなみに先ほど「SLAnims」フォルダ直下に入っていたPythonのスクリプトは、このソースファイルの内容を見て、FNIS様用の陳情ファイルを作ったり、SLAL用のJSONファイルを書き出したりするのです。

さて、それでは参考までに「obachan.txt」に実際に記載した内容をご紹介します。
is_example = False
mcm_name = "obachan pack"

anim_dir("obachan")
anim_id_prefix("oba_")
anim_name_prefix("oba ")
common_tags("custom")

Animation(
 id="BreastFeeding1",
 name="BreastFeeding 1",
 tags="Breast",
 sound=Sucking,
 actor1=Female(),
 a1_stage_params= [
  Stage(2, rotate=-180),
 ],
 actor2=Male(open_mouth=True,silent=True),
 a2_stage_params= [
  Stage(1, open_mouth=False),
  Stage(2, rotate=-180),
 ],
 stage_params = [
        Stage(1, sound=NoSound),
    ] 
)
これを初めて見る方は、うわ、なんだか面倒くさそうだなとげんなりするかもしれませんが、これでもSexLab本家のアニメの設定スクリプトに比べたら、かなり簡略化されていて、凄まじく効率化されているのですよ。
SexLabに特化した、かなり考え抜かれた無駄の無い書式だと心の底から感嘆します。今のエロアニメーションのインフレはこのSLAL無くしてはなかったことでしょう。
ちなみに今回は登録したアニメは1個なので、これで終わってますが、PACK内に複数のアニメがある時は「Animation(...)」の部分の記述をアニメの数だけ繰り返します。

さてそれでは各記述の意味をざっくり説明します。
「Animation(...)」という記述が始まるまでの前半部分は、PACKの名称やPACK配下のアニメすべてに共通する設定を行うところです。
is_example = False
mcm_name = "obachan pack"
「is_example」はこのソースファイル(txtファイル)がサンプルかどうかのフラグで、これが「True」になっている場合はSLALのビルドの対象になりません。
ちなみに同じ「source」フォルダ内に入っている「Example.txt」はこのフラグがTrueなので、SLALのスクリプトを実行しても対象から除外されています。
「mcm_name」は文字通り、SLALのMCMのメニュー上で、自分のPACKがどんな名前で表示されるかを指定します。
MCM上の表示なので、おそらくアルファベット順に並びます。なので他のSLALのPACK達よりも上の方に表示させたかったら、数字とか「a」とかを頭につけると良いですね。
念のために申しますと、こちらは単なるMCM上の表記ですので、先ほどモーションファイルのフォルダに付けたPACK名とまったくかけ離れた名前でも特に問題ありません。

anim_dir("obachan")
anim_id_prefix("oba_")
anim_name_prefix("oba ")
common_tags("custom")
「anim_dir」は「meshes/actors/character/animations/」以下に作ったPACK名のフォルダの名称を指定します。そして次の「anim_id_prefix」はモーションファイル(hkx)に付けた「作者名」をアンダーバー「_」付きで指定します。
「anim_name_prefix」はこのPACKのアニメすべての名称に付けられる接頭辞です。
「anim_id_prefix」と「anim_name_prefix」を揃える必要はないです。ちなみに「name」のアニメーション名の方は、名称が長くなるとMCMの表示欄から溢れてしまったりするので、「anim_name_prefix」は短めにつけるのが良いと思います。
また「common_tags」はこのPACKのアニメすべてに付与されるTagです。同じPACKシリーズのアニメだということがわかるように、ユニークなタグを付けてあげると良いですね。
また、強姦専用アニメのPACKであれば「AggressiveDefault」というTagを「common_tags」として設定しておくと、ユーザーがいちいち強姦用(Aggressive)のフラグを立てなくても、最初から強姦用のフラグがついた状態でレジストされます。
タグはカンマで区切れば複数指定が可能です。

さて、次は登録するアニメーションの詳細設定の部分です。
Animation(
 id="BreastFeeding1",
 name="BreastFeeding 1",
 tags="Breast",
 sound=Sucking,
 actor1=Female(),
 a1_stage_params= [
  Stage(2, rotate=-180),
 ],
 actor2=Male(open_mouth=True,silent=True),
 a2_stage_params= [
  Stage(1, open_mouth=False),
  Stage(2, rotate=-180),
 ],
 stage_params = [
        Stage(1, sound=NoSound),
    ] 
)
こちらも前半はアニメの全ステージを通しての設定が記載され、後方に行くに従って各アクターや各ステージの詳細が記述される、という流れになっています。
つまり最初に全体で共用される設定を書き、違うところだけ後から追記するというスタイルで、いちいちすべてを一つずつ指定しなくても最小限の記述で設定が記載できるようになっているのです。頭いいですね。

まずはAnimation(...)の最初の部分。
 id="BreastFeeding1",
 name="BreastFeeding 1",
 tags="Breast",
 sound=Sucking,
「id」は、先ほど設定した「anim_id_prefix」が接頭辞として頭について、アニメの固有のレジスト名となります。
つまり私の例の場合ですとレジスト名は「oba_BreastFeeding1」になりますね。
アニメのレジスト名というのは決して他のアニメとカブっていてはいけません(でないと後からレジストされる方に上書きされてしまいます)。だから不特定多数の他のModderのアニメとの競合を避けるために、接頭辞として必ず作者名を付ける仕様になっているのです。
ちなみにDirectorのサムネ画像のファイルの名称もこのレジスト名を使用しています。

一方「name」はそのアニメの一般的な名称のことです。こちらも先ほど設定した接頭辞の「anim_name_prefix」が頭についた名称となります。
(私の例だと「oba BreastFeeding 1」というアニメーション名になります)
レジスト名と違って、アニメーション名の方は、同名のアニメが他に存在していても特に問題ありません。
ところでアニメーションの名前についてですが、Directorのサムネ画像などが無い限り、ユーザーはどんなアニメーションなのかということはアニメーションの名前から想像するしかありません。
なので「Standing」とか「lover」とか、できるだけどういう状況のアニメなのかが伝わるような単語を含めた名称にすべきかと思うのですが、ただ先ほども注記したように、この名称はMCMのメニューに表示されますので、あんまり長いと表示枠から溢れてしまいます。
日本語名も付けられなくはないのですが、文字コードに気を遣わなくてはならなくなりますし、あんまりお勧めはできませんね。
ちなみにDirectorではフォントの都合上、どんな文字コードにしようが日本語のアニメーション名は必ず文字化けします。

続いて「tags」……これはこのアニメーション限定で指定するタグの設定です。
先ほどと同様、複数指定したい時はカンマで列挙できます。
ちなみにSexLabのアドオンModの多くが一般的なタグでアニメーションを候補にするかどうか判断します。なので「Vaginal」とか「Anal」とか「Oral」とかいうような一般的なタグを入れておかないと、アニメが再生される機会が激減してしまうかと思います。
今回の乳揉みアニメは私は自作のModで使うつもりなので、一般的なタグは使っていません。(逆に普通のSexシーンでは使いたくないので、「Oral」などはあえて設定しませんでした)

「sound」はこのアニメの最中、流すことになる効果音の設定です。
ステージによって効果音を変えたい場合は、後で個別に指定できますので、とりあえずこの前半の「sound」の項目では、一番多く使う効果音を指定しておくのが良いかと思います。
ちなみに指定するサウンドの種類はこんな感じです。

(1)Squishing:Sex時の一般的な音。
…「Sound/fx/SexLab/fxSex01」内にある効果音。
(2)Squirting:オーガズム時の発射音
…「Sound/fx/SexLab/fxOrgasm01」内にある効果音。
(3)Sucking:Oral時のぴちゃぴちゃ音
…「Sound/fx/SexLab/fxOral01」内にある効果音。
(4)SexMix:(1)と(3)の混合バージョン
…「fxSex01」と「fxOral01」の両方が含まれる
(5)NoSound:効果音無し

私の乳揉みアニメは、ステージ1を除いて、おっぱいをちゅぱちゅぱ吸ってる音がしていて欲しいので、「Sucking」としました。
しかし改めて調べて思ったんですが、ボイス同様、効果音も種類少なすぎですね。せっかくステージごとに設定できるのだから、もっと多種多様な効果音が欲しいです。

長くなってまいりましたが、続いてアクターの設定、行きましょう。
 actor1=Female(),
 a1_stage_params= [
  Stage(2, rotate=-180),
 ],
「actor1」は先ほどモーションファイルの命名でも使った「A1」に当たる受身のアクターのことです。アクターはまず男女人獣の指定をする必要があります。
乳揉みアニメのA1は女性のキャラクターに演じて欲しいので、Female()と設定。
他は今回は特に何も追加で設定するオプションが無いのでカッコの中は空ですが、射精後のテクスチャの場所の指定や口を開ける指定などがあるようでしたらカッコの中に記述していきます。(オプションはいろいろあるので他のPACKのソースファイルを参考に見るのが良いです)
続いて「a1_stage_params」のところですが、これは「A1」のアクターについて各ステージごとに細かな設定を追加したい時に使います。
今回、私はステージ2に使っているアニメだけ、男女ともに向きを180度変更したかったので「Stage(2, rotate=-180)」と追加しました。
(違う作者様の違うアニメを繋いだので、いきなりステージ2で男女の位置がくるっと逆になってしまうのが気になったのです)

お次は「A2」…乳を吸う男性側の設定です。
 actor2=Male(open_mouth=True,silent=True),
 a2_stage_params= [
  Stage(1, open_mouth=False),
  Stage(2, rotate=-180),
 ],
男性側はお口を開けていて欲しいので「open_mouth=True」の指定をつけます。ただステージ1は乳を揉んでいるだけで吸ってはいないので「Stage(1, open_mouth=False)」としています。
また「silent=True」の指定はSex中のボイスを無しにする指定です。
男が乳吸いながら「ウオウ」とか「アアッ」とか吠えてたらキモイので黙らせています。

最後に……よく考えたらステージ1は乳は吸っていないので、「Sucking」のちゅぱちゅぱ音が響いているのはおかしいと気づき、ステージ1のみサウンド無しにしました。
 stage_params = [
        Stage(1, sound=NoSound),
    ] 
こんな風にその気になればステージごとに事細かにカスタマイズできます。
今回は大したことはしてませんが、アニメオブジェクトを使ったり、SOSのちんぽの角度を調整したりと、他にもいろいろオプションがありますので、凝り症の方はがんばってください。

ソースファイルの準備はこれでやっと完了です。

【4】ソースファイルの準備ができたら、先ほど後で使うと書いた、「SLAnims」フォルダの「SLAnimGenerate.pyw」をダブルクリックします。
※pythonはバージョン3.x以上のものを予めインストールしておく必要があります。
ちゃんと「source」フォルダにソースファイルを用意し、「meshes」以下のモーションファイルについても、フォルダの階層やファイル名など、何の誤りもなく用意ができていれば、特に「Browse」ボタンを押してディレクトリを選択しなくても、上記のように用意したPACKの名称とアニメーションがウィンドウに表示されます。
Categoriesの欄で、新しく用意したPACK名が(NEED BUILD)となっているのを確認したら、それを選択して「Build Category」のボタンを押します。
そうすると赤線で引いた部分からもわかるように、SLALのメニューに読み込まれるJSONファイル(obachan.json)と、FNIS様に陳情するためのアニメーションのリストファイル(FNIS_obachan_List.txt)の2つが作業フォルダ内の各フォルダ配下に書き出されます。
これでもう、SLAL側の準備は完了したも同然です。
後はゲーム内で新たなモーションを使用するため、FNIS側の処理を行う必要があります。

【5】さてお次はFNIS様のご登場です。
【4】の工程で「この新しいモーション達をスカイリムのゲーム内で使えるようにして下さい」とFNIS様に陳情するためのリストを作ってもらいましたので、FNIS様にお願いして実際にbehaviorのファイルを作ってもらいます。
この時、お願いするFNIS様は、いつも使うユーザー用の赤いFNIS様ではありません。Modder用の青いFNIS様(GenerateFNIS_for_Modders)です。

私はMOを使っているので、MOからFNIS様を立ち上げればフォルダの移動はしなくて良いのですが、MO使いじゃない方は、作業フォルダの「meshes」フォルダをSkyrimのDataフォルダ配下に移す必要があるかと思います。FNIS様を起動する前に適宜準備して下さい。
※私は作業フォルダの「196_SLAL_obachan pack」をMOのmodとして読み込んでいるので、作業フォルダ内の「meshes」はSkyrimの「Data」配下に置いてあるのと同義なのです。

青いFNIS様(GenerateFNIS_for_Modders)の画面
「Generate Mod Behavior」のボタンを押して、「meshes/actors/character/animations/PACK名」の中にある「FNIS_PACK名_List.txt」を選択してください。
青いFNIS様の処理は、赤いFNIS様と違ってすぐに終わります。
問題無く処理がすめば赤枠にあるように「FNIS_PACK名_Behavior.hkx」というファイルが「Data/meshes/actors/character/behaviors/」の中に生成されている筈です。
※ただしMOから起動しますと、仕組み的に「overwrite」以下の「meshes」フォルダ配下に作られます(生成されたbehaviorファイルは元の作業フォルダの配下のbehaviorsフォルダに移してやると良いです)

【6】いつもの赤いFNIS様を実行して、ゲーム起動!
あとは他の制作者のSLAL PACKをインスコする時と同様に、赤いFNIS様を走らせるだけです。
ちゃんと読み込まれていますね……よしよし。
V1.0というバージョン表記はSLALが勝手に付けてくれたみたいです。

ソースファイルで設定した通りのMCM_name名、アニメーション名になっています。
「MCM_name」はアニメーション名よりもさらに表示枠が狭いので注意が必要ですね。
(まあ、文字が溢れても読めますけどね)
ちなみにアニメーションのタグですが、「common_tags」で設定した「custom」、アニメーションの「tags」で設定した「Brest」以外に、下記のように「FM」「MF」のタグが勝手に追加されていました。

効果音も口の開け閉めも、ばっちりでした。
これで搾り立てのミルクを直飲みしてもらう素敵なプレイが楽しめそうです。

2018/06/14

乳揉みモーションを探して

今日は良さげな乳揉みアニメはないかしらとネットを徘徊してました。BakaFactory's SLAL Animation 1.2Vというパックの中に乳房に手をやっているモーションが含まれていそうだったので、アニメを確認しがてら、Director用のサムネの撮影をしました。
よかったらこちらどうぞ。
download : SexLabDirector_Thumb_BakaFactory's SLAL_1.2V.zip (512kb)
ねーちゃん、イイ乳しとるやんけ、と複数人に搾乳されるのもいいな。
こんなのが「ママ~」とむしゃぶりついてきたら……笑っちゃう。
しかし思ったより、乳揉みアニメって少ないです。
おっぱいは男のロマンじゃなかったのか。
でもまあ実際のところ、モーションを作るのが難しいんでしょうね。おっぱいの大きさなんて人それぞれだし、おまけに妊娠Modでサイズ盛ってたら、ジャストフィットなんてするわけないんですから。

ところで乳揉みモーションを見ていて、搾乳される時は専用の字幕が欲しいな……と思いました。無言でちゅうちゅう吸われてもなんか気分出ないし。
「SexLab Subtitle」で出せれば良いのですが、搾乳のシチュエーションなんて判定できんし、そもそも自分で作っておきながら何ですが、私、今はもう全然、このMod使ってないのですよね(唯一、「比較的長い文章を表示できるお知らせ欄」として、他のModからUIを呼び出して活用してはいるのですが)。

あの字幕Modの最大のネックは、字幕は自由に編集できても、字幕を出すシチュエーションを自分で自由にカスタマイズできないところです。かといって自由にカスタマイズできるようにするには、MCMのメニューなんかでは対応しきれないと思うのですよ。シチュエーションを設定するためのUIから作成しないと、設定自体がものすごく面倒な作業になると思う。

ちなみに最近、Directorの方で、選択したアニメに自分で自由にタグを付け外しできる機能を追加しようかなと考えていまして。
使わないアニメーションをアンレジストする機能は付けたけど、アンレジストするほどでもないな、というアニメーションを一時的よけておいたり、自分で「これは○○用」と整理するために、タグ付けできたら便利だろうなあ、と。
まあ、これはあったらいいな~、くらいの軽い気持ちで考えていたんですが。

でもDirectorで各アニメに自由にタグ付けできる機能があったら、Subtitle側では指定されたタグの時に選択されている字幕を表示するだけでいいと思うんですよね。和姦や強姦の区別や、体位、クリーチャーの種類などは、アニメーションごとにどんなシチュエーションで再生されるかは決まっていると思うので。
自分でカスタムのタグがつけられれば、このアニメーションの時はこの字幕を出す、というピンポイントな指定ができるわけですので、複雑なシチュエーションの設定画面は不要だと思うんです。
ただまあ、字幕が設定されているタグが複数含まれている時はどうするか、という問題がありますけど、字幕のJSONの番号で優先順位をつけたらいいかな……。

うーん、こんなことしてたら今週末もSkyrim Romanceは遊べなさそうです。

2018/06/13

産卵の実験

今日はSoulgem Oven IIIの魂石出産の関数(ActorDropObject_Positioned)を使って、アイテムを股間から排出する動作の調整をしました。…とこう書くと、とても真面目な開発をしているようですが、やってることはエロいことで頭がいっぱいの男子中学生以下の所業です。
「NPC L Pussy01」から排出してるんで、左に寄っちゃってますね。

ちなみに私は付呪のスキルはほとんど使わず、魂石は無用の長物なんで、Soulgem Ovenで出産する魂石は、昔は鶏の卵とかイワムシクイの卵とかに変更しておりました。しかしデフォルトの設定のママだと、卵が凄まじい勢いで股間からふっとんでゆくのですよね!
「ApplyHavokImpulse」関数のマグニチュードを最小限に絞っても、ピストルの弾丸みたいに飛び出してどっか行ってしまうので、産卵する時はリフテンの宿屋の個室とか、できるだけ狭くて扉が締められる密室でするしかなかったものです。それでもベッドの下に入っちゃったりとか、アルゴニアンの給仕が注文を取りに来て扉を開けちゃったりとかして、産卵したものを全部回収できたためしはありませんでした。

しかしこうして改めてスクショを見ても、全然いやらしくないな。
そもそも股間から出てくるアイテムの見た目が、固形物すぎるんですよね。もっとドロっとしたゲル状の表現ができれば雰囲気出るんですけど…
精液のつもりなんですが、メレンゲを焼いたお菓子にしか見えない。
ちなみに、こうやってぽろぽろ産卵した精液の用途についても悩み中です。
以前は錬金素材にしたり、ランダムで回復薬か毒のどちらか、みたいな感じにしたり、いろいろ使える効果をつけてたんですけど、なまじ有用なものにしてしまうと、誰でもじゃんじゃん中に出してくれてOK!という公衆便所状態になってしまいがちなので、考えものです。
かといって、ステータスをマイナスにするようなペナルティも結構プレイの邪魔になって続かないんですよね。
なので「実害が無い邪魔さ加減」で何かできないかなあと考えています。
ちなみに以前は、射精した人の名前つきの精液が個別に増えていってインベントリを無駄に圧迫するという、微妙にイヤな感じの設定にしたのですが、使い道がまったくないアイテムというのも結構始末に困って結局やめてしまいました。
アイテムをその辺に放置すると消えてくれないので、よくアルヴォアさんの家の前の樽の中に精液を捨ててたんですが、なんか嫌がらせしてるみたいになってしまって。
真面目に考えるようなことではないのですが……難しいです。

2018/06/12

妊娠Modを作ろう

Soulgem Oven IIIのスクリプト内のテキストを翻訳(というか改竄)しながらスクリプトの処理を見ていたのですけれど、このMod、バージョンアップしてますます魂石を孕んで育成する保育器としての仕様や機能を強めたというか……Mod名の通り、魂石を温める『オーブン』としての特徴が立ってきていますね。
バージョンIIIになってイチからコードを書き直したというだけあって、物凄く整理されてて、他のModから操作できるように至れりつくせりのAPIも用意されてるんですけど……う~ん。
私が望んでいるものとはちょっと方向性が違ってきてしまったので、このModの導入は、残念ですが諦めようかと思います。

ちなみに私が求めているのは、妊娠したら徐々にお腹が膨らんでいく…というのではなくて、妊娠の有無に関係なく、中に出されたら即時でボコッとお腹が膨らむ機能です。
妊娠は自力でお腹の中の精液を排出できなくなるというペナルティとして付与されるしくみ。
そもそもそういうのは、名前からして「Fill Her Up」とか使った方が良いのかもしれませんが、二年前はSoulgem Oven IIをそんな風に改造して愛用していたものだから、IIIでも同じように改造して使おうかと思ってました。
でも単に即時反映の腹ボテModで良いなら、自分で作った方が早いかもしれません。
いろいろ連携させたいものもあるし……うん、やはり自分で作ろう。

お腹や胸を大きくすること自体はめっちゃ簡単なのですよね。

ところでSoulgem Ovenでミルクが溜まった時、搾乳するモーションなんですけれど、あれってやっぱりまだ自分で胸をモミモミして搾るというモーションだけなんでしょうか。
単なる個人的な好みなんですけど、私、アレなんだか侘しい感じがしてあんまり好きじゃないのですよね……せっかくなら他人に揉んで欲しい。
でも胸を揉んだり吸ったりするアニメーションってあんまり見かけないですよね(Boobjob系だったら結構ありますが)アニメーションがインフレしてる今だったら、そういうのも見つけられるのかなあ。
Soulgem Oven IIIを使うなら、Milk Mod Economyと連携すればいっか、と考えていたけれど、自作するなら良さげな乳揉みアニメーションを使って搾乳したいものです。

2018/06/10

Skyrimの純情事情

Billyy's SLAL Animations (2018-06-04)のサムネ撮影終わりましたんで、良かったらどうぞ(「Director」の記事のところに置いてます)。
結局6/4のv1.11では合計264個ものアニメ数になっていました。
いまだに更新されるModって多いんですね。私はてっきりSkyrimのLE版はもうイイ感じに技術が枯れて、Modも最終Fix版が出揃い、落ち着いて遊べる環境になっているのだろうなあと思いながら戻ってきたのですが、まだまだそんなことはなかったようです。


ところでまだ環境構築半ばではあるのですが、いい加減ゲーム本体を遊びたくなってきたので設定が中途半端なのは承知でプレイを始めることにしました。
ちなみに何故私が二年ぶりにSkyrimをインストールしたのかというと……Youtubeでこの動画を見かけて久しぶりに遊んでみたくなったからです。
このModが「SexLab」必須じゃなければ、このブログも再開してませんでした。
この「Skyrim Romance」、昔ちょっとだけ遊んだ覚えがあるのですが、その当時もスカイリムでこんな乙女ゲーが登場するなんて!!と衝撃を受けたものです。
久しぶりに動画を見かけて……ほんと驚いたなあ。
子育て(?)要素まであるなんて、作り込みはんぱないです。
プレイするのがとっても楽しみ!


ところで試運転をしてみて、私のオンボロPCではCreature Frameworkを常時稼働させながらのプレイはとても厳しいということがわかりました。
もともとエクステリアのセルチェンジのタイミングって、いろんなスクリプトが走るのでただでさえ負荷が高いのですが、Creature Frameworkはそこでセル内にいるアクター全員にちんちん付けるということを一気に行うもんだから、限界を迎えるみたいなんですよね。
特にホワイトランロケーションの境目のホニングブリュー・ハチミツ酒醸造所を過ぎたあたりやリフテンの入口の監視塔のあたりとか、大きな街・村付近のエリアの周囲のセルは裏でSMイベントがごそっと動く難所なので、ここでいろんなクリーチャーにちんちん付けようとすると私の貧相なPCでは確定CTDしてしまいます。
せっかくBillyyさんのクリーチャーアニメのサムネをコンプリートしましたが、私は今回のプレイの中では使う機会がなさそうです。


あと、これも試運転をしていて、あれ?っと思ったのですが……SexLabのv1.62って、キャラクターのLewd(淫乱度)のステータスの初期値がかなり下方修正されていませんか?
私の気のせいでしょうか。
男だと[淫乱度]ってなんかアレなので[スケベ度]という表記にしています。
その辺の模範的な一般市民だからかもしれませんけど、なんか会う人会う人がみんな真面目な純情中年ばっかりで拍子抜けです。
おかしいなあ、二年前のv1.61の時はもう少しスケベな人多かったのになあ。
ダルちゃん(ファエンダル)が純情なのは、まあ分かります。
でもOralレベル9って……むっつりスケベだね、キミ。
フォロワーの素質がある人のSexスキルの数値が高い傾向にあるのは、やはり戦闘力から算出してるのでしょうか。
ちなみに各Actorのステータスの初期値を決める処理は、SexLabの1.6番台からSKSEプラグインのネイティブの関数で処理するようになったので、どんな要素が各ステータスに反映されているのかはわかりません。
SexLabのv1.61までは、このSexスキルに関してはだいたい戦闘力(レベル?)に比例していたのですが、たまに戦闘力もレベルもそれほどでもない一般市民なのに、とんでもないSexの達人がいたりしました。
マラマルさんとかね……確か全てのSexスキルが700台のテクニシャンで、さすが愛の女神マーラの司祭さまだわ、と思ったものです。
まあ、Sexスキルの初期値の割り振りは結構ランダムなので、たまたまだったのでしょうが。

あら意外、同胞団のセックスシンボルも今回は大したことないんですね。
昔、Requiemを導入してた時は、この人、Sexのステータスも化け物並みだったのですが。
(今回はオーバーホールModはOrdinatorを入れています)
ようやくスケベなおじさんを見つけてホっとしました。
でもスキルしょぼいなあ。

しかし、Skyrim Romanceのイケメンをよそに、私はいったい何をしているのやら。

2018/06/08

SLAL 登録してみた

今日は内職にも飽きてきたので、以前から気になっていたSLAL(SexLab Animation Loader)のPackをテストで作ってみました。
あ、でもBillyシリーズの撮影は残り70個くらいにはなりましたよ。
先日更新されたらしく、また新たなアニメが追加されてて泣きそうなんですけども……

お試しでSLALにobachan Testパックを追加してみました。

SLALって、TESLabの紹介文には「CKやPapyrusの知識がなくてもFrameworkにアニメーションを登録、アニメーションパックを作成することができる」と書いてあって、正直最初は私は「CKやスクリプトのコンパイル無しで作れるというのが、そんなに作業軽減になるかしら?」と半信半疑でした。
だってマニュアルをざっと見た限りだと、スクリプトで設定するのと同じように、アニメーションの各ステージ各アクターごとの設定を細かく記述しなくてはいけないみたいなので。
ここまで記述するんだったら、普通にスクリプトをコンパイルすればいいんじゃないの?CKやコンパイル環境を用意するのがそんなに大変なことか?と思ってたのです。
でも実際に試してみて……何がそんなにすんばらしいのか、わかりました。
SLALって、CKやPapyrusスクリプトの知識がいらないことよりも、FNISの知識がいらないというのがポイントなんです。
「SLAnimGenerate.pyw」を走らせると、FNIS様への陳情リストまで自動で作ってくれる……これが非常に助かるんです。
FNIS様の陳情リストの作り方は昔、「FNISで遊ぼ!~AnimObject付きモーションの弄り方」というブログの記事を書いた時に調べたことがあるんですけども、アニメーションごとにこんな感じ↓の設定を書かなきゃいけないんですよ。

s -a,k,o 0baTestFlute ..\animobjectfluteshort.hkx AnimObjectFlute
+ -a,k,o 0baTestDrum ..\animobjectdrumloop.hkx AnimObjectDrum
+ -a,k,o 0baTestLute ..\animobjectluteloop.hkx AnimObjectLute
もう見た感じ、FNIS語ってわけわからんでしょ。
これを代わりに作ってくれるんだから……SLAL様々です。

それからSexLab用のアニメーションを読み込むのに、espファイルがいらず、SLAL用のJSONだけでSLALのメニューで管理することができるというのも大きなポイントですね。
LoversLabに上がってる有名どころのSLALパックは、AnimObjectを含むアニメが多いので大抵espが付属してますけども、でも基本なアニメだけならJSONの書き出しだけでOKなのです。

これを使って、使わないアニメーションを根源から整理しようと思います。

2018/06/07

ハドバル vs レイロフ

今日は何も撮影できなかったので、昔撮ったスクショの中から懐かしの画像をピックアップ。昔、この二人を一緒にフォロワーにして連れ歩いたことがあるのですが、こいつら、一蓮托生のプレイヤーが妬けてくるほど、めちゃくちゃ仲良しなんですよね。
あれ?二人とも付いてこないなー、どこ行っちゃったんだろうと探し回ると、大抵、二人で道端で立ち止まって、のんびりくっちゃべっているという……(笑)
どうやら内戦用の一般兵士の会話シーン(CWDialogueSoldiers01・02あたり)の条件に適合するため、二人で一緒にいると、セル移動するたびにランダム会話が発生するのですが「もうパンがなくなりそう」だとか「鎧が重い」だとか、お互いグチ垂れまくりで(笑)
帝国・ストクロの区別なく会話が始まるのにも驚きでしたが、スカイリムの男ヒロインである二人も、例外なく一般会話シーンが適用されてしまうというのが、もう予想外でした。
まあ、普通にプレイしてたらこの二人が一緒にいる機会はオープニングしかないので、こんな仲良しシーンはベセスダ様の想定外なんでしょうけどもね。

「これについてどう思う?」って……とりあえずくっつき過ぎだと思います。

そういえば一番最初の初回のプレイでは、私はハドバルさんのことをてっきりレイロフ君だと思い込んで、ハドバルさんルートでリバーウッドに行ったのでした。
今思うと、なんで見分けがつかなかったんだろうと思いますが、たぶん私は最初の馬車で隣に座ってた人の横顔をガン見していたので、レイロフ君の顔はロクに見ていなかったのです。
だから「おい、こっちだ!」と呼ばれて、ハドバルさんのことを一緒に馬車に乗ってた人だと勘違いして付いていったんですよねえ。

この二人って、スペック的にどちらが強いんでしょうか。
盾持ちで守りが硬いハドバルさんと、二刀流で攻撃重視のレイロフ君。
この二人をフォロワーにしてた時、誤爆から喧嘩が始まったことがあるのですが、どちらも不死属性がついたままだったので全然決着がつきませんでした。

そういえばこのスクショを撮った時、私は既にSexLabを導入していたので「うわー、これどっちかが膝をついたら、Defeatが発動するのかな」とドキドキしながら観戦してたものです。
決着がつかなくて、残念だったなー。

2018/06/06

ドヴァキン門を出ずれば

本日の一枚。 もう何にでもちんちん生えてくるんですね。
まあ、ちんちんっていうか、つららですけどね。
人間とじゃなくて、炎の精霊とのからみが見たいな。

氷の精霊ってよく見ると顔があるんですね。
今まで全然気づきませんでした。
Billyyシリーズの撮影の残りはあと150アニメといったところです。
1時間でだいたい30アニメくらいは撮影できるかな。 相方のクリーチャーをとっかえひっかえしなければ、もう少し数をこなせるのですが……
総数250アニメだと、だいたい1.25人日というところでしょうか。
なんか内職やってる気分になります。

撮影のために追加したクリーチャーActorの量がこんなになりました。
(撮影する時はこのリストを見てコンソールコマンドでPlaceAtMeして呼び出しています。)

亜種も含めると、もうほとんどの種族がSexLabに対応してるんじゃないかな。
あ、そういえばマッドクラブが見当たらないな……。
(ポーズModでは見かけたことあるけど)

ここまで来ると、「男子門を出ずれば七人の敵あり」じゃないですけど、ドヴァキンさんが外出する時はありとあらゆる生き物から襲われる覚悟をした方が良さそうです。

2018/06/05

1day1shot(Billyy's SLAL Animations)

本日の衝撃の一枚。なんなんだろう、FuroTubって……。
日本には触手風呂なんてものがあると思われているのだろうか。
本日からBillyy's SLAL Animations (2018-05-06)の撮影をしています。
人間・クリーチャーアニメ合わせて254個もあるので、今週いっぱいかかりそうです。
特にクリーチャーのボリュームがはんぱないです!

クリーチャーも家具(Furniture)使うんですね。進化しましたね。
家具(Furniture)アニメは、アニメの種類を途中で変更したり、中断したりすると家具のObjectがそのまま消えずに残ってしまったりしていたので(少なくとも2年前は)、私はプレイ中はすべてオフにしていたんですが、こうして改めて鑑賞してみると捨てがたいですね。
ファルマーにとっ捕まって、気付いたらテーブルに拘束されてました……そこへ巨大なダンゴ虫が!とかいうシチュエーション、そそるわあ。

そういえばSexLabのデフォルトのクリーチャーの種族ではない新Raceって、「Creature Framework」ではなく「More Nasty Critters」が追加する役割を担っているんですね。
しかもSSLの「sslCreatureAnimationSlots」スクリプトと同名ファイルを自身内に含んでいて、それを上書きする形で、新Raceを追加してますんで、Modの追加順には注意が必要です。

つまりロード順だけでなく、MOの左ペイン側でもSexLabよりMNCを後ろに持ってこないと、MNCの「sslCreatureAnimationSlots」スクリプトが有効にならないので新RaceのクリーチャーがSexLabの対象にならないのですよ。
兎やスローターフィッシュなどのSexLabデフォルト種族ではないクリーチャーとSEXできない!という方は「sslCreatureAnimationSlots.pex」がMNCのものになっているかどうか、確認した方が良さげです。

2018/06/04

MNC:SLAL Edition(v11.1F)のサムネ画像

週末はDirector用のサムネ画像を撮影していたら終わってしまいました。More Nasty Critters: SLAL Edition v11.1Fのサムネを作りましたんで、良かったらどうぞ。
(「Director」の記事のところに置いてます)
クリーチャーアニメは相方のクリーチャーの準備するのが大変ですけど、初めて見るアニメを再生する前はわくわくしますね。
実際のところプレイ中はクリーチャーアニメはほとんど見る機会はないので(せいぜい狼くらいでしょうか…)、こういった撮影でもしないと真面目に拝む機会はありません。
ドワーフセンチュリオンの立派な持ち物にビックリ仰天(笑)
ホーカー姦やハグレイブン姦にもビックリさせられましたが、やはり一番衝撃的だったのは、なんといっても鶏姦です。
アニメを再生する前、必要人数のとこ見たら「人間男性1・クリーチャー1」だったんで、てっきりチキンを姦る方だと思ったのですが、まさか姦られる方だったとは……
どうしてこうなった。

ちなみに私はDirector用のサムネ画像を撮影する時は、キャラクターの絡みが見やすいように床も壁も黒いテクスチャを張ったテスト用のセルに行って撮影しています。
また、後で画像をトリミングする幅の目安にするため、Flashで作った専用のフレームをゲーム上に読み込んでいます。
この白い枠内に収まるようにスクショを撮ります。
それから、SexLabのアニメーションの各ステージが始まるイベントのタイミングで、スクリプトを使ってアニメーションのレジスト名とステージ数を、スクリーンショットの画像名として引き渡しています。
撮ったスクショの名前を手動でリネームするのは面倒だし、間違うので。
Utility.SetINIString("SScreenShotBaseName:Display", "ここに画像のパス&レジスト名_ステージ数")
↑Utilityの関数を使って「Skyrim.ini」の内容を動的に書き換えてます。

撮影したスクショは、Photoshopの「アクション」を使って、画面補正、トリミング、リサイズ、DDS保存まで全部一気に自動でやってしまいます。
設定はこんな感じです。
画像を保存して閉じるところまでアクションにしているので、撮ったスクショ画像をまとめてPhotoshopで開いたら、後はF2キーを連打するだけです。
だから一番手間がかかるのは、撮影するためにSexシーンを再生するまでの準備ですね。
(相方のActorを用意するのが大変)