Detaillierter Prozess zur Erstellung eines VR-Panoramaprojekts mit React und Threejs

Detaillierter Prozess zur Erstellung eines VR-Panoramaprojekts mit React und Threejs

Vor Kurzem habe ich gelernt, React mit Three.js zu verwenden, um ein Projekt zu erstellen, mit dem 720 Panoramabilder durchsucht werden können. Ich möchte ein 2:1 720-Panorama laden. Ich möchte Ihnen meinen Erstellungsprozess erläutern.

1. Erstellen Sie das Framework und installieren Sie die erforderlichen Plug-Ins

npx create-react-app parano // Erstelle ein React-Projekt npm install -S typescript // Installiere Typescript, dies ist ein typunterstütztes Plugin und hat wenig mit dem Panorama-Projekt zu tun npm install -S @types/three // Installiere das von Typescript unterstützte Three.js-Plugin

2. Pano-Komponente erstellen

Mit der Komponente Pano werden 720 Panoramen geladen.

React von „react“ importieren
import * as THREE from 'three' // Importiere das Three.js-Plugin importiere Banner from './img/playground.jpg' // Importiere das Panoramabild // Deklaration des Requisitentyps Schnittstelle Schnittstelle MyProps {
}
//Statustypdeklaration Schnittstelle Schnittstelle MyState {
}
Klasse Pano erweitert React.Component<MyProps, MyState> {
  Renderer: beliebig = new THREE.WebGLRenderer() // Einen Renderer erstellen Szene: beliebig = new THREE.Scene() // Eine Szene erstellen Kamera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000) // Eine Kamera erstellen Geometrie = new THREE.SphereBufferGeometry(100, 60, 40) // Einen sphärischen Container zum Einfügen von Panoramen erstellen Material: beliebig // Texturmaterial Netz: beliebig
  Konstruktor(Requisiten: beliebig) {
    super (Requisiten)
    dieser.Zustand = {}
  }
  componentDidMount() {
    diese.geometrie.skala(-1, 1, 1)
    let texture = neues THREE.TextureLoader().load(banner)
    dieses.material = neues THREE.MeshBasicMaterial({map: texture})
    dieses.Netz = neues DREI.Netz(diese.Geometrie, dieses.Material)
    this.renderer.setSize(Fenster.innereBreite, Fenster.innereHöhe)
    Dokument.Body.AnhängenUntergeordnetesElement(dieses.Renderer.DomElement)
    diese.Szene.hinzufügen(dieses.Netz)
    diese.Kamera.position.z = 0
    window.addEventListener('Größe ändern', this.onWindowResize, false)
    dies.animieren()
  }
	//Ändere die Anzeigegröße des Panoramas, wenn sich die Fenstergröße ändert onWindowResize = () => {
    this.camera.aspect = Fenster.innereBreite / Fenster.innereHöhe
    diese.Kamera.updateProjectionMatrix()
    this.renderer.setSize(Fenster.innereBreite, Fenster.innereHöhe)
  }
	// Bild für Bild rendern animate = () => {
    AnfrageAnimationFrame(diese.animate)
    diese.Netzrotation.y += 0,001
    dieser.Renderer.render(diese.Szene, diese.Kamera)
  }
  rendern () {
    zurückkehren (
      <div></div>
    )
  }
}
Standard-Panorama exportieren

3. Fügen Sie die Pano-Komponente zur App-Komponente hinzu

importiere React von „react“;
importiere './App.css';
importiere Pano aus „./pano“;

Funktion App() {
 zurückkehren (
  <div Klassenname="App">
   <Pano />
  </div>
 );
}

Standard-App exportieren;

Führen Sie an diesem Punkt npm run start im Projektverzeichnis aus, um den Effekt zu sehen

Dies ist das Ende dieses Artikels über den detaillierten Prozess zum Erstellen eines VR-Panoramaprojekts mit React und Threejs. Weitere relevante Inhalte zum Erstellen von VR-Panoramaansichten mit React und Threejs finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den verwandten Artikeln weiter unten. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Implementierungsbeispiel eines React-Projekts von der Neuerstellung bis zur Bereitstellung
  • Lösen Sie das Fehlerproblem beim VSCode-Debuggen von React-Native-Android-Projekten
  • So erstellen Sie mit Webpack5 ein React-Projekt von 0 auf 1
  • Lösung für CSS-Referenzpfadfehler basierend auf der Paketierung von React-Projekten
  • Verwenden Sie die Formularkomponente von Antd im React-Projekt, um den Wert des Eingabefelds dynamisch festzulegen
  • Entfernen Sie console.log aus der Produktionsumgebung eines Vue- oder React-Projekts
  • Eine Methode zur Optimierung der Verpackung eines React-Frontend-Projekts
  • Lösung für den beim Erstellen eines Projekts mit npx create-react-app xxx gemeldeten Fehler
  • So führen Sie das React-Projekt auf dem offiziellen WeChat-Konto aus

<<:  Mysql-Abfrageanweisung mit mehreren Bedingungen und dem Schlüsselwort „And“

>>:  Grundlegendes Nutzungs-Tutorial zur IPTABLES-Firewall unter LINUX

Artikel empfehlen

MySQL-Datenbankoperationen und Datentypen

Inhaltsverzeichnis 1. Datenbankbetrieb 1.1 Datenb...

27 Linux-Befehle zum Bearbeiten von Dokumenten, die es wert sind, gesammelt zu werden

Linux-Befehl „col“ Der Linux-Befehl col wird zum ...

10 Tipps zum Entwerfen nützlicher, benutzerfreundlicher Webanwendungen

Hier sind 10 Tipps zum Entwerfen benutzerfreundli...

So setzen Sie das Root-Passwort in Linux mysql-5.6 zurück

1. Überprüfen Sie, ob der MySQL-Dienst gestartet ...

Detaillierte Erklärung der Docker-Maschinennutzung

Docker-Machine ist ein offiziell von Docker berei...

Implementierungsschritte zum Installieren einer Java-Umgebung in Docker

Dieser Artikel basiert auf Linux CentOS8, um Dock...

JavaScript-Code zur Implementierung eines einfachen Rechners

In diesem Artikelbeispiel wird der spezifische Ja...

Zusammenfassung der Vue-Datenreaktionsfähigkeit

Bevor wir über die Datenreaktivität sprechen, müs...

Detaillierter Prozess für den Einstieg mit Docker Compose HelloWorld

Voraussetzungen Compose ist ein Tool zum Orchestr...

So bringen Sie Ihren Browser dazu, mit JavaScript zu sprechen

Inhaltsverzeichnis 1. Das einfachste Beispiel 2. ...

Eine detaillierte Einführung in die Tomcat-Verzeichnisstruktur

Öffnen Sie das dekomprimierte Verzeichnis von Tom...