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 5.7.23 winx64 のインストールと設定方法のグラフィックチュートリアル (win10 の場合)

この記事はMySQL 5.7.23 winx64のインストールチュートリアルを記録します。具体的な内...

Nginx Rewrite の使用シナリオとコード例の詳細な説明

Nginx Rewriteの使用シナリオ1. URL アドレスジャンプ。たとえば、ユーザーが pm....

Vueのイベント処理とイベント修飾子の詳細な説明

<div id="ルート"> <h2>頑張れ、{{na...

Layuiはログインインターフェース検証コードを実装します

この記事の例では、ログインインターフェース検証コードを実装するためのlayuiの具体的なコードを参考...

タブ効果を実現する js 開発プラグイン

この記事の例では、タブ効果を実現するためのjsプラグインの具体的なコードを参考までに共有しています。...

Ubuntu 18.04はルート権限を取得し、ルートユーザーとしてログインします

事前に書いておきます:次の手順では、ターミナルにコマンドを入力する必要があります。コンピューターでブ...

Docker で既存のイメージに基づいて新しいイメージを構築する方法

既存のイメージから新しいイメージを構築することは、Dockerfile ドキュメントを通じて行われま...

vue-cli 設定では Vuex の完全なプロセスレコードを使用します

目次序文インストールと使用方法モジュラー管理Vuex の状態永続性要約する序文Vue 開発では、ユー...

Windows で負荷分散に Nginx+Tomcat を使用するための完全な手順

序文今日は、Prince が Windows で負荷分散に Nginx + Tomcat を使用する...

Vueのdiffアルゴリズムについての簡単な説明

目次概要バーチャルドム原理実装プロセスパッチ方式sameVnode関数patchVnode関数upd...

MySQL 8.0.11 圧縮版のインストールチュートリアル

この記事では、MySQL 8.0.11のインストールチュートリアルを参考までに紹介します。具体的な内...

シンプルなカレンダー効果を実現する js

この記事では、シンプルなカレンダー効果を実現するためのjsの具体的なコードを参考までに共有します。具...

docker を使用して hbase をデプロイする方法

スタンドアロンの hbase について、まずは説明しましょう。 Dockerをインストールするまず ...

JavaScriptで配列かどうかを判断するためのさまざまな方法のまとめ

目次序文配列.isArrayコンストラクタインスタンスプロトタイプオブジェクト.プロトタイプ.toS...

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

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