タグ

ブックマーク / appleengine.hatenablog.com (11)

  • iOS で SceneKit を試す(Swift 3) その8 - SCNAction でアニメーション設定 - Apple Engine

    Core Animation を使用するより SCNAction を使った方が便利なのでこちらを使用。 SpriteKit の SKAction の3次元版なので使用方法はほぼ同じ。 SCNAction での SCNVector3 と SCNVector4 SCNVector3 は x, y, z の3つの値を持ち値の方向に移動または回転させる際に使用。 SCNVector4 は x, y, z、w の4つの値を持ち w の成分が x, y, z のベクトル値に反映される。 回転させる際に使用。 SCNAction では x、y、z で値を指定できるため SCNVector3 や SCNVector4 は使用しなくてもアニメーションは可能。 SCNAction とは SceneKit 用のアニメーションライブラリのようなもの。 SCNAction で設定し、SCNNode でそのアニメーシ

    iOS で SceneKit を試す(Swift 3) その8 - SCNAction でアニメーション設定 - Apple Engine
  • iOS で SceneKit を試す(Swift 3) その6 - オブジェクトの移動、回転 - Apple Engine

    SceneKit でジオメトリなどのオブジェクトを変更する場合には、 SCNNode に変更を与えることでそこにぶら下がっているオブジェクトを含め変更される。 移動させてみる 前回作成したテンプレートの func setUpScene() の下に以下の命令を書くと、 角が丸まった立方体が X 軸のプラス方向 (画面で右方向) に移動されて表示する。 let box:SCNGeometry = SCNBox(width: 3, height: 3, length: 3, chamferRadius: 0.4) let geometryNode = SCNNode(geometry: box) // 立方体の移動 geometryNode.position = SCNVector3(2, 0, 0) self.rootNode.addChildNode(geometryNode) SCNNod

    iOS で SceneKit を試す(Swift 3) その6 - オブジェクトの移動、回転 - Apple Engine
    like_futsal
    like_futsal 2019/03/25
    回転
  • 指定した場所にジオメトリを複製する SCNReplicatorNode をつくってみた in SceneKit - Apple Engine

    画像は球状にスペースシップを複製し配置したもの(ReplicatorSample3) ジオメトリを位置情報の配列をもとに複製したり、法線情報の配列から回転させるやつで 3DCG や動画編集などであるリプリケーター。 また、複製したジオメトリに対して SCNAction 設定を一括で設定することもできる。 github.com 作成した Swift File SCNGeometory+Vertices.swift SCNGeometory を extension で拡張して vertices() でジオメトリの頂点情報を SCNVector3 の配列で返し、 normals() でジオメトリの頂点情報を SCNVector3 の配列で返す。 SCNReplicatorNode.swift 位置情報の配列を元に、複製したジオメトリを配置する SCNReplicatorNode と、 テスト用に

    指定した場所にジオメトリを複製する SCNReplicatorNode をつくってみた in SceneKit - Apple Engine
  • iOS で SceneKit を試す(Swift 3) その55 - SCNNode の Pivot(原点)を変更する - Apple Engine

    SCNNode の説明で書き忘れていた Pivot について。 SCNNode には Pivot と呼ばれる原点がある。 例えば球のジオメトリである SCNSphere は Pivot が中心にあり、 移動、回転、拡大縮小を行なった場合、中心から動作が行われる。 Pivot を変更することのメリット 以前、LookAt コンストレイントを使用する際、新しいノードを作成し子のノードに X 軸方向に移動させたジオメトリ設定し、 ノードを回転させることで、X 軸方向移動分を半径として回転させていた。 ノードの Pivot を変更することで、回転の軸となる原点が変わるため、 親のノードを作成しなくても済む。 また、床が Y 軸 0 あり、 キャラクターなどがジオメトリ中央から作成されている場合、 シーン配置時に足の裏の Pivot を変更することで、 キャラクターは Y 軸 0 で地面につくことが

    iOS で SceneKit を試す(Swift 3) その55 - SCNNode の Pivot(原点)を変更する - Apple Engine
  • SceneKit の SCNNode のレンダリングオーダーでどこでもドア的表現をする - Apple Engine

    そう言ってみれば説明していなかったなとということで、SCNNode の Rendering Order について書いておこうと思う。 マテリアルの Writes depth や Reads depth は深度情報の重なりの順序を無視し前面や背面にジオメトリ表示するが、 こちらはノードのレンダーされる順番が変更される。 初期値は 0 で、数値が大きいものほど後にレンダリングされる。 Rendering Order は Photoshop や Illustrator のレイヤー、PowerPoint や Keynote の重ね順の様なもので、 例えば、AR の表現でよくあるどこでもドアの様な外からは見えないが、扉の様なものをくぐると別世界に行ける的なことができる。 どこでもドア試してみる 今回は、内側の壁とそれを隠す外側の壁、中にキャラを置いている。 外側の壁が邪魔なので、外側の壁を選択し M

    SceneKit の SCNNode のレンダリングオーダーでどこでもドア的表現をする - Apple Engine
  • iOS で SceneKit を試す(Swift 3) その36 - Scene Editor の Material のテクスチャ設定 - Apple Engine

    Scene Editor の Material は SCNMaterial となっており、 diffuse、specular などの各ビジュアルプロパティに設定するためのコンテナ SCNMaterialProperty が用意されている。 SCNMaterialProperty 自体が持つプロパティは 度々コードの方で使用している Any 型の contents と CGFloat の intensity のみ。 contents は UIColor、テクスチャ画像と SpriteKit を画像として扱うことができ、 contents が画像である場合はいくつかの設定を行うことができる。 Scene Editor の Material Inspector のテクスチャ設定 diffuse に画像を設定してみたところ。 intensity を除いたものがテクスチャの設定値となる。 今回のテク

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

    前回 Scene Editor で World 座標での設定箇所にふれた。 今回はコード上から行ってみる。 その前に 4x4 の行列 SCNMatrix4 での移動方法 SCNMatrix4 は 4x4 になっているため、設定できる値は16個ある。 以下のようにし、移動させる場合は m41, m42, m43 の値変更を修正。 var m = SCNMatrix4( m11: 1.0, m12: 0.0, m13: 0.0, m14: 0.0, m21: 0.0, m22: 1.0, m23: 0.0, m24: 0.0, m31: 0.0, m32: 0.0, m33: 1.0, m34: 0.0, m41: 0.0, m42: 0.0, m43: 0.0, m44: 1.0 ) 見たままだけど一応書いてみる パラメータ XYZ軸 m41 X m42 Y m43 Z 試しに移動させてみる

    iOS で SceneKit を試す(Swift 3) その17 - SCNNode の worldTransform - Apple Engine
  • iOS で SceneKit を試す(Swift 3) その2 - SceneKit の中身 - Apple Engine

    iOS の描画はざっくり説明すると、 3D 描画のライブラリの上に Core Graphic や Core Animation などが使用され表示しアプリの見た目ができている。 以下、WWDC 2015 の資料より抜粋し修正。 3DCG を描画する SceneKit の中身は、 Core Graphic と並列処理を行う SIMD の命令、 ローレベルの API のいずれかと、 サービスの Model I/O でできている。 APIの説明 ローレベル API 名称 説明 Metal (MetalKit) Apple 版 DirectX。 Apple 製品でしか動かないためハードとのオーバーヘッドが少なく、CPU オーバーヘッドを少なく設計され、CPUGPUでメモリが共有が行われている。 C++11 ベースの Metal シェーダーは事前コンパイルされて実行される。GLSL も変換して使用

    iOS で SceneKit を試す(Swift 3) その2 - SceneKit の中身 - Apple Engine
  • WWDC 2017 の SceneKit サンプル Fox 2 を調べる その1 - Apple Engine

    Fox 2 とは? WWDC 2017 SceneKit: What's New のプレゼンで発表されたデモ。 以下の動画の1分40秒から4分あたりをご覧いただきたい。 developer.apple.com アプリ流れ レーサーパンダの Max を操作して、宝石手に入れる。 宝石を取得すると鍵が出現。 その鍵を入手し、奥の小屋の鍵を開け仲間を助け出すという流れ。 このサンプルを調べる意味 このサンプルは SceneKit の機能のショーケースとなっている。 そのため、このプロジェクトファイルを理解するということは SceneKit の新機能を理解する近道になると思われる。 Fox 2 の動作環境 現状 Version 1.3 の 2018-04-05 版では、 iOS 11, tvOS 11, macOS 10.13 となっており、Xcode 9 が必要となる。 また、Metal の機能

    WWDC 2017 の SceneKit サンプル Fox 2 を調べる その1 - Apple Engine
  • iOS で SceneKit を試す(Swift 3) その4 - SceneKit の構造 - Apple Engine

    SceneKit の要 Scene Graph SceneKit はシーングラフというツリー状の構造で画面構成をつくり3DCGを表示してい る。 シーングラフの起点は SCNScene が起点となり、ルートノードがぶら下がる。 ルートノードから複数のチルドノードを設定する事ができて、各ノードにカメラやライトやオブジェクトを設定できる。 上の図では、チルドノードにカメラとライトとジオメトリしか書かれていないが、 パーティクルなど他の要素ある。 また、チルドノードにチルドノードを追加し、さらに階層を深くもできる。 ゲームテンプレートと同じようなものをつくる Single View Application のテンプレートから以前作成した SceneKitゲームテンプレートの状態にコードで書いてみる。 下準備 Xcode を開き、新規プロジェクト作成(command + shift + N)

    iOS で SceneKit を試す(Swift 3) その4 - SceneKit の構造 - Apple Engine
  • ARKit + SceneKit でカメラから取得した映像にエフェクトをかける - Apple Engine

    ARKit Advent Calendar 2017 | 15日目 以下の昨日の記事の動画。 前半では ARKit で取得しているカメラ映像に対して Core Image のフィルター CIDotScreen を使用し、 新聞のモノクロ写真のようなモノクロドットや黒の塗りつぶしで構成された効果を適応しており、 こちらのご紹介。 来は Metal を使用したり、SceneKit の SCNTechnique などを使うべきだが、 今回の処理でも許容範囲かつ実装が簡単なのでこちらを選択した。 (Metal 直で処理した方が速いと思われるのと、負荷がかからないはずなので、頑張れる方は頑張ってほしい) 流れ 昨日の記事で紹介しているように ARKit のシーンの背景は、 iOS 端末の背面カメラである iSight or iSight Duo カメラから取得している映像(画像)を渡している。 デ

    ARKit + SceneKit でカメラから取得した映像にエフェクトをかける - Apple Engine
  • 1