• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Frage Hotspots/Buttons für Panoramabild

Chrree

Neues Mitglied
Ich wollte designtechnisch etwas ausprobieren, leider fehlen mir hier jedoch die Kenntnisse in der entsprechenden Sprache. Ich habe ein frei nutzbares Script für ein 360° Panoramabild im Netz gefunden welches einfach anzuwenden verwenden ist, jedoch konnte ich nach stundenlangem Googlen nichts finden, was ich mit meinem fehlenden Verständnis hätte verwenden können um Hotspots bzw. Buttons für Popups einzubinden. Wäre jemand so nett mir den Gefallen zu tun mir eine einfach Verständliche Lösung zu geben die mit folgendem Skript funktioniert? Mir geht es hier primär um die Gestaltung, weswegen ihr hoffentlich versteht wenn ich so eine Bitte stelle. Ohne werd ich die ganze Sache wohl sein lassen müssen:

Code:
<head>
<style>
body{
margin: 0;
}
canvas{
width: 100%;
height: 100%
}
</style>
<script src="//cdnjs.cloudflare.com/ajax/libs/three.js/r69/three.min.js"></script>
</head>
<body>
<script>
var manualControl = false;
var longitude = 0;
var latitude = 0;
var savedX;
var savedY;
var savedLongitude;
var savedLatitude;
// panoramas background
var panoramasArray = ["01.jpg","02.jpg","03.jpg","04.jpg","05.jpg","06.jpg"];
var panoramaNumber = Math.floor(Math.random()*panoramasArray.length);

// setting up the renderer
renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);
// creating a new scene
var scene = new THREE.Scene();
// adding a camera
var camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 1, 1000);
camera.target = new THREE.Vector3(0, 0, 0);

// creation of a big sphere geometry
var sphere = new THREE.SphereGeometry(100, 100, 40);
sphere.applyMatrix(new THREE.Matrix4().makeScale(-1, 1, 1));

// creation of the sphere material
var sphereMaterial = new THREE.MeshBasicMaterial();
sphereMaterial.map = THREE.ImageUtils.loadTexture(panoramasArray[panoramaNumber])

// geometry + material = mesh (actual object)
var sphereMesh = new THREE.Mesh(sphere, sphereMaterial);
scene.add(sphereMesh);

// listeners
document.addEventListener("mousedown", onDocumentMouseDown, false);
document.addEventListener("mousemove", onDocumentMouseMove, false);
document.addEventListener("mouseup", onDocumentMouseUp, false);
               render();
               
               function render(){
requestAnimationFrame(render);
if(!manualControl){
longitude += 0.1;
}

// limiting latitude from -85 to 85 (cannot point to the sky or under your feet)
                    latitude = Math.max(-85, Math.min(85, latitude));

// moving the camera according to current latitude (vertical movement) and longitude (horizontal movement)
camera.target.x = 500 * Math.sin(THREE.Math.degToRad(90 - latitude)) * Math.cos(THREE.Math.degToRad(longitude));
camera.target.y = 500 * Math.cos(THREE.Math.degToRad(90 - latitude));
camera.target.z = 500 * Math.sin(THREE.Math.degToRad(90 - latitude)) * Math.sin(THREE.Math.degToRad(longitude));
camera.lookAt(camera.target);

// calling again render function
renderer.render(scene, camera);
}
// when the mouse is pressed, we switch to manual control and save current coordinates
function onDocumentMouseDown(event){

event.preventDefault();

manualControl = true;

savedX = event.clientX;
savedY = event.clientY;

savedLongitude = longitude;
savedLatitude = latitude;

}

// when the mouse moves, if in manual contro we adjust coordinates
function onDocumentMouseMove(event){

if(manualControl){
longitude = (savedX - event.clientX) * 0.1 + savedLongitude;
latitude = (event.clientY - savedY) * 0.1 + savedLatitude;
}

}

// when the mouse is released, we turn manual control off
function onDocumentMouseUp(event){

manualControl = false;

}
// pressing a key (actually releasing it) changes the texture map
document.onkeyup = function(event){
panoramaNumber = (panoramaNumber + 1) % panoramasArray.length
sphereMaterial.map = THREE.ImageUtils.loadTexture(panoramasArray[panoramaNumber])
    }
</script>
</body>
</html>
 
Hi, danke für die Antwort! Ja, ich hatte mir das so vorgestellt das die mitwandern, das ist richtig. Pannellum hab ich schon mal ausprobiert und da kann man hier https://pannellum.org/documentation/overview/tutorial/ ein Bild direkt umwandeln lassen und für die eigene Seite verlinken, aber da bekomme ich immer nur die Meldung "The file could not be accessed".

Ich hab das so verstanden, wenn ich das runterladen und selber einbinden will, dass ich eine von den 3 Dateien verwenden kann und nicht alle. Da bin ich mir gerade nicht sicher ob ich von folgenden Zeilen dann auch nur eine oder alle 3 nehmen soll:
Code:
<!-- Latest compiled and minified standalone viewer -->
https://cdn.pannellum.org/2.3/pannellum.htm

