2017-08-01から1ヶ月間の記事一覧
以前、Scene Editor でのカメラのポストプロセス処理を行う際に、 色調整を行うカラーグレーディングで専用画像を使用した。 今回はその使い方とつくりかたについて説明していこうと思う。 編集に関しては Photoshop など、何らかの画像編集が必要になる。 …
立方体6面の内側に指定された画像を内側に貼り付ける360度の背景画像をキューブマップと呼び、 SCNMaterial の親玉である SCNMaterialProperty から使用する。 (内部的には Model I/O の機能だったはず) SceneKit ではシーンの background や lightingEnvi…
正直なところ、Core Audio など iOS 標準機能が使用できるので、 SceneKit のオーディオ再生機能を使用する必要はないけどご紹介。 SceneKit でのオーディオ再生の特徴としては、VR や HoloLens と同様に 3D 空間の位置に対して音源を再生(ミキシング)させ…
SceneKit ではジオメトリなどノードに Core Image Filter を使用してエフェクトをつけることができ、Metal Shader で行うより簡単にできる。 多分、他のゲームエンジンではこれほど簡単にエフェクトをかけるのは難しいと思われる。 とりあえず、試した感じだ…
今回は、特定のオブジェクトを SCNView から探し出すヒットテストをみていく。 Xcode の Game テンプレートではレンダリングされた画像から調べ、 宇宙船をタップするとマテリアルの色が赤く変わるアニメーションが実装されている。 (ドキュメントではレン…
パーティクルシステムのパラメーターをみてゆく。 ちなみに、画像を設定しないと Scene Editor 上で、何も表示されない場合があるので注意。 Scene Editor の Attributes Inspector での表示 Δ=0 となっているものは、コードでは Variation と呼ばれているも…
パーティクルシステムを scn ファイルの Scene Editor で確認してみようと思うが、 カメラ、ライト、ジオメトリ、アクションなどと特に変わりはない。 scn ファイルを開いた状態で Object Library (Command + Option + Control + 3) を開き、 Particle Syste…
SceneKit の パーティクルシステムは他のゲームエンジン同様に、パーティクルの障害物判定と新しいパーティクルのエミッター派生させることができる。 パーティクルの処理自体軽いわけではないので多用は禁物。 今回の流れ 雨のパーティクルを落とし床に衝突…
SceneKit Particle System File (scnp) は Particle System 専用のファイル。 Scene Editor 上で、Particle System の確認ができる。 scnp ファイルは Particle System のファイルではあるが、scn では参照ができないため、コード場で行う。 scnp ファイルを…
パーティクルシステムとは粒状のものに画像など使用し、振る舞いの設定を行い、 煙、雨、紙吹雪、花火の効果を再現する。 そして、その粒子の一つ一つをパーティクルと呼ぶ。 パーティクルは SceneKit で存在するオブジェクトで唯一 Scene Graph と切り離さ…
重力、電磁気、乱気流などの外部から与えられる力を領域内に反映させるオブジェクト、PhysicsField (物理フィールド) について見ていこうと思う。 PhysicsField は物理アニメーションとパーティクルに適応でき、 コード上からカスタムの PhysicsField を作成…
SceneKit の物理シミュレーションでは、2つのノードを接合しその個所を考慮した物理アニメーションが用意されており、 設定されたジョイントは PhysicsWorld が持つ SCNPhysicsBehavior で設定することで物理シミュレーションが適応される。 また、ジョイン…
PhysicsWorld 上で、2つ以上の PhysicsBody の接触が起こった場合に SCNPhysicsContactDelegate を呼ぶことができる。 注意点 PhysicsBody は contactTestBitMask が 0 以外でないと SCNPhysicsContactDelegate へ情報が送られないので注意。 当然だが、SCNP…
PhysicsBody には SCNNode のビットマスクとは別に、 以下のビットマスクが存在している。 Category mask Collision mask Contact mask Physics Inspector (Command + Option + 6) でも、 同様のパラメーターがある Category mask PhysicsBody の Category m…
コードでしか変更できない物理シミュレーション設定についてのご紹介。 momentOfInertia、usesDefaultMomentOfInertia PhysicsBody の慣性モーメントを変更する。 SceneKit では形状と質量に合わせて自動設定されるが usesDefaultMomentOfInertia を false …
もう1つの項目 Velocity について。 Static は力が加えられることはないのでこの項目はない。 Physics Inspector (Command + Option + 6) の Velocity には以下のパラメーターがある Velocity Linear velocity 物理アニメーション時に現在の移動に加え指定し…
今回は Scene Editor の Physics Inspector (Command + Option + 6) 部分の Settings のところを見てゆく。 このパラメーターは物理シミュレーション時にジオメトリがどのような特性を持っているか設定する。 次回に説明する Velocity を含め、設定するパラ…
まず、最初にあたり判定から。 Scene Editor のデフォルト、もしくはコードで SCNPhysicsBody 設定の際 nil を渡すと、 そのジオメトリの形状が当たり判定となる。 また、当たり判定のジオメトリが荒いほど物理シミュレーションの演算が軽くなる。 Scene Edi…
以前、軽く紹介していたが、何回かに分けては詳しく見ていこうと思う。 SceneKit での物理シミュレーションの種類 大きく分けると以下のもの PhysicsWorld PhysicsBody PhysicsField PhysicsWorld は物理シミュレーションは全体についての設定。 PhysicsBody…
人型のキャラクタなどに稼動できる骨を入れて、骨を動かすと該当箇所のジオメトリが変化する 所謂、Skinning と Bone を使用してアニメーションを SCNSkinner が行う。 公式ドキュメントの画像を参照 正直、コード上で書くのは手間がかかり、Scene Editor で…
Scene Editor ではライトを当てたジオメトリに対して、光を当てた表面情報を画像として Light Map を作成することができる。 内容的には Ambient Occlusion と同じような操作。 Light Map のパラメーター Scene Editor でジオメトリを選択し、 Attributes In…
Scene Editor ではジオメトリに対して Ambient Occlusion 用のテクスチャを焼き付け画像ファイルを作成することができる。 Ambient Occlusion とは? 周辺の光が塞がれて届かない隅のポリゴンに対して陰を着色することで物体をリアルに見せる技術。 SceneKit…
Scene Editor 表示時、Scene Editor でのみ変更されるのは「Editor」だけ。 ということで、Editor の紹介で項目は5つ。 Selection Display Edit Convert to SceneKit scene file format (.scn) Enable default lighting 4つ目の .scn への変換は以前紹介済み…
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 の文字…