OBLIVION SS/MOD晒しスレ 205

このエントリーをはてなブックマークに追加
560名無しさんの野望
ついでにゲーム動作を軽量化できるかもしれない小技を紹介します
エロスレでも以前に少し触れた技です。

まず著名なNifOptimizeによる軽量化です
壁の向こうに多数のオブジェクトがありますが、Optimizeで軽量化されました。

http://up.mnty.net/img/up001819.jpg

次に紹介するのが、今回の小技、Nifのパーツ減量による軽量化です。

http://up.mnty.net/img/up001820.jpg

このSSの上下は、共にNifoptimize済ですが
下は、geometryとpassが半減し、FPSが大幅に伸びています。
では何が違うのかといえば
本棚に多数収まっているブックセットのリソース中の、例えばページや背表紙のパーツが
今までは一つのNIFの中で、多数のパーツに別れていたものを
BlenderのCTRL+Jで合体させただけです。(最下段参照)

オブリの光源が重くなる原因の一つとして
一つ一つのパーツ(テクスチャやマテリアル)を参照して
光がどうあたって、どう反射されてどういう色になってどう動いて……と全部計算しているのがあると思われます。
つまり本が、一冊一冊バラバラになっていない、まとまったリソースだったとしても
nifの中でも細かいパーツがわかれていれば
それらのパーツ分、全て別個に光の計算をすることになります
光源が複数あったときの重さも、パーツ数が多ければ、乗算的に計算が複雑になるのではないかと

アクセなどちっこいパーツが、実は細かく頂点数の多いメッシュで出来ていて
付けると動作が重くなるという経験は、多くの人にある思いますが
小さいパーツでもなんでも、パーツ点数そのもの「も」重さに影響します。
561名無しさんの野望:2012/07/07(土) 09:40:15.87 ID:9S8uMmjp
クリーチャーが多数でても比較的軽い理由には
AIやダメージ計算なんかが簡略化されている
あるいは、メッシュやテクスチャがサイズ小さい他、
パーツが少ないこと自体も大きな理由の一つと思われます。

これを装備に応用すると
部位別装備では、絶対に別パーツとなってしまう手と脚であっても
全身一体化装備なら、テクスチャが同じなら、一つにまとめて軽くできる可能性があるわけです。

http://blog-imgs-50-origin.fc2.com/a/k/u/akuobli/nif03.jpg

・ただ全く無問題というわけではないです
3枚目のパーツ合体後は、微妙に色が変わってしまっていたり
D画像のOptimizeで修正する前、C画像ではリボンの描画おかしくなっていたりします。
Nifskopeで見る限りは色は同じなので、materialの反射具合が変化してしまっているはず。

・パーツ点数が多い装備は全て重いというわけではありません。
例えばTESNのソウルキャリバー系の装備などは、パーツ点数が多くても軽いものが多いです。
NiSpecularProperty関係かとも思いましたが、そうとも限らないようで……。

・武器は手間をかけて合体させてもあまり効果はないかもしれません。
もしかしたら、武器はパーツが別れていても、ゲーム上では描画の計算が一緒に行われているのかもしれません。
特に矢筒の二本目以降の矢を一つのパーツに合体させても、ほとんどFPSに変化はありませんでした。
562名無しさんの野望:2012/07/07(土) 09:41:23.64 ID:9S8uMmjp
3枚目、アドレスミスサーセン
http://up.mnty.net/img/up001820.jpg


注意点1
テクスチャパスだけでなく、同material名・色、あるいは同じmaterialを参照する状態でなければ
blenderで合体させても、exportした時点で再度バラける。

そのため、事前のnifskopeの段階で、NiTriStripsのPropertiesからref〈NiProperty〉を出来るだけ合わせてしまうのが最善です。

NiAlphaPropertyやNiSpecularPropertyがあるパーツと無いパーツは合体できないし、させない方が良い。


注意点2
senteicの裏表など、合体の順番でパーツの色が変わってしまうことがある。


注意点3
パーツを合体させると見かけ上のメッシュサイズは上がることがある。

それぞれのパーツは、それぞれのウェイト情報を持っています。
例えば手のパーツであれば、手の周辺ボーンのウェイト情報を持っています。
handボーンが動いたら、手のパーツも連動するという情報を持っていますが
脚ボーンに関しては、全く関知していないわけです。

その手パーツを脚パーツと合体させれば
合体後の手+脚パーツの中で、元の手部分も脚ボーンのウェイト情報も持つことになります。
脚ボーンが動いても、元の手部分は全く連動しない、という情報です。
このウェイト情報が増える分だけ、見かけ上のサイズが増えるのだと思ってます。

目安として、重いハイポリ装備はメッシュサイズも大きいわけですが
パーツ合体に関しては、メッシュサイズが多少上がっても、逆に動作自体は軽くなるはずです
563名無しさんの野望:2012/07/07(土) 09:42:54.86 ID:9S8uMmjp
注意点4
OBLIのnifはウェイトづけ失敗で装備が妙に重くなってしまう場合(バグ?)があります。
個人的な感触なので具体名は出しませんが
体系素体リソースの時点で、これが起きてしまっているMODがあるように思っています。
そういった失敗ウェイト?を他のパーツにも移してしまえば
更に重くなってしまうおそれもあるかもしれません。

注意点5
当方のミスかもしれませんが、一部装備のパーツ合体後に
当該装備をつけたNPCをUPDATE3DするとCTDが起こることがありました
くれぐれもバックアップをとった上で、整理してお望み下さい。
564名無しさんの野望:2012/07/07(土) 09:44:14.16 ID:9S8uMmjp
またミスってたorz

http://up.mnty.net/img/up001821.jpg
565名無しさんの野望:2012/07/07(土) 09:45:50.51 ID:9S8uMmjp
ちなみにNPC一体のgeometryは数十といったところです
バニラなら2,30なのかな?
なので
http://up.mnty.net/img/up001821.jpg
の約50減というのも、実は少なくない数字だったりします。

長々とスレ汚し失礼しますた