Apple Engine

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

2017-08-01から1ヶ月間の記事一覧

iOS で SceneKit を試す(Swift 3) その83 - 画面全体の色調整(カラーグレーディング)を行う LUT 画像ファイルの作成、編集を試す

以前、Scene Editor でのカメラのポストプロセス処理を行う際に、 色調整を行うカラーグレーディングで専用画像を使用した。 今回はその使い方とつくりかたについて説明していこうと思う。 編集に関しては Photoshop など、何らかの画像編集が必要になる。 …

iOS で SceneKit を試す(Swift 3) その82 - キューブマップを設定する

立方体6面の内側に指定された画像を内側に貼り付ける360度の背景画像をキューブマップと呼び、 SCNMaterial の親玉である SCNMaterialProperty から使用する。 (内部的には Model I/O の機能だったはず) SceneKit ではシーンの background や lightingEnvi…

iOS で SceneKit を試す(Swift 3) その81 - シーンに音楽や効果音をつける。

正直なところ、Core Audio など iOS 標準機能が使用できるので、 SceneKit のオーディオ再生機能を使用する必要はないけどご紹介。 SceneKit でのオーディオ再生の特徴としては、VR や HoloLens と同様に 3D 空間の位置に対して音源を再生(ミキシング)させ…

iOS で SceneKit を試す(Swift 3) その80 - ジオメトリにフィルター効果(Core Image Filter)をつける

SceneKit ではジオメトリなどノードに Core Image Filter を使用してエフェクトをつけることができ、Metal Shader で行うより簡単にできる。 多分、他のゲームエンジンではこれほど簡単にエフェクトをかけるのは難しいと思われる。 とりあえず、試した感じだ…

iOS で SceneKit を試す(Swift 3) その79 - 画面操作などからオブジェクトを探し出すヒットテストについて

