Announcement

Collapse
No announcement yet.

半透明描画とDOF(被写界深度)を両立させる方法について(2014 Advent Calender)

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

    半透明描画とDOF(被写界深度)を両立させる方法について(2014 Advent Calender)

    Click image for larger version

Name:	20141221112156.jpg
Views:	1
Size:	171.6 KB
ID:	1142194
    半透明とDOF(被写界深度)は両立できないか?(上図はダメな例)
    以前色々試した事があったのでAdvent Calenderとしてまとめてみました。
    被写界深度半透明物体共生戦略手法零式(Type-0)


    MaterialのDepthOfFieldFunctionを使うか、LOD Particleを使うかの二通りについて検証しましたが、工数の問題から実用的じゃないと考えています。
    何か良い案をお持ちの方、もしくはアイディアがある方はぜひぜひご教授お願い致します。

    #2
    Twitterで@Nao_u_さんから意見を頂いたので掲載しておきます。(本人承諾済み)
    https://twitter.com/Nao_u_/status/547169808584695808

    そのまま引用させて頂きます。
     ミップマップや別テクスチャにぼかした絵を入れて制御するのが、システムに組み込んでしまえば手間も少なくメモリとフェッチ負荷だけで済むので一番実用的かも。まだ全エフェクトを被写界深度対応するのはテクスチャ容量的にきついかもだけど、カメラ前を舞う光の粒や雨だけでもやっておくと違いそう 
    確かに!LODの切り替えなんで、パカパカしてしまう問題もありますが、システムに組み込む上ではシンプルで良さそうです。LOD切り替えは、DOFの距離変動との連携を自動でやる方法がわからず僕は断念してしまいましたが、DOFとLODが連携できれば、様々な手法に応用できそうで可能性が広がりそうです。

    Nao_u_さん、ありがとうございました!

    Comment


      #3
      Separate TranslucencyがOn/Offの物体について

      アドバイスを頂いたのでこちらに追記します。

      separate translucencyの厄介な問題にONとOFFのものがシーン上で重なるとONのものが手前に描画されるというのがあります。OFFの半透明を描き込んでからONを描き込むので当然の結果ではあるのですが‥なので、セパレートONとOFFの半透明が同一シーンに混在すると見た目が破綻する可能性があります
      しかし川とかガラスのオブジェクトのようなものが背景に設置されているとONとOFFを混在せざるを得ません。。。

      どういうことかというと。。。
      ↓緑も赤もSeparate TranslucencyがOn。正しい挙動
      Click image for larger version

Name:	test.jpg
Views:	1
Size:	136.3 KB
ID:	1064549

      ↓緑のSeparate TranslucencyをOff。赤が前にくる。
      Click image for larger version

Name:	test2.jpg
Views:	1
Size:	121.0 KB
ID:	1064550

      SeparateTranslucencyがOnで描画されたバッファを後に合成するので、前後関係が狂ってしまいます。
      Click image for larger version

Name:	aaa.jpg
Views:	1
Size:	113.4 KB
ID:	1064552


      DoFをかけたいオブジェクトはOffにして。。。かけたくないのはOnにして。。。と設定すると前後関係の破綻が起きてしまう。
      ので、、On/Offの物体を同時に使う場合は、使用できるかを検討することが必要と思われます。
      Last edited by sumio-katakura; 12-26-2014, 12:27 AM.

      Comment


        #4
        この件について何人かの開発者と議論してみたことがありますが、大体意見が近いです。

        方策1:
         ゲーム中に被写界深度はほんの少し適用して、半透明マテリアルは基本的にseparate=OFFで統一(被写界深度の影響を受ける)。
         一瞬出るエフェクトが変なボケ方をするのは妥協する形です。

        方策2:
         ゲーム中に被写界深度は全く適用せず、半透明マテリアルは基本的にseparate=OFFまたはONで統一。
         最も安全策ですが、画作り面で物足りなさが出るのは妥協する形です。


        どちらにしてもカットシーンではある程度コントロールが効くので強く適用するのはアリという意見が一致していました。
        separateONとOFFの混在、またカメラからの距離でテクスチャをボカすなどフェイクを織り交ぜてコントロールする感じでしょうか。

        フリーカメラになるゲーム中でseparateを混在する形にする場合は、かなり注意深く設定する必要がありそうです。
        カメラが回りこまない壁際や地面に配置した半透明オブジェクトだけはseparate=onにするとか。

        他の方のご意見も聞きたいです。
        Last edited by t.j berri; 03-06-2015, 07:18 AM.

        Comment


          #5
          ライフルのスコープを覗いた時、敵の気配に集中する時など特定のシチュエーションで被写界深度を強めるゲームが多い印象がありますが、ff15の体験版プレイ動画でもカバーアクション時などに被写界深度が強まっていて、能動的に派手なエフェクトを炊くようなアクションを起こせないタイミングなのでうまくやっているなあと思ったりします。

          Comment


            #6
            Originally posted by t.j berri View Post
            ライフルのスコープを覗いた時、敵の気配に集中する時など特定のシチュエーションで被写界深度を強めるゲームが多い印象がありますが、ff15の体験版プレイ動画でもカバーアクション時などに被写界深度が強まっていて、能動的に派手なエフェクトを炊くようなアクションを起こせないタイミングなのでうまくやっているなあと思ったりします。
            ユーザインプットを制限できて、カットシーンのような機能を持たせられる場所で、効果的に効かせるということですかね。

            難しいのは、そのために半透明マテリアルをどのように設定しておくのが良いかというところでしょうか。
            特別なシチュエーションの際にマテリアを切り替えるのは運営面でも実装面でもコストがありそうです。

            SeparateTranslucencyを絶対にOffにするという運用ならば問題なさそうですね。

            Comment

            Working...
            X