Entry 目次

只今コメントには返信できませんがツッコミ大歓迎です(゜∀^)/
Reproduction or appropriation of HTML, images and comics from within this blog(site) is prohibited. Do not use my works without permission.

スポンサー広告

≫EDIT

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

シムズ2アクセサリの青色点滅修正

≫EDIT

年末シムズ改造スペシャル!
連日テクスチャ関連の情報をお届けしましたが、今回はアクセサリでフル活用してみよう!

DLしてきたアクセサリが、ゲームを再起動したら青色点滅してた!という経験はございませんか?
これは鏡を使うと直りますが、毎度そんなことメンドクセーですよね。
ではこれをファイルをいじって直しましょう!
というのが本日のテーマです。

なお、不確定要素がありますので確実にこれで直るとは断言できません(´_`)
※ファイルのバックアップコピーは必ずとってから作業をはじめましょう!約束だお!!




手っ取り早く手順だけ知りたいんだ!って方は前置きは飛ばして下さい。


前置き:青色点滅がどうして起こるのか?
製作のことはわからんですが、世に出回ってるアクセサリはMaxisのサングラス(メガネ?)を元に作られているようです。
よってSubset名が基本的にサングラス設定のままで、「frame」「lens」「rim」の3つがあるもよう(もちろん職人によっては名前を変えている場合もあるでしょうから一概には言えません)



青色点滅が起こる原因は
1.3Dメッシュとテクスチャが関連付いていない
2.3Dメッシュに対してテクスチャが足りない
3.テクスチャに対して3Dメッシュが足りない
4.ファイルの重複

のいずれかであると考えられます。

よって、修正方法は1つだけに限らないと思われます。
1つの修正策として、こちらにチュートリがあります(英語)---MTS(Tutorial: Fixing Flashing Blue Accessories)
↑この方法は上記3番の修正法で、足りないメッシュを空のメッシュを追加してテクスチャ情報と関連付けてエラーをなくす方法です。
ということで、空のメッシュファイル(My Placeholder Obj File)が配布されています。


だがしかし!
ファイル関連性を考えると。わざわざ空メッシュを追加しなくても、メッシュに対応しない情報を削除する方法でも改善されますね?うん。

つーわけで、うちではイラネ情報削除法で青色点滅を打破してみます!



青色点滅修繕手順

←本日の例題は、こちらのマクドナルド帽子

うちではこれがよく青色点滅で現れるので、これを修繕してみようと思います!




1.本当に使われてるメッシュ(Subset)を確認する
まずメッシュファイルのGMDCを見ます。
ここで実際使われているメッシュSubset名を確認。

アクセサリーの場合、使える世代の数だけGMDCも存在すると思うので、一応全部のGMDCを見ます。

すると、この帽子は全GMDCで「frame」という名前1つだけでした。

<注>中には世代によってSubsetが異なるアクセもあるかもしれません。そんな時は臨機応変に対処下さい。使われているSubset名はどれなのか、それを判断します。

今回は、1つだけ~な・の・に・・・↓

SHPE では。

Subsetが3つあるんですなー。
他に「lens」と「rim」っちゅーSubset名が書かれていますた!
GMDCで実際存在しているSubset(メッシュ)は「frame」っていうのだけでしたね。
つーわけで、ハイ!この2つは不要!消しちゃいましょう!

これは、ありもしないメッシュがTXMTを指定してるって事です。しかも##0x1C050000!がない=Maxisデータなので、わざわざ深層部フォルダを参照しに行きます。
まあ、実際ここは放置してもいいかもなんですが、確実に不必要な情報なので消します。私は消します。

同様にして、GMNDでも不要なSubset名が出てる部分は削除できます。
「lens」「rim」の設定はイラネので消してもOK!(消さなくてもOKだが)

要はGMDCで見た使われているSubsetの関連情報だけを残し、他は消す!という作業です。

今回この帽子では「frame」だけが使われていた!ということを念頭に置きながら、以下の作業に着手します!



2.リカラーファイルの修正(余計な物を削除)
以下リカラーファイルでの作業になります。

XMOLで、
←まずXMOLを見ます。

XMOLはオブでいうとMMATみたいなもんで、リカラーファイル情報が網羅されています。
ここでもSubset名の指定があります。

メッシュは「frame」しかないはずなのに、ここでも存在しないはずの「lens」と「rim」の指定がありました!
ので、いらないSubset情報は消してまいます!(`ω´)GOGO!!
ここは3つ1セットになってるのでご注意。

