Zobacz także odnośnik do bardziej szczegółowej dokumentacji.
Rozpoczęcie pracy
Marzipano
Najprostszym sposobem na rozpoczęcie korzystania z Marzipano jest użycie Marzipano.
Przetwarza Twoje panoramy i generuje aplikację internetową, którą można wdrożyć bez zmian lub wykorzystać jako szablon dla bardziej złożonej aplikacji. Narzędzie Marzipano jest obecnie bezpłatne i nie wymaga zakładania konta.
Konfiguracja od podstaw
Jako samodzielny skrypt
Pobierz najnowszą wersję.
Dołącz plik
marzipano.js
do sekcji treści swojego kodu HTML<html> <body> <script src="marzipano.js"></script> </body> </html>
Jako pakiet Node.js
npm install marzipano
var Marzipano = require('./marzipano');
Stosowanie
Klasy Marzipano.Viewer
i Marzipano.Scene
zapewniają interfejs API wysokiego poziomu dla najczęstszych przypadków użycia.
Inicjowanie
Viewer
jest inicjowane na elemencie DOM
var panoElement = document.getElementById('pano');
var viewerOpts = {
controls: {
mouseViewMode: 'drag' // drag|qtvr
}
};
var viewer = new Marzipano.Viewer(panoElement, viewerOpts)
Utwórz scenę
Poniższy przykład inicjuje scenę kostki o wielu rozdzielczościach, która używa obrazów w katalogu tiles/
.
var levels = [
{ tileSize: 512, size: 512 },
{ tileSize: 512, size: 1024 }
];
var geometry = new Marzipano.CubeGeometry(levels);
var source = Marzipano.ImageUrlSource.fromString("tiles/{z}/{f}/{y}/{x}.jpg");
var view = new Marzipano.RectilinearView();
var scene = viewer.createScene({
source: source,
geometry: geometry,
view: view
});
Bardziej złożony przykład poniżej również:
- dodaje poziom podglądu (cubeMap), który jest buforowany podczas tworzenia sceny
- inicjuje widok
- ogranicza widok do maksymalnego pola widzenia 120°
- ogranicza widok do minimalnego pola widzenia dla maksymalnej rozdzielczości twarzy 1024x1024
Zwróć uwagę, że wartości odchylenia, nachylenia i fov są podane w radianach.
var levels = [
{ tileSize: 256, size: 256, fallbackOnly: true },
{ tileSize: 512, size: 512 },
{ tileSize: 512, size: 1024 }
];
var geometry = new Marzipano.CubeGeometry(levels);
var source = Marzipano.ImageUrlSource.fromString("tiles/{z}/{f}/{y}/{x}.jpg", {
cubeMapPreviewUrl: "tiles/preview.jpg"
});
var initialView = {
yaw: 90 * Math.PI/180,
pitch: -30 * Math.PI/180,
fov: 90 * Math.PI/180
};
var limiter = Marzipano.RectilinearView.limit.traditional(1024, 120*Math.PI/180);
var view = new Marzipano.RectilinearView(initialView, limiter);
var scene = viewer.createScene({
source: source,
geometry: geometry,
view: view,
pinFirstLevel: true
});
Zmień scenę
Metoda Scene.switchTo()
wyświetla scenę w przeglądarce, wykonując przejście w zanikaniu.
scene.switchTo({
transitionDuration: 1000
});
Zmień widok
Metoda Scene.lookTo()
zmienia widok, wykonując animację animacji. Zauważ, że wartości są podane w radianach.
var destinationViewParameters = {
yaw: 10 * Math.PI/180,
pitch: 15 * Math.PI/180,
fov: 60 * Math.PI/180
};
var options = {
transitionDuration: 2000
}
scene.lookTo(destinationViewParameters, options);
Aby uzyskać większą kontrolę, każdy Scene
ma View
do którego może uzyskać dostęp view()
.
var scene = viewer.scene(); // get the current scene
var view = scene.view(); // get the scene's view
// Get the view values
var yaw = view.yaw();
var pitch = view.pitch();
var fov = view.fov(); // fov is horizontal
var vfov = view.vfov();
var hfov = view.hfov(); // same as view.fov()
// Change the values
view.setYaw(45 * Math.PI/180);
view.setPitch(30 * Math.PI/180);
view.setFov(60 * Math.PI/180);
view.setParameters({
yaw: 45 * Math.PI/180,
pitch: 30 * Math.PI/180,
fov: 60 * Math.PI/180
});
// Offset the values by some amount
view.offsetYaw(10 * Math.PI/180);
view.offsetPitch(10 * Math.PI/180);
view.offsetFov(10 * Math.PI/180);
Automatyczny ruch i autorotacja
Viewer.setIdleMovement()
definiuje ruch, który ma być uruchamiany automatycznie, gdy widok nie uległ zmianie przez pewien czas.
Metody Viewer.startMovement()
i Viewer.stopMovement()
umożliwiają ręczne uruchamianie i zatrzymywanie ruchu.
Metoda autorotate()
tworzy automatyczny ruch obrotowy, który można wykorzystać z powyższymi metodami.
var autorotate = Marzipano.autorotate({
yawSpeed: 0.1, // Yaw rotation speed
targetPitch: 0, // Pitch value to converge to
targetFov: Math.PI/2 // Fov value to converge to
});
// Autorotate will start after 3s of idle time
viewer.setIdleMovement(3000, autorotate);
// Disable idle movement
viewer.setIdleMovement(Infinity);
// Start autorotation immediately
viewer.startMovement(autorotate);
// Stop any ongoing automatic movement
viewer.stopMovement();
Hotspoty
Hotspoty to elementy DOM, które są umieszczone w stałym punkcie panoramy, dzięki czemu ich pozycja na ekranie zmienia się wraz ze zmianą widoku sceny.
Punkty aktywne są powiązane ze sceną i są automatycznie wyświetlane razem z tą sceną.
var element = document.getElementById('spot');
var position = { yaw: Math.PI/4, pitch, Math.PI/8 };
scene.hotspotContainer().createHotspot(element, position)
Poniższy przykład tworzy obraz i używa go jako hotspota
var imgHotspot = document.createElement('img');
imgHotspot.src = 'img/hotspot.png';
imgHotspot.classList.add('hotspot');
imgHotspot.addEventListener('click', function() {
switchScene(findSceneById(hotspot.target));
});
var position = { yaw: Math.PI/4, pitch: Math.PI/8 };
marzipanoScene.hotspotContainer().createHotspot(imgHotspot, position);
Zależności
Marzipano ma kilka zależności. Są one zawarte w programie marzipano.jsmarzipano.js
, więc nie trzeba ich osobno konfigurować.
Interfejsy API i odniesienia
Powyższe klasy Viewer
and Scene
są wysokopoziomowym interfejsem API zaprojektowanym, aby uczynić Marzipano prostym w użyciu. Jednak komponenty niższego poziomu, których używają, takie jak Layer
and Stage
, również są odsłonięte. Można ich używać, gdy potrzebna jest większa kontrola lub do implementacji funkcji, które nie są jeszcze obecne w interfejsie API wysokiego poziomu.
Zobacz odnośnik, aby uzyskać bardziej szczegółową dokumentację.