今回は、特定のオブジェクトを SCNView から探し出すヒットテストをみていく。 Xcode の Game テンプレートではレンダリングされた画像から調べ、 宇宙船をタップするとマテリアルの色が赤く変わるアニメーションが実装されている。 (ドキュメントではレン…

iOS で SceneKit を試す(Swift 3) その78 - パーティクルシステムのパラメーターをみてみる

パーティクルシステムのパラメーターをみてゆく。 ちなみに、画像を設定しないと Scene Editor 上で、何も表示されない場合があるので注意。 Scene Editor の Attributes Inspector での表示 Δ=0 となっているものは、コードでは Variation と呼ばれているも…

iOS で SceneKit を試す(Swift 3) その77 - パーティクルシステムを scn ファイルの Scene Editor で確認してみる

パーティクルシステムを scn ファイルの Scene Editor で確認してみようと思うが、 カメラ、ライト、ジオメトリ、アクションなどと特に変わりはない。 scn ファイルを開いた状態で Object Library (Command + Option + Control + 3) を開き、 Particle Syste…

iOS で SceneKit を試す(Swift 3) その76 - パーティクルの障害物判定と新しいエミッターの派生

SceneKit の パーティクルシステムは他のゲームエンジン同様に、パーティクルの障害物判定と新しいパーティクルのエミッター派生させることができる。 パーティクルの処理自体軽いわけではないので多用は禁物。 今回の流れ 雨のパーティクルを落とし床に衝突…

iOS で SceneKit を試す(Swift 3) その75 - SceneKit Particle System File と パーティクルシステム の emitterShape

SceneKit Particle System File (scnp) は Particle System 専用のファイル。 Scene Editor 上で、Particle System の確認ができる。 scnp ファイルは Particle System のファイルではあるが、scn では参照ができないため、コード場で行う。 scnp ファイルを…

iOS で SceneKit を試す(Swift 3) その74 - SceneKit のパーティクル、SCNParticleSystem について

パーティクルシステムとは粒状のものに画像など使用し、振る舞いの設定を行い、 煙、雨、紙吹雪、花火の効果を再現する。 そして、その粒子の一つ一つをパーティクルと呼ぶ。 パーティクルは SceneKit で存在するオブジェクトで唯一 Scene Graph と切り離さ…

iOS で SceneKit を試す(Swift 3) その73 - 物理シミュレーションとパーティクルの空間に影響を与える PhysicsField について

重力、電磁気、乱気流などの外部から与えられる力を領域内に反映させるオブジェクト、PhysicsField (物理フィールド) について見ていこうと思う。 PhysicsField は物理アニメーションとパーティクルに適応でき、 コード上からカスタムの PhysicsField を作成…

iOS で SceneKit を試す(Swift 3) その72 - 物理シミュレーションでのジョイントアニメーションと SCNPhysicsBehavior

SceneKit の物理シミュレーションでは、2つのノードを接合しその個所を考慮した物理アニメーションが用意されており、 設定されたジョイントは PhysicsWorld が持つ SCNPhysicsBehavior で設定することで物理シミュレーションが適応される。 また、ジョイン…

iOS で SceneKit を試す(Swift 3) その71 - SCNPhysicsContact と SCNPhysicsContactDelegate

PhysicsWorld 上で、2つ以上の PhysicsBody の接触が起こった場合に SCNPhysicsContactDelegate を呼ぶことができる。 注意点 PhysicsBody は contactTestBitMask が 0 以外でないと SCNPhysicsContactDelegate へ情報が送られないので注意。 当然だが、SCNP…

iOS で SceneKit を試す(Swift 3) その70 - PhysicsBody にある3つのビットマスク

PhysicsBody には SCNNode のビットマスクとは別に、 以下のビットマスクが存在している。 Category mask Collision mask Contact mask Physics Inspector (Command + Option + 6) でも、 同様のパラメーターがある Category mask PhysicsBody の Category m…

iOS で SceneKit を試す(Swift 3) その69 - PhysicsBody の振る舞い 3

コードでしか変更できない物理シミュレーション設定についてのご紹介。 momentOfInertia、usesDefaultMomentOfInertia PhysicsBody の慣性モーメントを変更する。 SceneKit では形状と質量に合わせて自動設定されるが usesDefaultMomentOfInertia を false …

iOS で SceneKit を試す(Swift 3) その68 - PhysicsBody の振る舞い 2

もう1つの項目 Velocity について。 Static は力が加えられることはないのでこの項目はない。 Physics Inspector (Command + Option + 6) の Velocity には以下のパラメーターがある Velocity Linear velocity 物理アニメーション時に現在の移動に加え指定し…

iOS で SceneKit を試す(Swift 3) その67 - PhysicsBody の振る舞い 1

今回は Scene Editor の Physics Inspector (Command + Option + 6) 部分の Settings のところを見てゆく。 このパラメーターは物理シミュレーション時にジオメトリがどのような特性を持っているか設定する。 次回に説明する Velocity を含め、設定するパラ…

iOS で SceneKit を試す(Swift 3) その66 - PhysicsBody の当たり判定 PhysicsShape について

まず、最初にあたり判定から。 Scene Editor のデフォルト、もしくはコードで SCNPhysicsBody 設定の際 nil を渡すと、 そのジオメトリの形状が当たり判定となる。 また、当たり判定のジオメトリが荒いほど物理シミュレーションの演算が軽くなる。 Scene Edi…

iOS で SceneKit を試す(Swift 3) その65 - 物理シミュレーションについて

以前、軽く紹介していたが、何回かに分けては詳しく見ていこうと思う。 SceneKit での物理シミュレーションの種類 大きく分けると以下のもの PhysicsWorld PhysicsBody PhysicsField PhysicsWorld は物理シミュレーションは全体についての設定。 PhysicsBody…

iOS で SceneKit を試す(Swift 3) その64 - SCNSkinner と Bone について

人型のキャラクタなどに稼動できる骨を入れて、骨を動かすと該当箇所のジオメトリが変化する 所謂、Skinning と Bone を使用してアニメーションを SCNSkinner が行う。 公式ドキュメントの画像を参照 正直、コード上で書くのは手間がかかり、Scene Editor で…

iOS で SceneKit を試す(Swift 3) その63 - Scene Editor で Light Map のテクスチャを作成する

Scene Editor ではライトを当てたジオメトリに対して、光を当てた表面情報を画像として Light Map を作成することができる。 内容的には Ambient Occlusion と同じような操作。 Light Map のパラメーター Scene Editor でジオメトリを選択し、 Attributes In…

iOS で SceneKit を試す(Swift 3) その62 - Scene Editor で Ambient Occlusion のテクスチャを作成する

Scene Editor ではジオメトリに対して Ambient Occlusion 用のテクスチャを焼き付け画像ファイルを作成することができる。 Ambient Occlusion とは? 周辺の光が塞がれて届かない隅のポリゴンに対して陰を着色することで物体をリアルに見せる技術。 SceneKit…

iOS で SceneKit を試す(Swift 3) その61 - Xcede の Scene Editor でのメニューバー

Scene Editor 表示時、Scene Editor でのみ変更されるのは「Editor」だけ。 ということで、Editor の紹介で項目は5つ。 Selection Display Edit Convert to SceneKit scene file format (.scn) Enable default lighting 4つ目の .scn への変換は以前紹介済み…

iOS で SceneKit を試す(Swift 3) その60 - SCNMorpher でモーフィング

SceneKit では SCNNode に SCNMorpher が紐づけられており、1つまたは複数のジオメトリを配列として渡すと、各ジオメトリへ変形させることができるモーフィングというものが使える。 (3DCG のオーサリングツールでは Blend Shape と呼ばれているものある) …

iOS で SceneKit を試す(Swift 3) その59 - Blender で Collada (.dae) をエクスポートし Scene Editor で読み込む

とりあえず、手軽に試すため Blender でオブジェクトを DAE でエクスポートして、Scene Editor で読み込んでみる。 Apple 自体、Maya からエクスポートしている感じがしているので、Blender でエクスポートしたものが必ず上手く使えるわけではないので注意。…

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

今まではテンプレートの ship.scn を使用したり新規で作成していたが、プロジェクトに読み込んだオブジェクトファイルを scn に変換することができる。 scn に変換する方法 変換方法は以下の3つ Xcode のメニューバーの機能から変換する オブジェクトファイ…

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

SceneKit でのリソースの操作やオブジェクトファイルの読み込みは Model I/O のフレームワークを使用しており、 ファイルの読み込みは Model I/O に依存している。 オブジェクトファイルをプロジェクトで使用する場合、Project Navigator (Command + 1) にド…

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

xcassets はプロジェクトの画像などのアセットを管理し最適化を行なっているが、 scnassets は SceneKit のファイルの管理をするフォルダ。 .scnassets にファイルを配置するとビルド時に内容を最適化してくれる。 主な最適化は2つ。 scnassets フォルダを選…

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

SCNNode の説明で書き忘れていた Pivot について。 SCNNode には Pivot と呼ばれる原点がある。 例えば球のジオメトリである SCNSphere は Pivot が中心にあり、 移動、回転、拡大縮小を行なった場合、中心から動作が行われる。 Pivot を変更することのメリ…

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

Scene Editor でコピーされたノードは負荷低減のため、 基本的には使い回しできるようになっている。 Geometory の Unshare ボタン そのため、Text(SCNText)で文字を書き、そのノードを Command + C, V などで コピー&ペーストし、 コピーした Text の文字…