そして、numoverridesの部分では、使うSubset数を設定しなければならんので、この場合は「frame」の1つだけなので0x00000001に変更します。

使える世代と性別分XMOLがあると思うので、全部同じように消しちゃいます!
全部やったらセーブ。


さあ、このようにイラネ部分はドンドコ消していくなりよ!


3IDRで、
←お次は3IDRざます!
ここはXMOLとInstanse番号で連動しています。よってXMOLと同じ番号の3IDRを見ます。全部見ます。
ここにはメッシュファイルのCRESの番号とSHPEの番号そしてTXMTの番号も書かれているので、このファイルがメッシュとこのリカラーファイルを関連付けているとわかります。このファイルがキモですな!

ここは理解がいまだ不明解なんだけど(大事なのにw)、
画像中の説明のような感じでXMOLとTXMTは指定し合っているんだと予想して、さっきXMOLで消したSubset情報に対応するTXMTを消します。


どうしてそうなのかは、たぶんこれ↓
XMOLと3IDRの指定方法
ちとソースがないので不確定なんだけど、アクセサリ製作チュートリなんかを読むと、3IDRの中の並び順にこだわっている様子なので、
←おそらくこうなのかと。
"idx"ってのは業界用語で"index"の略です。つまり行番号とかそのへんのこと。上から順に0,1,2…と続きます。

別に絶対この順番通りにしなきゃダメってことはなさげですので、3IDRで並び順を変えた場合はXMOLでのkeyidxを変えればよいかと思われます。
つまり、この番号も指定が間違っているとエラーの要因になるっちゅーことなので、一応チェックしておくべきでしょう。

