今回はこのチュートリアルに挑戦してみました。
「リカラー、Meshグループの追加」
「Tutorial: Adding a subset to an object (and making it recolorable) 」 by IgnorantBliss
http://www.modthesims.info/showthread.php?t=103379
オブジェクトに新しいsubsetを追加し、必要であればそれをリカラー可能にする方法です。
応用で、必要のないSubsetを削除したり、リカラーできなくしたりも可能です。
操作は、前半と後半に分かれています。
■Subsetの追加
1、Mesh subset のインポート
2、テクスチャーのインポート(必要なら)
3、MATERIAL DEFINITIONの追加
4、SHPEの編集
最後にFix Integrity。
■リカラー可能化設定
5、GEOMETRIC NODEの編集
6、MATERIAL OVERRIDEの追加
7、"Fix Integrity"でOK(updateは押さない)
自作のランプを実験台に、作業を進めていきます。
作業を始める前に、オブジェクトPackageのバックアップをとっておきます。
■Subsetの追加
1、Mesh subset のインポート
GMDCにMeshをインポートします。新しく追加したいグループ(subset)は、「replace」ではなく「add」でインポート。
これで新しいSubsetを追加する事が出来ます。
subset 名には「 _ (アンダーバー)」は使ってはいけないそうです。たとえば「 window_glass」といったsubset名はだめです。
新しいSubsetをインポートした後でsubset名を変えたい場合は、「Groups」タブをクリックすると、Meshに含まれるsubsetの一覧が出てくるので、そこで変更します。
Commit します。
私は「metal」というSubsetを新たに追加しました。
2、テクスチャーのインポート(必要なら)
新しいテクスチャーが必要であれば、インポートします。
Resource TreeからTXMRを選択。
Resouce Listにある既存のテクスチャーファイルを、クローンします。
クローンされたファイルを、リネームします。
既存のテクスチャー名を参考に、同じような法則で命名すれば良いかと思います。
ファイル名の最後についている「_txtr」は、そのまま残します。
既存のテクスチャーの名前を参考に、同じような法則でネーミングすればOKです。
Commitします。
作成したテクスチャーをインポートして、Commitします。
私は既存のテクスチャーを使うので、この工程は飛ばしました。
(今回いじっているオブジェクトのテクスチャー名は上の画像から「tan」と思われます)
テクスチャーの命名の例は以下。
「_txtr」直前の文字列がテクスチャー名に当たるようです。
「リネーム前」→sluceilingcagea-[uni-10.1.2010-c1311]-tan_txtr
「リネーム後」→sluceilingcagea-[uni-10.1.2010-c1311]-metal_txtr
3、MATERIAL DEFINITIONの追加
Resource TreeからTXMTを選択。
Resource Listにある既存のMaterial Definitionをクローンします(似たような設定のMaterial Difinitionをクローン元にすると、後の設定が楽です)。
他のカスタムオブジェクトからExportしてAddしても構いません。
Listの一番下に、新しいMaterial Definitionが加わります。
これを選択して、既存のFilenameを必要な箇所だけ変更します。
Filenameをつける際、最初のアンダーバーの次の文字列は、MeshのSubset名とそろえます。
その次の文字列は、使用するテクスチャー名と一致させる……と原文にはありますが、管理人の例では他のMaterial Difinition名をみても一致していませんね(テクスチャー名はtan)。
テクスチャーを使用しない場合は、この文字列は必要ないそうです。
ここでは「cage_txmt」のMaterial Difinitionをクローンして、「metal_txmt」に修正しているところです。
チュートリアル通りに命名しにくい時は、他のMaterial Difinitionの名前を見て似たような法則で名づければ大丈夫だと思います。
次に、クローン元のMaterial Difinitionと異なるテクスチャーを使用する場合(工程2で加えたテクスチャーを使用する場合)、以下の項目を修正します。
Propertiesタブをクリックして、「stdMatBaseTextureName」の項目を探します。
ここにはSubsetに貼り付けるテクスチャー名が入っています。
項目を選択し、「Value」の所にテクスチャー名を入力しましょう。
テクスチャー名の頭に「##0x1C050000!」を足して、末尾の「_txtr」は削除します。
Commit します。
次にFileListタブをクリックします。
ここにはMaterial Difinitionで使用されるテクスチャー名の一覧があります。
古いテクスチャ名の項目をクリックして、「Filename」の所に「stdMatBaseTextureName」で入力したのと同じテクスチャ名を入力します。
ファイル末尾に「-envcube」の文字列があるテクスチャもある場合があります。
これはオブジェクトをテラテラ反射させるときに使用するテクスチャですので、触らずそのままにしておきます。
Commit します。
4、SHPEの編集
Resource TreeからSHPEを選択。
Resource Listからファイルをクリックします。
Content タブの下方にある「Part」タブをクリック。
リスト右下にある「Add」を押して、新しい行を加えます。
新たな行を選択して、追加したSubset名とMaterialDifinitionのファイル名を入力します。
MaterialDifinitionの名前は、頭に「##0x1C050000!」を加えて、語尾の「-txmt」は削除します。
Commit します。
ファイルメニューから「Tools>Object Tools>
Fix Integrity」を選択。
ウィンドウが開いたら、そのまま「OK」をおします。
クローンしたテクスチャーやMaterial Difinitionにも、新たなInstanceが割り振られます。
「Fix Integrity」はとても大切なので、忘れないで下さい。
セーブします。
以上で、新しく加えたSubset がゲームで表示されるようになります。
リカラーできる必要がなければ、作業はここでおしまいです。
カスタマイズの続きをする場合も、ここまでちゃんと出来ているかどうかゲームで確認しておくと安心です。
■リカラー可能化設定
次は、新しく加えたSubset をリカラーできるようにする作業です。
5、GEOMETRIC NODE(GMND)の編集
「Block List」のプルダウンから、「tsDesignModeEnabled」を選びます。
ここの「cExtension」タブには、リカラー可能なSubsetの名前が入ります。
すでに2つのSubsetがある場合、新たに3つ目のSubsetを加えることは出来ません(リカラー可能なのは、最大で2つ)。ひとつを削除するか、Recolobleにするのを諦めるしかありません。
さて、「add」を押して新しいSubsetを加えます。
新しく加わった行を選択して、「Name」欄にリカラー可能にしたいSubset 名を入力して、Commitします。
5.1、GMND「tsNoShadow」の編集
チュートリアルに追加で、必要があれば作業します。
屋外に設置した際、オブジェクトの形に応じた影を描画するかしないかの設定です。
「Block List」のプルダウンから、「tsNoShadow」を選びます(無かったらこの作業は飛ばして構いません)。
先ほどと同じ要領で、新しいSubsetを追加しますが、「Array」の所のプルダウンから「Value」を選んでから「add」を押します。
「Name」にはSubset名を入力。
「Value」には設定に応じて、影ありなら「0x00000000」、影無しなら「0x00000001」を入れます。
Commitします。
詳しくは
Repository Techniqueの5番の作業を読んで下さい。
6、MATERIAL OVERRIDE(MMAT)の追加
Resource TreeからMMATをクリック。
Resource Listから既存のものをクローンして、新しいファイルを作ります。
新しいファイルをクリックして、「family」の項目を選択。Valueに長い文字列が入っています。
メニューから「Tools > Object Tools > Hash Generator」を選択。
Hash Generatorの小ウィンドウが開いたら、「GUID」のラジオボタンをクリック。
「Hash Value」にある長い文字列をコピーして、familyのValueにペーストします。
Hash Generatorを閉じます。
次に「name」の項目を選択し、ValueにMaterial Difinitionのファイルネームを入れます。
MaterialDifinitionの名前は、頭に「##0x1C050000!」を加えて、語尾の「-txmt」は削除します。
最後に「subsetName」の項目を選択し、ValueにSubset名を入れます。
Commitします。
チュートリアルに追加で、以下の項目にも注意をし、必要があればそこも変えてください。
・defaultMaterial
普通Valueは「True」です。「False」になっていたら変更します。
購入画面でオブジェクトをクリックした際、デフォルトで選ばれているリカラーを決めているようです。
ちなみに、リカラーファイルのMMATはすべて「False」になっています。
また、状態によって適用されるTXTRが異なるオブジェクトは、どちらかのMMATが「False」になっています。
例えばキッチンカウンターの場合、綺麗な状態が「True」で、汚れた状態が「False」になります。
ランプの場合は、明かりが付いている時のMMATの方が「True」となっています。
その他、オブジェクトによっては例外もあると思います。
・MaterialStateFlags
上に書いたように、オブジェクトが複数の状態を持つ時、ここの値が「0x00000001」だったりします。
複数の状態を持っていない、もしくはデフォルトの状態の場合は、「0x00000000」みたいです。
・objectStatIndex
普通は「0xFFFFFFFF」です。
オブジェクトが複数の状態を持つ場合、別の値が入っています。
この値は、STR#内にあるInstanceが「0x88」のファイルにあるデータの、行番号を指しています。
それぞれの行にはオブジェクトの状態を表すテキストがありますので、必要があれば照合して正しいナンバーを16進法で入力します。
詳しくはこちら。
「Recolors Not Showing up on Custom Object 」
http://www.modthesims.info/showthread.php?p=1927688
最終的にこうなりました。
7、"Fix Integrity"でOK(updateは押さない)
必ず最後にFix IntergrityでOKをします。
クローンしたTXTRやMMATなどにも、新しいInstanceが割り振られます。
セーブしてゲーム内でリカラー可能となっているかどうか、確認します。
いらないSubsetを削除するには、上記の作業を参考にする他、GMND、SHPEにある関連情報も消した方がいいようです。
「Help needed with the GMDC 」
http://www.modthesims.info/showthread.php?t=285959
いずれにしても、最後に「Fix Intergrity」するのを忘れないようにします。
PR