2009年10月24日土曜日

[Pv3D]UVマッピングの問題


UVマッピングを使用したテクスチャに、Shaderを適用すると出てくる例の黒い線を消すべくいろいろやってみた。

日本語のページを探してもこの問題の解決策を見つけられなかったので、英語で調べてみるとこんなものを見つけました。
まさに自分と同じ現象、しかも解決策書いてある!というわけで早速試してみました。

解決方法が書いてあるのはこの一文。
a fix is to change the shadercomposition mode to per_tri on the shader. This will be slower but remove the seams.
意訳すると、「シェーダーのshadercomposition modeをper_triにすれば、重くなるけど線消えるよ。」って感じでしょうか?

shadercomposition modeってのは、ShadedMaterialのプロパティにshaderCompositeModeというのがあるので多分これのことでしょう。
shaderCompositeModeのデフォルトの値は0。
また、ShaderCompositeModesに次のような記述があります。
public static var PER_LAYER:int = 0;
public static var PER_TRIANGLE_IN_BITMAP:int = 1;
per_triというのは、おそらくこのPER_TRIANGLE_IN_BITMAPのこと。
というわけで、
var material:ShadedMaterial = new ShadedMaterial(bitmapmaterial, shader, 1);
という風に記述しました。3つ目の引数がshaderCompositeModeです。

こちらが作ったswfファイルです。重いので反応遅れます。
ソースコードは右クリックで見られます。
他の目的で作ったものをブログ用に適当に改変してるので非効率的な書き方になってます。

上のファイルを見てもらえればわかりますが、この方法を試しても駄目でした。
例の線は消えてはいるようですが、それとはまた別のものが表示されるようになってしまいました。
原因はよくわかりません。

自分は解決しませんでしたが、これで解決する場合もあるかもしれません。

2 件のコメント:

  1. はじめまして。
    同じくShaderで出てくる黒い線で悩んでおります。
    「per_tri」も試しましたが、駄目でした。

    解決したら教えてください。

    返信削除
  2. > 匿名 さん

    はじめまして。
    解決した、とは言えませんが、黒い線を消す方法はありました。
    http://aaharu.blogspot.com/2009/11/away3daway3dshaderas30.html
    Papervision3Dを使っていないので根本的な解決にはなっていません。

    返信削除