てことで3IDRはオワリ。全部やったらセーブ。
まだまだ消すよっ!(`д´)ノ


TXMTで、
←次はTXMT
TXMTはテクスチャTXTRを指定します。よって最終的にここの設定も違うとエラーの原因です。

先ほど3IDRで消したTXMT番号(Instance番号)を消します!じゃんじゃか消します!
逆に言うと3IDRで残したTXMTだけ残してあと全部消します。
3IDRではメッシュファイルと使用するTXMTを設定してるので、その中にないTXMTは使わないイラネ物ってことです。

すると、やっぱり「…~frame」と付いた名前のTXMTだけが残るんですねぇw
これは使ってるSubset名と同じなんで、それっぽいなって感じするじゃなーい?

ここの削除の基準は名前で判断してもいいのかもしれませんが、職人さんによっては名前を変えてる場合もあると思うのでやっぱりInstance番号で判断した方がいいかと思われます。

今回は実にイラネTXMTが16個もあったんですね~(゜0゜)・・・エラーが起きてもおかしくないw
終わったら本セーブ。

ついでに、削除したTXMTで使ってるTXTRがあったらそれも削除できます。
今回は、「…~rim_txmt」で指定されてたTXTRがあったんで消しちゃいました。(データ量軽減)

というわけで修正完了!

←以来、我が家ではこのマック帽の青色点滅がなくなりました^^
(あの、注目するのは顔じゃなくて帽子の方だよ?w)

他の青色点滅アクセも同じように削除削除でやってみたら、青色点滅しなくなったので、たぶんこの方法でいいんじゃね?って気がします。







以下、余談。
ヒマで死にそうって人だけ読んでください^^
<注>推測の話なんで不確定事項です。勝手に考えてみただけなので、読む場合は鵜呑みにしないねネ!

青色点滅するアクセサリは鏡を見るとなぜ直るのかというフシギを考えてみた。

もしテクスチャが本当に不明なのならば、ずっと青色点滅してるはずだが、アクセサリの場合そうではない。
そのアクセをつけたシムが鏡を見る(=ゲームデータを再読み込みする)と直ってしまう・・・てことは?
つまり、テクスチャはあるが正常に指定されてないだけかな?と推測。

私の経験上、オブジェクトにおいては、
代表するTXMTが不明の場合、設置時に青色点滅を起こすが、リカラーファイルを選ぶとリカラーファイルのTXMTが指定するテクスチャが表示され、青色点滅はおさまる。
これが何を意味するかというと、リカラー表示に必要なMMATを読み込んだがため、MMATの情報でテクスチャが確定したから正常になったと・・・考える。
設置した以降はゲームを再起動しても青色点滅を起こすことはない。つまり設置後はMMAT情報を使い続けると仮定しよう。

さて。アクセサリの場合、
オブでいうところのMMATにはXMOLが該当する。
上述の仮定でいくと、一度シムが身につけた(設置)以降はXMOL情報を使い続けることになる。

XMOLが参照するのは3IDRで指定されたメッシュファイルのSHPE(Subset名とTXMT名)とCRES(オブジェクト名=アクセサリ名)と同パッケージ内にあるTXMTのみである。
つまり、GMDCのメッシュ情報までは読み込んでいないわけだ。


今回の帽子(修正前)のファイルを見てみよう。
青色点滅が確実に起こるとわかってる"am"(アダルト男子)ファイルで調べてみる。

メッシュファイルのSHPEより。
Subsetごとに設定されてるTXMTが実際指定しているTXTRテクスチャ名を調べてみた(これはTXMT名を元にFinderから検索すると出てくる)
lens部では指定はない
frame部にuuaccessoryeyeglasses-black_txtr
rim部ではuuaccessoryeyeglasses-tortoiseshell_txtr
という名のTXTRテクスチャが指定されていた。

つまり、それぞれのSubset部では本来そういうテクスチャが付くわけだ。
ただし、そのテクスチャが実際帽子で付くわけではない。
そこでリカラーファイルの方でリカラーされて出てくるわけだ。


ではリカラーファイルのほうで。

←TXMTの中身を見てみるとこうなってた

ここに出てくる2つのテクスチャ名の関係は、
上段のTXTR名が出てきたら、下段のstdMatBaseTextureNameで出てるテクスチャでリカラーする。

よって、「…~frame_txmt」では、
uuaccessoryeyeglasses-black_txtrというテクスチャが出てきたら、
その下に出てる##0x5…~frame~stdMatBaseTextureName_txtrというテクスチャに置き換わる。
たしかに、このテクスチャは同パッケージ内にある帽子柄のテクスチャだった。
なお、uuaccessoryeyeglasses-black_txtrというのは、先ほどメッシュのSHPEで確認したframe部のTXMTがひっぱってくるテクスチャであるから辻褄が合っている。

「…~lens_txmt」ではTXTRの指定はなかった。ので無視していいだろう。

だがしかし、「…~rim_txmt」においては、
先ほどの「…~frame_txmt」と同じuuaccessoryeyeglasses-black_txtrというTXTRを
##0x5…~rim~stdMatBaseTextureName_txtrというテクスチャでリカラーしろって指示が出ているではないか!そしてこのテクスチャも同パッケージ内にちゃっかり同梱されている。
ファイル名はよく似ているが、右の番号を見ればわかるように全く別のテクスチャである。

おっと?これは??

メッシュファイルのSHPEでは
Subset「rim」はuuaccessoryeyeglasses-tortoiseshell_txtrというTXTRテクスチャをひっぱっているばずではなかったか?
でもなぜかリカラーファイルでは「rim」は、「frame」と同じuuaccessoryeyeglasses-black_txtrの方をリカラーしにかかっているのだ!
(おそらくこれは、アクセ製作時にTXMTをクローンして作るためのニアミスのような気がする)


つまりこれは、同じ1つのTXTR情報が出てきた時、同時に2つの別なリカラーをしろって命令になる・・・そんなことはありえない。
そこでシムズはどちらのテクスチャ情報を使えばいいかわからず結局どちらも決定できず青色点滅を起こす!・・・のではないかと予想。

よって、鏡を見せた場合は、そこで初めてメッシュファイルの全てを読み込むからGMDC情報も読み取り、「rim」というメッシュ(Subset)は存在しないことを察知する。
よって存在する「frame」の情報だけを採用しにかかるので、青色点滅はおさまる・・・という感じ??

つまり、今回の帽子は「rim」が悪いwww
おそらく「…~rim_txmt」に出てくる上段のTXTR名を変更しても青色点滅は改善されたであろう。
ま、frame以外は使わない情報なので削除するのが確実である。


以上こういう理由で青色点滅が起こっている場合は、この記事の冒頭で紹介したMTSリンクの方法を試しても青色点滅はなおらない可能性もある。
メッシュを足してもリカラーファイルの方でTXMTが間違っているからだ。
もしやってみてもダメだったと言う場合は、今回紹介した削除法を試してみるといいかと思います^^




・・・なんつって大ウソかもしんなーいヽ(´∀`)/
もし確定情報がわかればこの内容は随時修正しまっする。




上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。