React と Threejs を使用して VR パノラマ プロジェクトを作成する詳細なプロセス

React と Threejs を使用して VR パノラマ プロジェクトを作成する詳細なプロセス

最近、 Three.jsReactを使用して、720 度のパノラマ写真を閲覧できるプロジェクトを構築する方法を学んでいます。実現したいのは、2:1 の 720 度のパノラマを読み込むことです。作成プロセスを共有したいと思います。

1. フレームワークを構築し、必要なプラグインをインストールする

npx create-react-app parano // React プロジェクトを作成する npm install -S typescript // typescript をインストールします。これは入力支援プラグインであり、Panorama プロジェクトとはほとんど関係ありません npm install -S @types/three // typescript でサポートされている three.js プラグインをインストールします

2. パノラマコンポーネントを作成する

Pano コンポーネントは 720 枚のパノラマを読み込むために使用されます。

'react' から React をインポートします
import * as THREE from 'three' // Three.jsプラグインをインポート import Banner from './img/playground.jpg' // パノラマ画像をインポート // props型宣言 interface interface MyProps {
}
//状態型宣言インターフェースインターフェースMyState {
}
クラスPanoはReact.Component<MyProps, MyState>を拡張します。
  renderer: any = new THREE.WebGLRenderer() // レンダラーを作成 scene: any = new THREE.Scene() // シーンを作成 camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000) // カメラを作成 geometry = new THREE.SphereBufferGeometry(100, 60, 40) // パノラマを貼り付けるための球形コンテナを作成 material: any // テクスチャ マテリアル mesh: any
  コンストラクタ(props: any) {
    スーパー(小道具)
    this.state = {}
  }
  コンポーネントマウント() {
    this.geometry.scale(-1, 1, 1)
    テクスチャを新しいTHREE.TextureLoader().load(バナー)とします。
    this.material = 新しい THREE.MeshBasicMaterial({map: テクスチャ})
    this.mesh = 新しい THREE.Mesh(this.geometry, this.material)
    this.renderer.setSize(window.innerWidth, window.innerHeight)
    document.body.appendChild(this.renderer.domElement)
    this.scene.add(this.mesh)
    カメラの位置z = 0
    window.addEventListener('resize', this.onWindowResize, false)
    this.animate()
  }
	// ウィンドウサイズが変更されたときにパノラマの表示サイズを変更します onWindowResize = () => {
    this.camera.aspect = window.innerWidth / window.innerHeight
    this.camera.updateProjectionMatrix()
    this.renderer.setSize(window.innerWidth, window.innerHeight)
  }
	// フレームごとにレンダリング animate = () => {
    アニメーションフレームをリクエストします(this.animate)
    メッシュの回転y += 0.001
    this.renderer.render(this.scene、this.camera) をレンダリングします。
  }
  与える () {
    戻る (
      <div></div>
    )
  }
}
デフォルトのパノラマをエクスポート

3. PanoコンポーネントをAppコンポーネントに追加する

'react' から React をインポートします。
'./App.css' をインポートします。
'./pano' から Pano をインポートします。

関数App() {
 戻る (
  <div className="アプリ">
   <パノ />
  </div>
 );
}

デフォルトのアプリをエクスポートします。

この時点で、プロジェクトディレクトリでnpm run start実行して効果を確認します。

React と Threejs を使用して VR パノラマ プロジェクトを作成する詳細なプロセスに関するこの記事はこれで終わりです。React と Threejs を使用して VR パノラマ ビューを作成する方法に関するより関連性の高いコンテンツについては、123WORDPRESS.COM で以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Reactプロジェクトの新規作成からデプロイまでの実装例
  • VSCode のデバッグ react-native android プロジェクトのエラー問題を解決する
  • webpack5 を使用して 0 から 1 までの React プロジェクトを構築する方法
  • Reactプロジェクトのパッケージ化に基づくCSS参照パスエラーの解決策
  • Reactプロジェクトでantdのフォームコンポーネントを使用して、入力ボックスの値を動的に設定する
  • Vue または React プロジェクトの運用環境から console.log を削除する
  • Reactフロントエンドプロジェクトのパッケージを最適化する方法
  • npx create-react-app xxx を使用してプロジェクトを作成するときに報告されるエラーの解決策
  • WeChat公式アカウントでReactプロジェクトを実行する方法

<<:  And キーワードを使用した MySQL の複数条件クエリ ステートメント

>>:  LINUX での IPTABLES ファイアウォールの基本的な使用方法のチュートリアル

推薦する

MySQL実践スキル: 2つのテーブルに異なるデータがあるかどうかを比較する方法の分析

この記事では、MySQL が 2 つのテーブルを比較して、異なるデータがあるかどうかを確認する方法を...

iframe なしの div ネスト HTML

最近、宿題をしているときに、iframe を使用せずにページをネストする必要があったため、jquer...

VMware で Nginx+KeepAlived クラスタ デュアルアクティブ アーキテクチャを展開する際の問題と解決策

序文負荷分散には nginx を使用します。アーキテクチャのフロントエンドまたは中間層として、トラフ...

Ubuntu環境でxdebugをコンパイルしてインストールする方法

この記事では、Ubuntu 環境で xdebug をコンパイルしてインストールする方法について説明し...

Ubuntu 18.04 (物理マシン) で OpenWRT 開発環境を構成する方法

1. 仮想マシン(物理マシン)をインストールする仮想マシンまたは物理マシンにインストールできます。 ...

MySQL 8.0.11 MSI バージョンのインストールと構成のグラフィック チュートリアル

この記事では、MySQL 8.0.11 MSIバージョンのインストールと設定のチュートリアルを参考ま...

CSS変換ページめくりアニメーションレコードの実装

ページめくりの問題のシナリオBとCは同じページ(表と裏)にありますページをめくって A をカバーした...

Google Chromeの自動入力問題に対する完璧な解決策

Google Chrome では、ログインに成功すると、パスワードを記憶するかどうかを尋ねるメッセー...

JavaScript コードベースをよりクリーンにする 5 つの方法

目次1. 短絡や条件文の代わりにデフォルトのパラメータを使用する2. 複数の条件の処理3. スイッチ...

知らないかもしれないLinuxのファイル権限管理方法

なぜ権限管理が必要なのでしょうか? 1. コンピュータ リソースは限られているため、コンピュータ リ...

Windows での MySQL 8.0.12 のインストール手順と基本的な使用方法のチュートリアル

この記事では、WindowsでのMySQL 8.0.12のインストール手順と使用方法のチュートリアル...

Vueコンポーネントドキュメント生成ツールライブラリのメソッド

目次.vue ファイルの解析文書情報を抽出するコンポーネント名、説明、プロパティ、メソッド、モデルを...

Vueオプションの詳細な説明

目次1. オプションとは何ですか? 2. 含まれる属性3. エントリー属性エルデータ方法コンポーネン...