メモ:LW9.6とUnreal2とUVを使ったスペキュラマップ

 LW9.6とUnreal2CelPainter(1.0&1.05)において、対象サーフェスのスペキュラチャンネル内にUVを使ったイメージマップがあるとサーフェスプレビューやUnrealのパネルOpen時に即死する。
 テクスチャレイヤーの使用状態等によって問題の参照元/先のアドレスが変わる。

 LW9.3.1でなら問題無し。

 LW9.6でも他のチャンネルなら問題無し(カラー/グロス/バンプ/透明度。 他は未テスト)。
 スペキュラチャンネル内でもUV以外のマッピングなら問題無し。
 テクスチャレイヤー(UV)が非Activeだったり、UVマップの指定がNoneだった場合も大丈夫。

 UVがVMAPのみなのかVMAD(のみ/混在)なのかは影響しない。
 モデル内のUVマップの数も影響しない。

 Unreal側のスペキュラ(レイヤー)設定のシェ-ディングタイプ(標準/LW)は影響しない。

 ('A`)
----
 ノードで、2DImage(UV):Luma→Surface:Specularとした場合は落ちないけれど、Unrealの入力をLWシェードにしてもそれを参照してくれないから意味が無い('A`)

 9.6対応版出ないかなぁ('A`)

----
 ノードのSpecularShading Buffで受けて、UnrealのシェーディングタイプをLWにすれば、(ノード内で)スペキュラにUVでイメージを張って使う事は出来るね(;・з・)
 前回はSplecular Buffでしか試さなかった(;;・з・)
 まぁ、9.6でレンダしなきゃいけないような場合の最終手段か。
 穴だらけの9.6で何かをどうこうしようなんて思えないけどね(・x・)

----
 DStormのフォーラムにも書いたけど、LW9.6はshaderHandlerからUVで張ってるテクスチャレイヤに対してtextureFunc->layerEvaluate()すると即死するっぽい('A`)
 UV以外やLW9.3.1なら問題なし。
 Unrealが直接テクスチャレイヤーを見ようとしてるかは不明だけどね。

----
 これも書いた事だけど、layerEvalで使用するmicroPoly構造体をvparm->initMPで初期化してると、UVのレイヤーに対してlayerEvalをした時に即死する。
 memset(0x00)で初期化してれば大丈夫ぽい。
 テストcodeでは初期化後色々代入したのだけれど、代入漏れしてる(sa->に無い)要素の値がLW931とLW96のinitMPでは違う値になってるのだと思う(実値未確認)。
 で、96のinitMPでは不正な値が入って、leyerEvalはそれを参照しにいって落ちると。

 てか、mPoly構造体の要素の何がどう使われるかの記載が皆無に等しいってのもアレだよなぁ(・з・)
 要素名から推測するしかないし。
 全要素が参照されるわけでもない(初期化+数個の代入で問題無い状況あり)ってのもなんかなぁ。

ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 1

ガッツ(がんばれ!)

この記事へのコメント

この記事へのトラックバック

  • スペキュラとUVとvparmf->initMP()

    Excerpt: 続き(http://fault0d.at.webry.info/200908/article_12.html) 961でUnreal2の落ち方が変わった、というのは置いといて。 Weblog: もきもき3D racked: 2009-12-24 18:03
  • バ~グは~無い方がいい~♪

    Excerpt: 現~実~は、残酷だ~♪  9.6とUnreal2問題(http://fault0d.at.webry.info/200908/article_12.html)の続き。 Weblog: もきもき3D racked: 2010-02-15 08:42
  • Unreal2&DC_fakeAnisoキター(゚∀゚)

    Excerpt: 以下でダラダラと愚痴ってた事が解消されてる~ヽ(=゜ω、゜=)ノ http://fault0d.at.webry.info/201002/article_4.html http://fault0d.. Weblog: もきもき3D racked: 2010-02-25 01:31