Apple Engine

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

SceneKit の検索結果:

iOS で SceneKit を試す(Swift 3) その58 - 3D のオブジェクトファイルを Scene File (scn) に変換する。

…Open As で SceneKit Document に変更。 上部 メニューバーの Editor > Convert to SceneKit scene file format (.scn) を押す。 すると、以下のアラートが出る。 ボタン名 機能 Duplicate 現在のファイルを残し、scn に変換したファイルを作成する Cancel 何もせずアラートを閉じる Convert scn に変換したファイルをつくり、元のファイルを消す 元ファイルを残す場合、Duplic…

iOS で SceneKit を試す(Swift 3) その57 - SceneKit で使用できるオブジェクトファイル

SceneKit でのリソースの操作やオブジェクトファイルの読み込みは Model I/O のフレームワークを使用しており、 ファイルの読み込みは Model I/O に依存している。 オブジェクトファイルをプロジェクトで使用する場合、Project Navigator (Command + 1) にドラック&ドロップして、 コードからファイルを読み込むか、scn に変換して使用する。 ファイルによってはドラック&ドロップの際、ターゲットのチェックボックスが外れている可能性が…

iOS で SceneKit を試す(Swift 3) その56 - SceneKit プロジェクトファイルの .scnassets フォルダとは?

…nassets は SceneKit のファイルの管理をするフォルダ。 .scnassets にファイルを配置するとビルド時に内容を最適化してくれる。 主な最適化は2つ。 scnassets フォルダを選択する以下の項目が出る。 オブジェクトファイルの座標を Y 軸を上方向に変換する 画像ファイルを各デバイスの GPU に最適化されたものに変換する New File (Command + N) から作成できないため、Project Navigator (Command + 1…

iOS で SceneKit を試す(Swift 3) その55 - SCNNode の Pivot(原点)を変更する

SCNNode の説明で書き忘れていた Pivot について。 SCNNode には Pivot と呼ばれる原点がある。 例えば球のジオメトリである SCNSphere は Pivot が中心にあり、 移動、回転、拡大縮小を行なった場合、中心から動作が行われる。 Pivot を変更することのメリット 以前、LookAt コンストレイントを使用する際、新しいノードを作成し子のノードに X 軸方向に移動させたジオメトリ設定し、 ノードを回転させることで、X 軸方向移動分を半径とし…

iOS で SceneKit を試す(Swift 3) その54 - Scene Editor の Geometory / Material の Unshare ボタンとは?

Scene Editor でコピーされたノードは負荷低減のため、 基本的には使い回しできるようになっている。 Geometory の Unshare ボタン そのため、Text(SCNText)で文字を書き、そのノードを Command + C, V などで コピー&ペーストし、 コピーした Text の文字を変えるとコピー元も変更されてしまう。 その際、Attributes Inspector (Command + Option + 4) の下の方にある「Unshare」ボ…

iOS で SceneKit を試す(Swift 3) その53 - SceneKit の Point Of View

これまで紹介した SceneKit のカメラは、コードで設定するか、scn ファイル内のカメラで設定していた。 SceneKit の SCNView(SCNSceneRenderer)には pointOfView というプロパティがあり、 これに SCNCamera を設定しているノードを設定するとカメラに設定することができる。 わかりやすい例だと、SCNView で allowsCameraControl を true に設定した時。 画面の操作が行われると pointOf…

iOS で SceneKit を試す(Swift 3) その53 - SCNLight の Gobo と Category BitMask

…re import SceneKit class GameViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() // create a new scene let scene = SCNScene(named: "art.scnassets/ship.scn")! // create and add a camera to the scene let camer…

iOS で SceneKit を試す(Swift 3) その52 - Scene Editor の Light Probe

…ン設定 Game (SceneKit) のテンプレートでプロジェクトを作成するか既存のファイルから ship.scn ファイルを選択。 中身はいらないので Scene Graph View か、Scene Editor 上にあるものを全て削除。 Object Library (Command + Control + Option + 3) から Plane と、Sphere、Light Probe を以下のように設定する。 Plane Node Inspector (Comm…

iOS で SceneKit を試す(Swift 3) その51 - Scene Editor の IES Light

…ン設定 Game (SceneKit) のテンプレートでプロジェクトを作成するか既存のファイルから ship.scn ファイルを選択。 (設定が面倒である場合は、下にサンプルファイルをダウンロード) 中身はいらないので Scene Graph View か、Scene Editor 上にあるものを全て削除。 Object Library (Command + Control + Option + 3) から Plane を2つ、Sphere、IES Light を以下のように…

iOS で SceneKit を試す(Swift 3) その50 - Scene Editor の Directional Light

太陽光のように一定の方向に光を放つ Directional Light のご紹介。 設置位置に関わらず一定で光の影響を与える。 遮るジオメトリがあった場合に影を与えるキャストシャドウを設定することができる。 以下の画像は、ライトの位置を変更しても、光沢と影が変わらない例。 ハンドラの薄い赤の矢印がライトの光の方向を表している。 シーン設定 Omni Light で作成したシーンをそのまま使用する。 適当なシーンに Object Library から Directional L…

iOS で SceneKit を試す(Swift 3) その49 - Scene Editor の Spot Light と Cast Shadow (Shadow Mapping)

舞台照明で使用されているスポットライトを模した Spot Light のご紹介。 設置位置から円錐状に光の影響を与え、任意で遮るジオメトリがあった場合に影を与えるキャストシャドウが使用できる。 その前にキャストシャドウとは? シャドウマップというライトから影の情報を持ったテクスチャを作成し、 シーンにあるジオメトリにそれ適応させることで、物体に影が落ちている表現する。 さっくり説明すると、 ライトをカメラにしてジオメトリを映しベタ塗をする。 (下の画像では、ライトはジオメトリ…

iOS で SceneKit を試す(Swift 3) その48 - Scene Editor の Ambient Light

…シーン設定 iOS SceneKit のテンプレートでプロジェクト作成。 今回は床が必要ないので、ship.scn を表示するだけ。 Scene Graph View から shipMesh を選択し、マテリアルを Physically Based に変更。 一応、わかりやすくする為、 宇宙船のマテリアルの Lighting Type を Physically Based に変更しておくが今回の場合は必要はない。 光の影響を受けないためジオメトリが黒くなる。 一旦、Omni …

iOS で SceneKit を試す(Swift 3) その47 - Scene Editor の Omni Light と Attenuation

… ひとまず、iOS SceneKit のテンプレートでプロジェクト作成。 ship.scn を開き Object Library (Command + Option + Control + 3) から Floor をシーンにドラッグ。 Node Inspector (Command + Option + 3) を開いて y を -2 に設定。 Scene Graph View から shipMesh を選択し、マテリアルを Physically Based に変更。 光の影響…

iOS で SceneKit を試す(Swift 3) その46 - SCNLight の共通設定

…40000 iOS SceneKit のテンプレートに SCNFloor を追加して、オムニライトに temperature を設定したもの。 // create and add a light to the scene let lightNode = SCNNode() lightNode.light = SCNLight() lightNode.light!.type = .omni // 追加箇所 lightNode.light!.temperature = 3000 …

iOS で SceneKit を試す(Swift 3) その45 - Scene Editor の Light について

…マンスが変化する。 SceneKit で効率的なレンダリングを行う場合、シーン内のライティング設定を見直す必要がある。 以下、調整例 光の当たり方が固定の場合は、あらかじめ 3DCG のオーサリングツールでライトをライトマップテクスチャにベイクし、SCNMaterial にそのテクスチャ適応して multiply で色等を調整する 必要のないライトやジオメトリで影の描画を行わない ゲームキャラクタなど正確な影の形が必要ない場合、影を輪郭がぼやけた丸などの画像にしてしまう スポ…

iOS で SceneKit を試す(Swift 3) その44 - Scene Editor モーションブラー

…合があり、 それを SceneKit のカメラである SCNCamera でシミュレーション行う。 Scene Editor の パラメーター プロパティは一つのみ。 Motion Blur - Intensity 最大値を 大きくした場合、効果は顕著になる。 デフォルト値は 0.0 で効果は出ない。 また、ドキュメントでは Wide-Gamut Color (Display P3) では使用できず、 Info.plist で SCNDisableWideGamut のキーを…

iOS で SceneKit を試す(Swift 3) その42 - Scene Editor カメラのポストプロセス

カメラとなる SCNCamara では画面描画後に簡易的な画像処理を行うことができる。 使用できる処理は以下のもの。 画面の周りを暗くするケラレ処理 ブラウン管のような色のにじみを出すカラーフリンジ 簡易的な色の調整を行うカラーグレーディング さらに複雑な処理をしたい場合は SCNTechnique を使用し、自前でシェーダーを書いて合成する。 Scene Editor の パラメーター 元画像 Vignetting ケラレ処理を行う。 Power が適応範囲で、Intens…

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

カメラとなる SCNCamara で被写界深度のシミュレーションを行う。 実際のカメラと同様に距離でオブジェクトにピントを合わせて、 他がボケるさせる効果の設定を行う。 ちなみに、今回紹介するすべてのプロパティが macOS, tvOS, watchOS でも廃止予定で、 iOS 11 など最新の OS からはカメラのシミュレーションに近い、焦点距離 (focusDistance) と F値 (fStop) で行う。 Scene Editor の パラメーター Blur Ra…

iOS で SceneKit を試す(Swift 3) その40 - Scene Editor カメラの HDR 設定 Part2

引き続き HDR の説明。 カメラとなる SCNCamara の HDR とは、 トーンマッピング処理を行い、シーン全体の輝度値を、ディスプレイに表示できる狭い範囲の輝度値に変換するすること。 具体的には露出調整、Bloom 効果を表現する。 また、HDR は Scene Editor のカメラのプロパティにある HDR のチェックをオンにするか、 コードで SCNCamara の wantsHDR を true にしないと、どの機能プロパティを設定しても動作しない。 Sce…

iOS で SceneKit を試す(Swift 3) その39 - Scene Editor カメラの HDR 設定 Part1

…HDR の使用方法 SceneKit のカメラの Attributes Inspector の HDR にチェックを入れるか、コードで SCNCamera のプロパティ wantsHDR を true にする。 HDR の表示を簡単に確認する ちょっとずつ数値を変更しつつビルドするのが面倒なので、 Mac アプリで試してみる。 Mac のアプリの場合、デバッグの showsStatistics の歯車アイコンからたどってを変更できるため。 プロジェクトの準備 まず、Xcode…

iOS で SceneKit を試す(Swift 3) その38 - Scene Editor カメラの基本設定

…NCamera - SceneKit | Apple Developer Documentation より 画面を表示する視体積の角度。 上の画像を参照。 デフォルト値は互いに 0。 片方が 0 以外の場合はもう片方を自動的に調整され、 両方設定した場合はアスペクト比に最も適した値を使用し視野を自動的に調整される。 このプロパティは廃止予定で iOS 11 では Feild Of View と X fov、Y fov が1つになり、Focal Length (焦点距離)を設定…

iOS で SceneKit を試す(Swift 3) その37 - Scene Editor の Material、Shininess と Fresnel

Blinn と Phong のライティングモデルでは Shininess と Fresnel を設定することができる。 Shininess 光沢の度合い。値を大きくすると光沢が小さくなる。 Shininess のデフォルト値 1 Shininess の値 4 Fresnel シャボン玉のように輪郭部分だけ光の反射が異なる表現。 Fresnel のデフォルト値 1 Fresnel の値 1 今回はここまで。

iOS で SceneKit を試す(Swift 3) その36 - Scene Editor の Material のテクスチャ設定

Scene Editor の Material は SCNMaterial となっており、 diffuse、specular などの各ビジュアルプロパティに設定するためのコンテナ SCNMaterialProperty が用意されている。 SCNMaterialProperty 自体が持つプロパティは 度々コードの方で使用している Any 型の contents と CGFloat の intensity のみ。 contents は UIColor、テクスチャ画像と Spr…

iOS で SceneKit を試す(Swift 3) その35 - Scene Editor の Material, Physically Based プロパティ

今回は Physically Based プロパティのご紹介。 Physically Based とは? 現実世界のライトの光などを近似させた物理ベースのシェーダーで 2010 年ぐらいから PC ゲームなどで使われ始め、モバイル GPU の進化によりスマートフォンのゲームでも使用される。 プロパティ Blinn や Phong のライティングモデルのシェーダーとはプロパティが異なる。 Specular、Reflective、Transparent、Ambient のプロパテ…

iOS で SceneKit を試す(Swift 3) その34 - Scene Editor の Material プロパティ

前回紹介を省略したマテリアルのプロバティについてご紹介。 Physically Based の Metalness、Roughness やテクスチャマッピングに関しては他の記事で紹介する。 以下の説明では Physically Based 以外のものを列挙しているが、 ライティングモデルの Constant は Specular と Normal、Lambert では Specular の設定が存在しない。 Normal と Emission 以外の効果のかかり具合である i…

iOS で SceneKit を試す(Swift 3) その34 - Scene Editor の Material Inspector

…ements to SceneKit - WWDC 2015 - Videos - Apple Developer Double sided ジオメトリの表面を裏表描画するかのチェックボックス。 デフォルトでは false だが、一部のビルトインジオメトリでは true になっている。 Options 現行のデフォルトでは全てチェックされている。 (OS X v10.9 以前のものは Lock ambient with diffuse のチェックせれていない) また、ノードや…

iOS で SceneKit を試す(Swift 3) その33 - ジオメトリの質感を決めるマテリアルについて

SceneKit で言うマテリアルとはジオメトリの質感を決めるための設定だと考えてもらえば良いかと。 これまででも、firstMaterial などで設定していたがもう少し詳しくを紹介していく。 以前に、3DCG にはカメラ、ジオメトリ、ライトが必要だと書いたが、もう一つ重要なのがジオメトリの質感である。 大体の 3DCG の制作ツールなどでは最初に設定されているため、マテリアル設定がないということはないが、マテリアルが存在しないとジオメトリが描画されない。 マテリアルは何を…

iOS で SceneKit を試す(Swift 3) その33 - Scene Editor のジオメトリの Attribute Inspector

ビルトインジオメトリの設定値以外で、他の項目に触れていないため、もう少し見てみる。 概要 設定されているもの ジオメトリの情報 モーフアニメーション用の設定 サブディビジョンサーフェイスの設定 ジオメトリのシェアリングの解除 ライト情報のベイク 以下、各項目の説明 Geometry Name はコードでこのジオメトリを使用する際、調べるためのもので、 Identifier は基本設定ができない。 Vertices はジオメトリの頂点数、 Polygons はポリゴン数でジオメ…

iOS で SceneKit を試す(Swift 3) その32 - コードからカスタムジオメトリをつくってみる

コードからジオメトリをつくろうと思う。 ほぼ、自前でジオメトリを描画することはないと思われるので今回はさわりだけ。 テンプレートにあった宇宙船やビルトインのジオメトリ。 これらはオブジェクトファイルの読み込み、Scene Editor からのドラッグ&ドロップ、コードからクラスを呼び出しなどで手軽に行なっているが、 内部的には今回のような設定を元に描画されている。 概要 ジオメトリは外観を設定している情報があり、 その情報から SCNMaterial が光の情報やテクスチャと…

iOS で SceneKit を試す(Swift 3) その31 - ビルトインジオメトリ SCNShape(パスからの図形)

SCNText はフォントからジオメトリを作成するが、こちらは UIBezierPath で作成するジオメトリ。 設定値は SCNText 同様にイニシャライズや個別でパスと押出し設定を行う。 面取り(chamfer) も SCNText と同様の設定を行うことができる。 Scene Editor で UIBezierPath をつくることができないため、 SCNShape はコードでしか作成することができない。 設定値 プロパティ名 機能 path UIBezierPath…