<!-- Latest compiled and minified JavaScript -->
<script src="https://cdn.pannellum.org/2.3/pannellum.js"></script>

<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://cdn.pannellum.org/2.3/pannellum.css">

Edit: Bei vielen (nicht allen) muss man das Panoramabild ja auch zerteilen, allerdings braucht man dafür ein Programm und ich habe da noch nichts Passendes gefunden. Eine Idee welches man da nehmen könnte?

Edit 2: Ich hab es, wie beschrieben, über iframes versucht einzubinden aber dann hat man nur ein Fenster mit der Meldung "No configuration options were specified."

Ich werd meinen Traum die Star Trek Seite zu erstellen dann wohl aufgeben müssen, wenn ich keine Lösung finde. :( Wäre auch einverstanden wenn ich mit jemandem zusammenarbeiten könnte. Ich würde das Design machen und der Andere müsste es dann nur zusammensetzen. Wenn ich nur das mit den Hotspots hinbekäme, dann wäre der Rest einfach. :oops:
 
Ich versuch es. Bisher hatte ich immer alles überwiegend so weit nachvollziehen können dass ich Scripts einbinden konnte, allerdings tue ich mich hier irgendwie schwer. Pannellum sieht vielversprechend aus aber irgendwie bekomme ich nicht die gewünschten Resultate. Suche auch schon seit sicher 20-30 Std. Ohne Hilfe wird das vermutlich nichts werden.

Ich habe nun auch noch ein weiteres gefunden und getestet namens Panorado, womit Overlays möglich sind, allerdings braucht man dafür Javascript Kenntnisse sowas da einzufügen. Ich hab nur ein Beispiel von der Seite testen können wo das drin ist allerdings wird der Text den man beim Mouseover sehen sollte unter dem Panorama angezeigt und man kann das Panoramabild nicht mehr eigenhändig drehen, nachdem ich ein Bild mit dem Titel der Seite drübergelegt habe. Denke wegen dem Script denn bevor ich das mit dem Overlay versucht habe ging es trotz Bildes. Ist aber sehr hilfreich schon mal was Passendes dafür zu haben. Auch gefällt mir das nicht so sehr wie das vorherige Script denn bei diesem ist das Panorama zu groß bei 100%, so das die Navigation erst beim runterscrollen sichtbar ist. Ausserdem ist unten dann immer ein Logo, im Gegensatz zu dem Anderen Script das privat zur Verfügung gestellt wurde. Wenn das mit dem Pannellum allerdings klappen würde, wäre es sicher alles viel einfacher.

Ja genau, es ist so ein flaches Bild. Ich habe vor die Brücke der Enterprise (und vielleicht auch die Gänge durch Hotspots) als 360° Bilder zu verwenden, dort Overlays einzufügen für Texte, Grafiken, vielleicht ein Forum usw. Ich verwende allerdings momentan ein Panoramabild der Enterprise von Google und will wegen Copyright meine eigene Version der Brücke in Photoshop erstellen. Als Graphiker sollte ich das hinbekommen (auch wenn das realistische Zeichnen der gesamten Brücke lange braucht und auch erst lohnt wenn alles funktioniert wie es soll) und genau solche kreativen Dinge, die ich dann Besuchern der Seite anbieten kann, ist genau das was ich bei sowas gern mache. Könnte den kreativen Aspekt der Seite dann auch obendrein für Bewerbungen bei Werbefirmen/Designstudios, mit dem Schwerpunkt auf Gestaltung und nicht auf Webdesign, nutzen. Nur mit Sprachen wie Javascript ist da immer eine Hürde um es umzusetzen.

Würd mir auch nichts ausmachen wenn du auf die Daten zugreifen kannst, würde dann alles einfacher machen.

Außer dem Panorama und dem Titel den ich testweise eingefügt habe, konnte ich noch nichts machen. Für die Zukunft hier der Link (momentan mit dem alten Script): https://bridgecaptain.lima-city.de/
 
Zuletzt bearbeitet:
Würdest du mir den Gefallen tun und Pannellum bei mir drauf packen? Bevor ich da noch weitere zig Stunden verzweifle und es hinwerfe...schicke dir per PN mal die Zugangsadaten.

Ist nicht schlimm wenn es nicht alles unterstützt. Es muss nicht 100% perfekt sein, Hauptsache es funktioniert überhaupt so das jeder es verwenden kann und bei jedem vernünftig aussieht. :)
 
Vielen Dank! Das bedeutet mir ne Menge, wenn das dann funktionieren würde! Wenn es da ne einfache Möglichkeit mit Hotspots und Overlays gibt, wo dir das keine Arbeit macht, wäre ich auch voll happy wenn das Problem aus der Welt wäre.

Ja, das ist von Google. Sobald alles funktioniert wie es soll erstelle ich ein eigenes Bild, angelehnt an dieses in Photoshop bevor ich dann am Ende ne Domain kaufe. :) Ich freu mich da schon voll drauf!
 
Zuletzt bearbeitet:
Zurück
Oben