apeescape2.com
  • メイン
  • プロジェクト管理
  • 製品ライフサイクル
  • 人とチーム
  • Webフロントエンド
モバイル

ARKitデモ:拡張現実映画制作

ARとVRが主流になりつつあり、すべての主要なハイテク企業がそれらを追求しています。AppleにはARKitがあり、GoogleにはARCoreがあり、Microsoftには独自のHoloLensがあります(もちろん、Unityもあります)。そして、多くの注目を集めているいくつかのアプリケーションで、 拡張現実アプリの開発 モバイル開発者にとって非常に望ましいスキルになりつつあります。

この記事では、回転する立方体だけでなく、シンプルでありながら意味のある小さなアプリを紹介します。とにかく回転する立方体が必要なのは誰ですか?マトリックスを作りましょう。

ARKitの紹介

ARKit iOSデバイス用のARアプリを作成するためのAppleフレームワークです。いくつかのレンダラーを使用できます。 SpriteKit 2Dオブジェクトの場合、 SceneKit 3Dの場合、および 金属 カスタムレンダラーを実装する場合。



いくつの異なる出会い系サイトがあります

このデモでは、SceneKitを使用して、完全にレンダリングされた3Dオブジェクト(ナイフ)をレンダリングして配置します。

画像:レンダラーの違い

ARKit v2から、5種類の構成がARKitでサポートされます。

AROrientationTrackingConfiguration –デバイスの向きのみを追跡する場合(たとえば、星座アプリケーションの場合)。この構成では、サイドステッピングなどの物理的な動きは追跡されず、シーン上のオブジェクトの位置や方向に影響を与えません。

ARWorldTrackingConfiguration –これは、ほとんどの人が拡張現実と見なすものをサポートするため、おそらくARで最も頻繁に使用される構成です。例としては、仮想ペットやポケモンの狩猟アプリケーションがあります。

ARFaceTrackingConfiguration –この構成は、TrueDepthカメラ(Face IDなど)を必要とするため、現在iPhoneXでのみサポートされています。この構成は、顔の特徴とニュートラルな表情からの相対的なオフセットを追跡します(たとえば、ユーザーが注文する前にファッションサングラスを試すことができるアプリケーション)。

ARImageTrackingConfiguration –マーカーのセットがあり、動物がマーカーから飛び出すのを見せたい場合は、この構成が適しています。これらはカードのようなマーカーである必要はありませんが、2D画像である必要があります。カメラをモナリザに向けると、彼女は頭を向けて何かを話します。欠点は、画像マーカーの物理的なサイズを事前に言わなければならないことです。

ARObjectScanningConfiguration –この構成は、ARImageTrackingConfigurationの3Dバージョンです。

再帰コンポーネントをデコレータと反応させる

このデモでは、シーンにナイフと弾丸を追加します。6自由度が必要なので、適切なツールはARWorldTrackingConfigurationです。

アプリのコンセプト

マトリックスを見た人なら誰でも、ネオ(キアヌ・リーブス)が弾丸をかわして空中で止めたことを思い出すことができます。私たちのアプリケーションは、ライブカメラフィードからこのシーンを再現するのに役立ちます。したがって、Neoのような力を示すカスタムビデオを作成できます。

