Swift3
SceneKit では SCNNode に SCNMorpher が紐づけられており、1つまたは複数のジオメトリを配列として渡すと、各ジオメトリへ変形させることができるモーフィングというものが使える。 (3DCG のオーサリングツールでは Blend Shape と呼ばれているものある) …
とりあえず、手軽に試すため Blender でオブジェクトを DAE でエクスポートして、Scene Editor で読み込んでみる。 Apple 自体、Maya からエクスポートしている感じがしているので、Blender でエクスポートしたものが必ず上手く使えるわけではないので注意。…
今まではテンプレートの ship.scn を使用したり新規で作成していたが、プロジェクトに読み込んだオブジェクトファイルを scn に変換することができる。 scn に変換する方法 変換方法は以下の3つ Xcode のメニューバーの機能から変換する オブジェクトファイ…
SceneKit でのリソースの操作やオブジェクトファイルの読み込みは Model I/O のフレームワークを使用しており、 ファイルの読み込みは Model I/O に依存している。 オブジェクトファイルをプロジェクトで使用する場合、Project Navigator (Command + 1) にド…
xcassets はプロジェクトの画像などのアセットを管理し最適化を行なっているが、 scnassets は SceneKit のファイルの管理をするフォルダ。 .scnassets にファイルを配置するとビルド時に内容を最適化してくれる。 主な最適化は2つ。 scnassets フォルダを選…
SCNNode の説明で書き忘れていた Pivot について。 SCNNode には Pivot と呼ばれる原点がある。 例えば球のジオメトリである SCNSphere は Pivot が中心にあり、 移動、回転、拡大縮小を行なった場合、中心から動作が行われる。 Pivot を変更することのメリ…
Scene Editor でコピーされたノードは負荷低減のため、 基本的には使い回しできるようになっている。 Geometory の Unshare ボタン そのため、Text(SCNText)で文字を書き、そのノードを Command + C, V などで コピー&ペーストし、 コピーした Text の文字…
これまで紹介した SceneKit のカメラは、コードで設定するか、scn ファイル内のカメラで設定していた。 SceneKit の SCNView(SCNSceneRenderer)には pointOfView というプロパティがあり、 これに SCNCamera を設定しているノードを設定するとカメラに設定…
シーン上でキャストシャドウを行うと基本的にはシャドウマップが作成される。 もし、ジオメトリの影を落とす際、細かなフォルムが必要なければ 事前にテクスチャ画像を作成したものを使用し、シャドウマップを生成させないことでライド使用時の負荷を減らす…
シーンで動かない物体にはライトマップでテクスチャに焼き付けると綺麗な見た目となるが、 キャラクターなど動くもがあった場合、光は反映されない。 Light Probe はシーンの色の変化とすべての方向から受け取る照明の強度を球体で設定し、 有効範囲にある P…
IES Light はテキストデータのファイルを使用し照明のシミュレーションを行い陰や光を与える。 Directional Light とほぼ同じで、Scale のパラメーターがなく、IES ファイルの選択がある。 基本的にはライトからのシャドウマップで表現しているため、アーテ…
太陽光のように一定の方向に光を放つ Directional Light のご紹介。 設置位置に関わらず一定で光の影響を与える。 遮るジオメトリがあった場合に影を与えるキャストシャドウを設定することができる。 以下の画像は、ライトの位置を変更しても、光沢と影が変…
舞台照明で使用されているスポットライトを模した Spot Light のご紹介。 設置位置から円錐状に光の影響を与え、任意で遮るジオメトリがあった場合に影を与えるキャストシャドウが使用できる。 その前にキャストシャドウとは? シャドウマップというライトか…
シーン全体に光を与える Ambient Light のご紹介。 設置位置に関係なく光の影響を与え、ジオメトリの暗部である陰の色を薄めたりできる。 シーン設定 iOS SceneKit のテンプレートでプロジェクト作成。 今回は床が必要ないので、ship.scn を表示するだけ。 S…
豆電球のような Omni Light の設定を見ていく。 Omni Light は設置位置によって光の影響を変化させるが、ジオメトリの影を落とすことはできない。 影は必要ないが光の影響を与えたい場合などで使用するのが良いかと思われる。 シーン設定 ひとまず、iOS Scen…
前回の書き忘れがあったのでライトの種類の前にこちらの紹介。 ライトには種類があったが、Light Probe 以外でいくつかの共通設定があるので、まずはこちらから。 Name コードで使用するための識別用の名前。 Light Probe でも使用可能。 Type ライトの種類…
今回はシーンのライトについて軽くご紹介。 シーン上には必ずライトとなるものが1つ必要となり、 SCNNode で light プロパティに SCNLight を設定するか、 以前、紹介したシーン設定の Light Environment (Image Based Lighting) を設定することで、 ジオメ…
実際のカメラでは速い動きを物体を撮る際、カメラ性能にもよりますが残像が出る場合があり、 それを SceneKit のカメラである SCNCamera でシミュレーション行う。 Scene Editor の パラメーター プロパティは一つのみ。 Motion Blur - Intensity 最大値を …
カメラとなる SCNCamara では画面描画後に簡易的な画像処理を行うことができる。 使用できる処理は以下のもの。 画面の周りを暗くするケラレ処理 ブラウン管のような色のにじみを出すカラーフリンジ 簡易的な色の調整を行うカラーグレーディング さらに複雑…
カメラとなる SCNCamara で被写界深度のシミュレーションを行う。 実際のカメラと同様に距離でオブジェクトにピントを合わせて、 他がボケるさせる効果の設定を行う。 ちなみに、今回紹介するすべてのプロパティが macOS, tvOS, watchOS でも廃止予定で、 iO…
引き続き HDR の説明。 カメラとなる SCNCamara の HDR とは、 トーンマッピング処理を行い、シーン全体の輝度値を、ディスプレイに表示できる狭い範囲の輝度値に変換するすること。 具体的には露出調整、Bloom 効果を表現する。 また、HDR は Scene Editor …
今回は HDR の説明と設定の準備。 HDR (High Dynamic Range) とは ざっくり説明すると、表示される画面は色の情報しか持たないが、 ピクセルごとに色とは別に光の情報を持つもの。 現実の色のより広いレンジを持ち、画像処理の際に多彩な表現を行うことがで…
今回はカメラの基本設定のプロパティについてのご紹介。 カメラを選択して Attributes Inspector(Command + Option + 4)を選択。 パラメーターは以下のもの。 ちなみに、iOS 11 では、Projection のパラメーターが変更されたり、 Unity でなどである機能の…
Blinn と Phong のライティングモデルでは Shininess と Fresnel を設定することができる。 Shininess 光沢の度合い。値を大きくすると光沢が小さくなる。 Shininess のデフォルト値 1 Shininess の値 4 Fresnel シャボン玉のように輪郭部分だけ光の反射が異…
Scene Editor の Material は SCNMaterial となっており、 diffuse、specular などの各ビジュアルプロパティに設定するためのコンテナ SCNMaterialProperty が用意されている。 SCNMaterialProperty 自体が持つプロパティは 度々コードの方で使用している An…
今回は Physically Based プロパティのご紹介。 Physically Based とは? 現実世界のライトの光などを近似させた物理ベースのシェーダーで 2010 年ぐらいから PC ゲームなどで使われ始め、モバイル GPU の進化によりスマートフォンのゲームでも使用される。 …
前回紹介を省略したマテリアルのプロバティについてご紹介。 Physically Based の Metalness、Roughness やテクスチャマッピングに関しては他の記事で紹介する。 以下の説明では Physically Based 以外のものを列挙しているが、 ライティングモデルの Consta…
ジオメトリ選択後に Material Inspector を選択すると(Command + Option + 5)、以下のような表示になる。 長くなるので Lighting Model に影響のある設定(上の画像でいうPropaerties)に関しては別の記事で紹介する。 Materials 現在使用しているマテリア…
SceneKit で言うマテリアルとはジオメトリの質感を決めるための設定だと考えてもらえば良いかと。 これまででも、firstMaterial などで設定していたがもう少し詳しくを紹介していく。 以前に、3DCG にはカメラ、ジオメトリ、ライトが必要だと書いたが、もう…
ビルトインジオメトリの設定値以外で、他の項目に触れていないため、もう少し見てみる。 概要 設定されているもの ジオメトリの情報 モーフアニメーション用の設定 サブディビジョンサーフェイスの設定 ジオメトリのシェアリングの解除 ライト情報のベイク …