Apple Engine

Apple, iPhone, iOS, その周辺のことについて

iOS で SceneKit を試す(Swift 3) その41 - Scene Editor カメラの Depth of Field(被写界深度)

カメラとなる SCNCamara で被写界深度のシミュレーションを行う。

実際のカメラと同様に距離でオブジェクトにピントを合わせて、 他がボケるさせる効果の設定を行う。

ちなみに、今回紹介するすべてのプロパティが macOS, tvOS, watchOS でも廃止予定で、
iOS 11 など最新の OS からはカメラのシミュレーションに近い、焦点距離 (focusDistance) と F値 (fStop) で行う。

 

Scene Editor の パラメーター

f:id:x67x6fx74x6f:20170726180008p:plain

 

Blur Radius

ピントがあっていないもの(被写界深度の外のもの)に対してボケ具合の最大値を設定する。
0 以上にしないと被写界深度のシミュレーションが行われない。

デフォルト値は 0.0。

 

Distance

ピントを合わせたいものまでの距離。焦点距離。

デフォルト値は 10.0

 

Aperture

レンズの口径を表す。

値を大きくすると焦点距離から鮮明に映る範囲が狭くなりボケる割合が大きくなり、
値を小さくすると全体がシャープになっていく。

デフォルト値は 0.125。

 

Size

オブジェクトが鮮明に表示される距離の範囲の大きさ。

デフォルト値は 0.0。

 

サンプル

以下の値に設定し、手前、2番目、3番目にピントを合わせたもの。

プロパティ
Blur Radius 6
Aperture 0.125
Size 1

 

Distance: 1.2

f:id:x67x6fx74x6f:20170726180123p:plain

 

Distance: 3

f:id:x67x6fx74x6f:20170726180141p:plain

 

Distance: 6

f:id:x67x6fx74x6f:20170726180159p:plain

 

コード

let camera = SCNCamera()

camera.focalBlurRadius = 0.0
camera.focalDistance = 10.0
camera.aperture = 0.125
camera.focalSize = 0.0

 

今回はここまで。