忍者ブログ

雑記帳

シムズ2のスキン、オブジェクトのダウンロード記録

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

エフェクトの追加

※これはBHAV挑戦日記の一記事です。
オブジェクトに、湯気やZZZや煙やハエや蝶々などのエフェクトを付けます。
チュートリアルはこちら。
「Adding an "Effect" to an object」 by atavera
http://www.modthesims.info/showthread.php?t=145518

このチュートリアルの前に、Slotの追加とBHAVの基礎に関連するチュートリアルを読んでおくと、より分かりやすいです。
メインの作業は、Slotの追加とまったく同じです。

というわけで。
bbd6e7df.jpg
炊飯器。
クローン元は隣の置物です。
こちらのオブジェクトに湯気のエフェクトを追加してみます。

作業の流れは以下。
1、CRESの編集
├(cTransform)エントリを追加
├タブ「cObjectGraphNode」内、「Filename」にスロット名
├タブ「cTransformNode」内、Slotの座標等の設定
└Parentに関連付け

2、STR#の編集・エフェクト名登録(Instance0x8F)
└Instance0x8Fのテキストファイルに使用するエフェクト名を登録。
テキストファイルが無ければ作る(Group、Instanceを間違えないように)

3、STR#の編集・Slot名登録(Instance0x90)
└Instance0x90のテキストファイルに、新しく作るSlotの名前を登録(CRESで入力したSlot名と一致)
テキストファイルが無ければ作る(Group、Instanceを間違えないように)

4、SLOTの編集
└Target Slotの行を追加。各値の設定をする。

5、BHAVの編集
└「main」のBHAVを開き、ループの前にIdle(0x118)とエフェクト開始(0x70)のCodeを挿入。

編集するオブジェクトのバックアップを取って、作業開始です。


0、はじめに&エフェクト名探し

エフェクトはBHAVによって開始、終了を制御されます。エフェクトはテキストファイルに登録されたエフェクト名から呼び出され、その起点は任意に設定したSlot位置となります。
多くのエフェクトはアニメーションが一巡すると終わりますが、BHAVで終了させない限り永遠にループするものもあります。
一つのSlotに複数のエフェクトを設定することも可能で、Slotの種類も問いませんがTarget Slotを使うのが一般的です。
原文チュートリアルでは、泥酔ノーム人形に「ZZZ」のエフェクトを追加していますが、この覚書では蒸気を自作オブジェクトに追加してみます。操作自体はまったく同じです。

まず最初に、必要なエフェクト名を探し出す作業から始めなくてはなりません。
プログラムフォルダ内にある「Effects.package」にエフェクトが格納されていますが、SimPEでも見ることができません。
そこで「Objects.package」を開き、Instance0x8FのSTR#ファイルを覗いて、そこに書かれているエフェクト名から必要なものをとってきます。ただしテキストファイルの数はかなり多いので、見つけ出すのは大変かも。
欲しいエフェクトを使用しているMaxisオブジェクトをクローンして、Instance0x8FのSTR#ファイルを覗くのが手っ取り早いかもしれません。

蒸気はいくつか種類があるようですが、出来たて料理などの蒸気で使われている「cooking_steam」を使うことにしました。


1、CRESの編集
Resource TreeからResource Node(CRES)を選択。
Resource Listのファイルを選択。

30c6d495.jpg
「Edit Brock」タブをクリック。
プルダウンリストから「cObjectGraphNode: trans=0,0,0; ......」を選択して「Add」ボタンを押します。
新しいエントリが加わります。
ここでは「0x4」のエントリが新たに加わりました。

b2eb8a82.jpg
「Content」タブに戻り、Brock Listから先ほど加えた新しいエントリを選択します。
下の「cObjectGraphNode」タブをクリック。
Filenameに好きなSlot名を入力します。ここの名前は後でテキストファイルにも入力するので、覚えておきます。
Slot名は「slot_fx_」の文字列からはじめるのが無難かと思います。

