この短い動画では、Unityでダイナミックなデフォーカス効果を作成する方法をお見せします。カメラの視野の中心にあるオブジェクトにのみフォーカスし、それ以外をぼかす効果です。



動画の書き起こし

こんにちは、みなさん!この短い動画では、Unityでダイナミックなデフォーカス効果を作成する方法をお見せします。カメラの視野の中心にあるオブジェクトにのみフォーカスし、それ以外をぼかす効果です。

今、ぼかしを誇張して最終的な効果を表示していますが、この効果はカスタマイズ可能で、すぐにそのやり方を説明します。

この動画とスクリプトは、Unity 2022 と Universal Rendering Pipeline を使用して作成しました。

スクリプトを正しく使用するには、Main Camera に Volume コンポーネントを追加する必要があります。これにより、Depth of Field サブコンポーネントにアクセスできます。

Defocus コンポーネントのモードを Bokeh に変更する必要があります。このモードでは、フォーカスポイントの距離や他の効果を指定でき、最終的な効果がよりリアルになります。

次に、Focus Distance と Aperture のパラメータを有効にしましょう。

Focus Distance に関しては、ゲームプレイ中に C# スクリプトでこの値を変更するため、デフォルトの値を使用します。

Aperture パラメータについては、値が低いほど選択的フォーカス効果が強くなり、被写界深度が浅くなる点に注意してください。

最初にお見せした例では、効果を意図的に誇張するために値を 2.4 に設定しましたが、もちろんプロジェクトに適した値は、いくつかテストを行った後に設定する必要があります。

スクリプトの実装コードをお見せする前に、その動作について簡単に説明します。

スクリプトは、カメラから仮想シーン内のフレームの中心に向かって Raycast と呼ばれる見えない光線を投射します。

その光線が Collider コンポーネントを持つオブジェクトに当たると、そのオブジェクトがカメラからどれだけの距離にあるかを計算し、その値を Depth of Field サブコンポーネントの Focus Distance フィールドに書き込みます。

操作自体は非常にシンプルですが、オブジェクトを検出するためには Collider コンポーネントが必要であることを覚えておいてください。キャラクターの動きを妨げたくない場合は、これらのオブジェクトを Trigger モードに設定することも可能です。

では、Dynamic Defocus と名付けた非常に簡単な C# スクリプトを見てみましょう。

スクリプトを正しく実行するためには、Rendering モジュールと Rendering Universal モジュールをインポートする必要があります。

定義したプライベート変数は、Volume コンポーネントとその Depth of Field サブコンポーネントにアクセスして、パラメータを変更するためだけに使用します。

具体的には、Volume と Depth of Field の変数はスクリプトの Start 関数内で初期化されます。

Update 関数の中では、実行の各フレームごとに Raycast 光線が投射されます。

衝突したオブジェクトは hit 変数に書き込まれますが、ユーザーが背景や Collider コンポーネントを持たないシーンの一部にフォーカスしている場合など、オブジェクトが存在しないこともあります。

このため、hit 変数の Distance 値を Depth of Field コンポーネントの Focus Distance パラメータに割り当てる前に、hit の Collider が null でないことを確認する必要があります。

光線が当たったオブジェクトの名前は、hit 変数の Collider コンポーネントにアクセスし、次にそのコンポーネントから Game Object、そして最終的に名前にアクセスすることで取得できます。

スクリプトを保存した後、プロジェクトでいくつかテストを行い、Aperture パラメータの値を調整して、希望する結果が得られるようにしてください。

この短い動画がお役に立てたら嬉しいです!またお会いしましょう!

チュートリアルを検索

フレーズ、または複数のキーワードをカンマで区切って入力してください。

このウェブサイトは個人サイトであり、販売チャネルではありません。3Dモデルに関するページは、私の作品の一部を記録するためのものであり、販売案内、価格、購入方法、商用リンクは掲載していません。現在、カスタム制作、コンサルティング、その他の業務上の協力依頼は受け付けていません。


プライバシー及びクッキーの使用に関する拡張情報の通知