私たちのアプリには、弾丸とナイフの3Dモデルが含まれます。映画に必要な弾丸やナイフの数はユーザー次第です。時間をかけて他のモデルを追加したい場合は、アプリコードがオープンソースであり、GitHubで入手できます( https://github.com/altaibayar/toptal_ar_video_maker )。これは完全なARチュートリアルではありませんが、iOSでARアプリの開発に取り掛かろうとしている場合は、デモとソースが貴重なリソースになるはずです。

使用目的のシナリオは次のとおりです。

  1. 友達にNeoの格好をしてもらいます(アプリケーションの機能に厳密に必要というわけではありませんが、これを行っている間は見栄えがよいかもしれません)。
  2. 「ネオ」にあなたから約10メートル(30フィート)のところに立つように頼みます。
  3. アプリケーションを起動し、グランドプレーンをスキャンします。
  4. 「ネオ」で飛んでいる弾丸とナイフを追加します。
  5. 「ネオ」が弾丸をかわしたり止めたりするクールな動きをしている間、録画ボタンを押したままにしてビデオを録画します
  6. 録画ボタンを放し、ビデオをライブラリに保存します。

アプリの構築

前述のように、シーンの360度すべてを記録しながら自由に移動できるようにし、弾丸とナイフでカメラの動きを適切に追跡できるようにします。

デモンストレーションの目的で、仮想オブジェクトにはナイフとショットガンの弾丸の2種類しかありません。

ナイフは詳細なオブジェクトであり、からの無料モデルを使用します https://poly.google.com/view/3TnnfzKfHrq (Andrewに感謝します)。

ただし、ショットガンの弾丸は単純な球形のオブジェクトであり、簡単にコード化できます。さまざまな種類の金属製で真っ赤なものにします。ショットガンをエミュレートしているので、グループ化されたクラスターとしても生成します。あまり面倒なことなくクラスタリングを意味のあるものにするために、GamplayKitのガウス乱数ジェネレーターを使用できます。

GameplayKitは、ランダムノイズの生成、ステートマシン、AI、または確率ベースの意思決定が必要な場合に便利な便利なツールです。

override init() { super.init(); // generate 50 gaussian distributed position around [0, 0, 0] let positions = Randomness.gaussian(center: SCNVector3Zero, count: 50); for pos in positions { let node = SCNNode(geometry: sphereGeometry()); node.position = pos; self.addChildNode(node); } } private func sphereGeometry() -> SCNGeometry { // radius of one projectile sphere is 5mm/0.2inch let sphere = SCNSphere(radius: 0.005); // sphere is reddish sphere.firstMaterial?.diffuse.contents = UIColor.red; // reflection on light is gray/silver sphere.firstMaterial?.reflective.contents = UIColor.gray; // metalness is 0.3 sphere.firstMaterial?.metalness.contents = 0.3; // shading should be realistic sphere.firstMaterial?.lightingModel = .physicallyBased; return sphere; }

同様のランダムオフセットロジックをナイフに使用できますが、それらはクラスターとして動作しないため、単純なランダム分布を使用できます。

アプリアーキテクチャ

どのアーキテクチャパラダイムが最適であるかについての議論を掘り下げることは、このデモの範囲を超えています。そのトピックを掘り下げた記事はたくさんあります。

誰かのクレジットカード情報を取得する方法

代わりに、リンクされたGitHubプロジェクトを回避するためのガイドとして、プロジェクトの構造をレイアウトします。主要なコンポーネントとは何か、それらがどのように接続されているか、なぜそれらが選択されたのかです。

アプリケーションには3つの画面しかありません。

PermissionViewController –必要なモバイル機能へのアクセスをアプリケーションに許可するようにユーザーに求める画面。

  • カメラ –明らかに
  • ギャラリー –記録されたビデオとマイク入力を保存するには
  • マイクロフォン –ビデオの作成に使用しているライブラリには許可が必要です(デフォルトでは、マイクからのサウンドがオーディオトラックのソースとして使用されます)。

ExportViewController –この画面には、録画されたビデオが表示され、ビデオを共有または保存するためのオプションが提供されます。

MainViewController –すべての魔法はここで起こります。

私の経験から、ARSession、ARConfiguration、およびすべての一意のタイプのSCNNodeなどの必要なすべてのARKitクラスをラップするのが最善です。そうすれば、コードは自明です。

ARSessionはApeeScapeARSessionに継承され、新しいセッションクラスには3つのメソッドしかありません。必要なものすべてをセットアップするクラスコンストラクターと、resetTrackingメソッドとpauseTrackingメソッドです。

アプリケーションは、4つの固有のタイプのSCNNodeを認識します。

  • KnifeNode –ナイフの3Dオブジェクトを表し、ジオメトリとして3Dナイフを自動的にロードします。
  • BulletsNode –このノードは、ショットガンシェルのセットを表します。ランダムガウスノイズ、色、および物理照明モードが自動的に設定されます。

    KnifeNodeまたはBulletsNodeを使用するクラスでは、特別な作業や追加の作業は必要ありません。これらは、アプリケーションをカスタマイズしてより多くの種類の3Dオブジェクトを追加するためのテンプレートとして使用できます。

  • ReticleNode –床の上のシーンに表示される3Dモデルをラップして、ナイフまたは弾丸が追加される場所を示します。
  • DirectionalLightNode –これは下向きの垂直ライトを表すノードです。

参考文献とクレジット

ナイフモデル: https://poly.google.com/view/3TnnfzKfHrq

SCNSceneからの記録: https://github.com/svtek/SceneKitVideoRecorder

旅行するコンピュータサイエンスの仕事

ボタンアイコン、ARKitデモアプリケーション: https://developer.apple.com/documentation/arkit/handling_3d_interaction_and_ui_controls_in_augmented_reality

基本を理解する

ARKitとは何ですか?

ARKitは、iOSデバイス用の拡張現実アプリを作成するためのAppleフレームワークです。

SceneKitとは何ですか?

SceneKitは、Apple環境で3Dグラフィックスを開発するためのフレームワークです。これは、レンダラーなどの低レベルAPIへの抽象的なインターフェースとして機能します。

iOSアプリケーションでクライアント/サーバー相互作用ロジックを分離する方法

モバイル

iOSアプリケーションでクライアント/サーバー相互作用ロジックを分離する方法
スキャン性を向上させるためのUIデザインのベストプラクティス

スキャン性を向上させるためのUIデザインのベストプラクティス

Uiデザイン

人気の投稿
効果的なエンジニアリング管理のための根本的な率直なフレームワークの使用
効果的なエンジニアリング管理のための根本的な率直なフレームワークの使用
落ち着いて新しい開発チームに移行する
落ち着いて新しい開発チームに移行する
スマートソフトウェアの価格戦略の究極のガイド
スマートソフトウェアの価格戦略の究極のガイド
ボリビアの開発者YasettAcuranaが6回目のApeeScape奨学金を獲得
ボリビアの開発者YasettAcuranaが6回目のApeeScape奨学金を獲得
ミッションステートメント:効果的に使用された無形資産が企業価値を生み出す方法
ミッションステートメント:効果的に使用された無形資産が企業価値を生み出す方法
 
製品戦略:基本的な概念とプロセスのガイド
製品戦略:基本的な概念とプロセスのガイド
経験がすべて–究極のUXガイド
経験がすべて–究極のUXガイド
デザインニュース-世界中からのイノベーション
デザインニュース-世界中からのイノベーション
正確なデザイン– Adob​​eXDレビュー
正確なデザイン– Adob​​eXDレビュー
契約交渉-注意を払うべき欺瞞的な条項
契約交渉-注意を払うべき欺瞞的な条項
人気の投稿
  • データベースを設計するための認識されたガイドラインではないステートメントはどれですか?
  • クレジットカード番号を見つける方法
  • asp net webapiチュートリアル
  • 赤の心理的影響
  • JavaScriptのベストプラクティスをキャッチしてみてください
  • 電子メールを受信するようにモバイルデバイスを構成するときに考慮しないのは、次のうちどれですか?
  • 毎週のキャッシュフロー予測テンプレート
カテゴリー
トレンド Uxデザイン 技術 Uiデザイン アジャイル 収益性と効率性 製品ライフサイクル ブランドデザイン モバイル 革新

© 2021 | 全著作権所有

apeescape2.com