4a9b0f5c.jpg
「cTransformNode」タブをクリック。
「Translation」にSlotの座標を入力。隣の「Rotation」などを入力すると、恐らくエフェクトの回転ができるかと思います。詳しくは「Slotの追加」を参照してください。

最後にParentに関連付けます。
まず「CRES hierarche」タブをクリックして、Block Listの構成を確認します。
Parentにするエントリーは「 [Joint#](#は数字) 」と書いてあり、他のSlotのエントリをChildとして持つものです。
他のSlotのエントリーが一つもない時は、名前が「Practical」から始まるエントリをParentにします。

どれをParentにするか決めたら、「Content」タブに戻りBlockListからParentにするエントリを選びます。

86187d17.jpg
「cTransformNode」タブをクリック。
右の「ChildNodes」の枠で、「Add」を押す。
新しい行が加わったら、それを選択。
「Unkown 1」に0x0001、「Child Index」にはChildにするエントリのIndexナンバーを入れます。
このオブジェクトでは「0x0000004」になります。
この操作で不備があるとゲームがクラッシュするので、確実に行います。

できたらCommitします。
ちゃんと編集できているかどうかCRES Hierarcheを確かめたい所ですが、ここはセーブをするまで更新されません。
ここでいったんセーブして確かめてもいいですし、作業を全て終えた後で確認しても構いません。

※Slotの座標の決め方
CRESで入力したSlotの座標は、実はParentとの相対位置となります。
多くの場合Parentの位置は原点にあるので、3Dツールで得た座標をそのまま入力して構いません。
しかし鏡など、Parentとなる[Joint#] の位置が原点とは異なるオブジェクトもあります。
ゲームで確認した際Slotの位置がおかしい時、以上の点をチェックしてみて下さい。

2、STR#の編集・エフェクト名登録(Instance0x8F)

使用するエフェクトの名前を入力します。
Resource TreeからText Lists(STR#)を選択。
Resource Listに並んだファイルから、Instance 0x0000008F のテキストファイルを開きます。
無ければ既存のテキストファイルをCloneして、Instanceを0x0000008Fに変更します。Filenameを「Effects」に変更し、必要ないデータもすべてDeleteしてまっさらの状態にしておきます。

34139b11.jpg
Cloneした場合は、下のResourceタブからInstanceを変更できます。変更したらCommitします。


4642a8dc.jpg
「Add」ボタンを押してリストに新しい行を追加。
新しい行を選択し、エフェクト名を入力します。
Commitします。


3、STR#の編集・Slot名登録(Instance0x90)

Slot名を登録します。
Resource Listに並んだファイルから、Instance 0x00000090 のテキストファイルを開きます。
無ければ既存のテキストファイルをCloneして、Instanceを0x00000090に変更します。Filenameを「Bone Names」に変更し、必要ないデータもすべてDeleteしてまっさらの状態にしておきます。

7a951c69.jpg
「Add」ボタンを押してリストに新しい行を追加。
新しい行を選択し、Slot名を入力します。
このSlot名は、CRESで入力したSlot名と一致していないといけません。ミスタイプに注意してください。
できたらCommitします。

私は先にSLOTファイルを覗き既存のSlotを確認したうえで、「0x00」行を飛ばして「0x01」行に入力しました。
理由はこの次の工程で説明します。

今回のオブジェクトでは、Instance0x8Fのテキストファイルも0x90のテキストファイルもなかったため、クローンして編集しました。

4、SLOTの編集
エフェクト用にTarget Slotを追加します。

Resource TreeからSlot(SLOT)を選択。
Resource ListからSlotファイルを選択。
複数タイルのオブジェクトは、タイルの数だけSlotファイルがあります。その場合はエフェクトを追加したいタイルに属したSlotファイルを選択すればいいと思うのですが、試したことが無いのでよく分かりません。今後やり方が分かったら、追記しておきます。

ファイルを開いたら、既存のSlotをざっと確認。

502d7510.jpg
「Add」を押して、新しいSlotを加えます。
最後の列に新しく行が加わるので、それをクリック。
プルダウンから、「Target」を選びます。
次に各項目の値をそれぞれ入力していきますが、大半の項目はどんな値を設定するのかよく分かりません。
同じエフェクトを使用しているMaxisオブジェクトのTarget Slotの値を書き写すのが一番無難かもしれませんが、まずはチュートリアルに示されている値を入力してみます。
ゲームで確認した時うまくいかなかったら、MaxisオブジェクトのSlotの値を参考にする、ということで。
ただし、以下の項目だけは自分で適切な値を決めて入力しなくてはいけません。

・S2(Short2)
「2」と入力します。
CRESでSlotの座標が設定されているためです。
ちなみに「0」だと、F1、F2、F3の値をXYZ座標として使用することになるそうですが、一般的な設定ではありません。

・I9(Int9)
Instance 0x90に登録されているSlot名の行番号を十進法で入力します。
今回の例では、既存のSlotのI9に「0」とあったため、テキストファイルの「0x0」行を空白にして「0x1」に新しいSlot名「slot_fx_steam」を入力した次第です。
既存のSlotが何に使用されているか分からないので、0x0行は空白にしておく以外、いい方法が思いつかなかっただけなんですが…。


・I10(Int10)
Slotファイルに登録されている全Slotの通し番号です。決して重複してはいけません。
複数のSlotファイルがある場合も、ファイルにまたがる形で通し番号になっているはずです。
複数のContainer Slotがある場合、Mキーを押すことで、I10の番号順に飾りオブジェクトがSlotを移動していくらしい。
普通は1から始まる十進法になっていますが、「-1」が重複して存在する例外もあります。
今回がその例外ですが、その場合も1を数え始めにして数値を決めてみました。ゲーム内で確認したところ、特に問題なく動作するようです。

これらの値はプルダウンリストの下の項目や、タブ内で編集できます。

18d9a44a.jpg
最終的にこんな感じ。
I5~F6、F7、I8、F8の値もチュートリアル通りに埋めました。
Commitします。


5、BHAVの編集
オブジェクト設置後から永遠に蒸気のエフェクトが続くよう、エフェクト開始のコードをBHAVに挿入します。

↓チュートリアルに以下のように書かれています。
――どのBHAVにエフェクト開始のコードを挿入したらいいかですが、最初に考えられるのは「init (もしくはFunction init)」です。しかし「init」ではエフェクトのコードは動きません。
エフェクトは生活モードでのみ開始させる事が出来るので、「main (もしくはFunction main)」のIdleループが始まる前にコードを挿入します――
↑「init」BHAVは購入モードでオブジェクト購入&設置直後に一回だけ実行されるものらしいです。とすると生活モードに切り替わるとそれ以降、無限ループをもつ「main」BHAVがずっと実行され続けるということでしょうか。実際「init」にエフェクトのコードを入れてみても、オブジェクトからは蒸気は出ませんでした。

そういうわけで、エフェクト開始のコードは、「main」のBHAV内のIdle無限ループが始まる前の位置に挿入します。
またエフェクト開始前に、3tickくらいの空白時間を設けたほうがいいとも書いてあります。これもやはり、購入モードではエフェクトが開始できないことに関係しているらしいです。
ただ実際にやってみて、3tickだと蒸気が出始めるのが遅い気がしたので、「2tick」で行きたいと思います。
以上から、Idle(2tick)→Effect Startの流れを「main(もしくはFunction -main)」BHAVの無限ループ前に挿入していきます。

7456222e.jpg
今回のオブジェクトの「main」です。
一行だけで無限ループしていますので、この前に新しいラインを入れなければなりません。

b7fac245.jpg
「Insert via true」をクリック。このボタンが無い時は、「Special bottom」にチェックを入れると出てきます。
選択されているラインの下に、新しいラインがコピーされて加わります。無限ループが壊れましたね。
0x1行を選択。
「True Target」に「0x0001」と入力して、無限ループを元通りに直します。
このように新しいラインを加える時は、元のBHAVの流れを壊さないように注意して作業しなくてはいけません。
壊れたら、すぐに直してから次の作業に入ります。

さて、ここから本作業です。
0x0行を選択。
4e1e5a00.jpg
「Opcode」に「0x0118」と入力。Idleのコードです。
「Operands」の数値欄の右に、バツ印のボタンがあるので押します。欄内の数値が全て「00」になります。
「Operands」の一番目の数値欄に「02」と入力。
「Operands」下方に、入力されているOperandsの翻訳文が出ています。Idle(1 arg: ticks=0x0002)になっているのを確認。
Idleの設定はこれでOK。

0x0行が選択されている状態で、「Insert via true」を押します。
新しい行0x1が下に加わります。

新しく出来た0x1行を選択。
「Opcode」に「0x0070」と入力。エフェクト開始/停止のコードです。
「True Target」と「False Target」の両方を、元のBHAVにリンクさせます。この場合は、どっちも「0x0002」へ繋ぎます。
「Operands」の数値欄の右に、バツ印のボタンがあるので押します。欄内の数値が全て「00」になります。
このOpcodeの「Operands」はWizardが使えないため、直接入力していかなくてはなりません。
各欄の設定は以下のようになります。
設定中はOperands下の翻訳文に注意しながら進めます。

・1番目(上段左端)
エフェクトの開始、停止を指示します。
ここでは開始させるので「00」のままです。
停止は「02」ですが、数値を変えるとOperandsの下の翻訳も色々変わるので、一通り見ても楽しいかも。
ちなみにSoft Start やSoft Stopは、フェードイン、フェードアウトみたいになって自然な感じ。
Hard Start、Stopは、スイッチをON、OFFしたみたいにパッと現れたり消えたりするので場合によっては不自然かも。

・2、3、4番目(上段左端から数えて2、3、4番目)
Deta Ownerとのことです。
順に(03 0B 00)と入力。
My(0x03) Object ID(0x000B)と訳されるようです。

・5番目(上段左端から数えて5番目)
Instance 0x8Fのテキストリストの行番号を入力。
Operandsの下の文字情報を見て、自分の設定したエフェクト名が表示されているか確認。
場合によっては、入力したエフェクト名とまったく別のエフェクト名がGlobal等から参照される時があります。
その時は、テキストファイルの設定とOperandsの設定が正しければ、無視して構わないとの事。SimPEのエラーみたいです。いずれにしても、ゲーム内での動作確認次第ですが。

・7番目
Slot番号を入力。
Slot番号の数え方は以下。
SLOTに登録されているSlotを種類別(Container、Routing、Target)に、それぞれSlotファイルのエントリー順に数えていくそうです。
【例】SLOTファイルの内容が上から順にこんな構成になっていたら
0:Container →(Container slot 0x00番)
1:Container →(Container slot 0x01番)
2:Routing  →(Routing slot 0x00番)
3:Target   →(Target slot 0x00番)
4:Container →(Container slot 0x02番)
5:Target   →(Target slot 0x01番)

・10番目(下段左から2番目)
Target Slotを使用するので、デフォルトの「00」の設定を使用。
ここも数値をひとつずつ増やすと、Container、Routing、TargetとSlotの種類を直接指定できるみたいです。

・11番目
「00」のまま。
Package内に存在するInstance 0x8Fのテキストファイルを使用するため。
GlobalやSemiGlobalのテキストファイルを使用する時は、別の値を入力するようです。

・その他
「00」のまま。

91c9375b.jpg
最終的にこんなになりました。
赤と緑の矢印を見て、それぞれの行が正しく繋がっているか最終確認。
Commitします。
これで作業終了。

念のためファイルメニューから「Tools>Object Tools>Fix Integrity」を選び、ウィンドウが開いたらOKします。
セーブします。
SimPEを終了する前に、CRES Hierarchieが正しく編集できているか確かめます。
9511674d.jpg
大丈夫のようです。

SimPEを閉じて、ゲーム内で確認します。


27eede16.jpg
ちゃんと蒸気口から湯気が出てきました。
成功!

■おまけ
Instance 0x8F のテキストファイルを添付しておきます。
エフェクト名探しの一助にご利用ください。

エフェクト名リスト集

「エフェクトBaseGame.package」は、プログラムファイル内「シムズ2」フォルダにある「objects package」から使えそうなエフェクトを適当に抽出したものの詰め合わせ。
「エフェクトSemiGlobal.package」は、SemiGlobalからインポートしたテキストファイルと、一部のオブジェクトから抽出したテキストファイルの詰め合わせ。テキストファイル名には、抽出元のSemiglobal名やオブジェクト名を書き加えています。綴り間違いがあるような気がしますが、ご容赦ください。

色々面白そうなエフェクトがありますが、実際にうまく使えるかどうかはゲーム内での動作確認次第です。
PR

Comment

お名前
タイトル
E-MAIL
URL
コメント
パスワード

Trackback

この記事にトラックバックする

SimPE覚書リスト(Sims2)

■拡張対応アップデート■
├ 冷蔵庫のシーズンズ対応
├ オブジェクトのフリータイム対応
├ アパートライフのシフト機能添付
└ カスタムドアのアパート区画対応

■近所関連■
├ 家系図編集
├ 生涯願望変更
├ 瞳と肌の変更
├ シムの性別変更
└ シムを整形する(AltSimsSurgery使用)

■スキン関連■
├ 服のカテゴリ変更
├ カスタムヘアの整理
├ 職業服のロック解除
├ アクセサリーの青点滅修正
├ 同メイクの重ね張り(アクセサリ複数使用)
└ Hairリカラーの不必要な年代削除

■オブジェクト関連■
├ オブジェクト日本語化
├ Subsetの追加&Recolorable化設定
├ Repository Technique (Master&Slave Object)
├ Slotの追加
├ エフェクトの追加
├ 複数リカラーを1ファイルに
├ Allowed with Foodな飾りオブジェクト
├ GMDCの複製
├ ベッドの回復値変更(BCON編集)
└ オブジェクト制作メモ

■Food関連
├ 料理の整理(パイメニュー階層化)
├ 朝食シリアルのリカラー(カスタム料理作成基礎?)
└ 料理のメニュータイム操作

■package総合■
├ packageファイルの構造
├ Material Difinition(TXMT)をいじる
└ BHAVに挑戦?

■その他■
├ 便利メモ
├ 音楽抽出
├ 絵画や写真の抽出
├ オリジナル絵画の描かせ方
└ BodyShopで髪リカラー

シム作成の覚書(シムズ2)

■遺伝システム■
遺伝とカスタムシム1

■ボディショップでシム作成■
下準備
テンプレート選び
眉と目の編集
鼻と口の編集
顔と顎の編集

■リンク■
個性付けメイク

■シム置き場■
女性シム
男性シム

シム作成(シムズ3)

■シム置き場■
男性シム
女性シム

プロフィール

HN:
うに
性別:
非公開
自己紹介:
シムズ2、3のレビューは、上のリンクからどうぞ。
■The sims2プレイ環境
本体+キャンパス+ナイト+ショップ+ファミリー+ゴージャス+ペット+ウィンター+シーズンズ+パーティー+H&M+トラベラーズ+ティーンエイジャー+フリータイム+K&B+IKEA+アパート+M&G
■The Sims3プレイ環境
本体のみ

カレンダー

03 2024/04 05
S M T W T F S
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30

ブログ内検索

最新コメント

[01/05 Abuiship]
[12/10 ぺや]
[12/03 ぺや]
[11/25 小原沙貴]
[06/19 めい]

最新トラックバック

バーコード

Copyright © 雑記帳 : All rights reserved

TemplateDesign by KARMA7

忍者ブログ [PR]