iOS で SceneKit を試す(Swift 3) その42 - Scene Editor カメラのポストプロセス
カメラとなる SCNCamara では画面描画後に簡易的な画像処理を行うことができる。
使用できる処理は以下のもの。
- 画面の周りを暗くするケラレ処理
- ブラウン管のような色のにじみを出すカラーフリンジ
- 簡易的な色の調整を行うカラーグレーディング
さらに複雑な処理をしたい場合は SCNTechnique を使用し、自前でシェーダーを書いて合成する。
Scene Editor の パラメーター
元画像
Vignetting
ケラレ処理を行う。
Power が適応範囲で、Intensity が適応度合い。
デフォルト値は Power が 0 で、Intensity が 1。
Power が 0 の場合は処理が行われない。
Power: 1 / Intensity: 1
Color Fringe
フリンジの処理を行う
Strength の値を大きくするほどフリンジの色のシフトと広がりが顕著になり、Intensity が適応度合い。
デフォルト値は Strength が 0 で、Intensity が 1。
Strength が 0 の場合は処理が行われない。
Strength: 4 / Intensity: 1
Color Grading
Saturation
画面の彩度を設定する。 デフォルト値は 1.0 で 0 にするとグレイスケールになる。
Saturation: 0
Contrast
画面のコントラスト変更する。
デフォルト値は 0.0。
Contrast: 4
コード
let camera = SCNCamera() // Vignetting camera.vignettingPower = 0.0 camera.vignettingIntensity = 1.0 // Color Fringe camera.colorFringeStrength = 0.0 camera.colorFringeIntensity = 1.0 // Saturation camera.saturation = 1.0 camera.contrast = 0.0
また、コードのみだがカラーグレーディング用のテクスチャを作成し、適応させると細かな色の調整ができる模様。
Color Grading のドキュメント
colorGrading - SCNCamera | Apple Developer Documentation
上記の設定でテクスチャ画像を作成し、
レンダリング画像に対して 80% の適応度合いで試したもの。
let camera = SCNCamera() camera.colorGrading.contents = NSImage(named:"colorgrading.png") camera.colorGrading.intensity = 0.8
カラーグレーディングの画像についてはまたいつか説明しようと思う。
今回はここまで。