User Tools

Site Tools


informatica:linux:tour360

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
informatica:linux:tour360 [2024/03/08 22:08] joseinformatica:linux:tour360 [2024/03/09 16:18] (current) jose
Line 106: Line 106:
  
 </code> </code>
 +
 +===== Añadir mapa con la posición y orientación =====
 +Copiamos el fichero mapa.png con capas transparentes en el directorio raiz donde está index.js
 +
 +En el fichero index.js, entre 
 +    // Initialize viewer.
 +y
 +  // Create scenes,
 +Añadimos el minimapa
 +<code>
 +// Crear un contenedor para el mini-mapa
 +var miniMapContainer = document.createElement('div');
 +miniMapContainer.style.position = 'absolute';
 +miniMapContainer.style.right = '10px';
 +miniMapContainer.style.bottom = '10px';
 +miniMapContainer.style.width = '200px'; // Ajusta según necesites, igual que el mini-mapa
 +miniMapContainer.style.height = 'auto';
 +miniMapContainer.style.zIndex = '100';
 +
 +// Añadir el mini-mapa al contenedor
 +var miniMap = document.createElement('img');
 +miniMap.src = 'mapa2.png'; // Asegúrate de usar la ruta correcta
 +miniMap.style.width = '100%'; // Hace que el mini-mapa ocupe todo el contenedor
 +miniMap.style.height = 'auto';
 +miniMap.style.pointerEvents = 'none'; // Esto permite que los eventos del ratón pasen a través de la imagen
 +
 +// Añadir el marcador al contenedor
 +var marker = document.createElement('div');
 +marker.style.position = 'absolute';
 +marker.style.width = '10px'; // Tamaño del marcador
 +marker.style.height = '10px';
 +marker.style.backgroundColor = 'red';
 +marker.style.borderRadius = '50%'; // Hace que el marcador sea un círculo
 +marker.style.zIndex = '101'; // Se muestra sobre el mini-mapa
 +// Posicionamiento inicial del marcador dentro del contenedor del mini-mapa
 +marker.style.transition = 'top 0.5s ease-out, left 0.5s ease-out';
 +marker.style.left = '50px'; // Ajusta según la ubicación inicial deseada sobre el mini-mapa
 +marker.style.top = '50px';
 +
 +// Añadir el mini-mapa y el marcador al contenedor
 +miniMapContainer.appendChild(miniMap);
 +miniMapContainer.appendChild(marker);
 +
 +// Finalmente, añadir el contenedor del mini-mapa al body o al contenedor principal
 +document.body.appendChild(miniMapContainer);
 +</code>
 +
 +Creamos la función actualizarPosicionDelMarcador al final del documento antes de estas líneas:
 +
 +  // Display the initial scene.
 +  switchScene(scenes[0]);
 +
 +Función actualizarPosicionDelMarcador
 +<code>
 +function actualizarPosicionDelMarcador(nuevaX, nuevaY) {
 +    // Suponiendo que 'marker' es el marcador cuya posición quieres cambiar,
 +    // y 'miniMapContainer' es el contenedor del mapa y del marcador.
 +    // 'nuevaX' y 'nuevaY' son las nuevas posiciones del marcador en píxeles,
 +    // relativas al contenedor del mini-mapa.
 +
 +    marker.style.left = nuevaX + 'px';
 +    marker.style.top = nuevaY + 'px';
 +}
 +</code>
 +
 +La función la llamamos dentro de la función switchScene:
 +<code>
 +  function switchScene(scene) {
 +    stopAutorotate();
 +    scene.view.setParameters(scene.data.initialViewParameters);
 +    scene.scene.switchTo();
 +    startAutorotate();
 +    updateSceneName(scene);
 +    updateSceneList(scene);
 +  }
 +</code>
 +
 +La ponemos al final del todo después de updateSceneList
 +<code>
 +  function switchScene(scene) {
 +    stopAutorotate();
 +    scene.view.setParameters(scene.data.initialViewParameters);
 +    scene.scene.switchTo();
 +    startAutorotate();
 +    updateSceneName(scene);
 +    updateSceneList(scene);
 +    actualizarPosicionDelMarcador(scene.data.initialViewParameters.x,scene.data.initialViewParameters.y);
 +  }
 +</code>
 +
 +Ahora en cada escena tenemos que poner los valores x,y de la posición que están en el mapa en la sección initialViewParameters. El punto 0,0 es la esquina superior izquierda
 +<code>
 +      "initialViewParameters": {
 +        "yaw": -1.9068445548687052,
 +        "pitch": 0.1964205885417094,
 +        "fov": 1.306532538376576,
 +        "x" : 125,
 +        "y" : 190
 +      },
 +</code>
 +
 +
 +
 +
  
 ====== Añadir nuevas fotos sin Marzipano tool ====== ====== Añadir nuevas fotos sin Marzipano tool ======
 +Hay que hacer 3 pasos:
 +<code>
 +1. Convertir foto en directorios y copiar en directorio tiles
 +2. Modificar data.js
 +3. Modificar index.html
 +</code>
 Descargamos la foto en formato rectangular. Por ejemplo si la tenemos subida a kuula y la editamos, abajo a la derecha está la opción download Descargamos la foto en formato rectangular. Por ejemplo si la tenemos subida a kuula y la editamos, abajo a la derecha está la opción download
  
 Para convertir las fotos en formato Marzipano usamos este repositorio nodejs y este repo: Para convertir las fotos en formato Marzipano usamos este repositorio nodejs y este repo:
   https://github.com/jessehhydee/marzipano-pano-tiler.git   https://github.com/jessehhydee/marzipano-pano-tiler.git
- 
-    4  node index.js 
-    5  npm install 
-    6  node index.js 
  
 Por ejemplo tenemos nuestra foto en la ruta: Por ejemplo tenemos nuestra foto en la ruta:
Line 130: Line 236:
 Convertimos la foto: Convertimos la foto:
   node index.js   node index.js
 +Tarda un poco, unos 2 minutos, pone "..images fetched" y luego acaba:
 +
 <code> <code>
 ..cubemap created ..cubemap created
Line 268: Line 376:
 Copiamos el directorio dentro de la instalación de marzipano en el directorio tiles Copiamos el directorio dentro de la instalación de marzipano en el directorio tiles
  
 +Por ejemplo si hemos añadido planta2_01 se suele poner el ID: 3-planta2_01 para tenerlos ordenados.
 +
 +El directorio tiles nos quedaría mas o menos así
 +<code>
 +└── tiles
 +    ├── 0-portalon_01
 +    ├── 1-portalon_02
 +    ├── 2-patio_01
 +    └── 3-planta2_01
 +</code>
 +
 +Modificamos el fichero data.js añadiendo otra entrada al vector json de Scenes. Podemos copiar otro tal cual y después ir cambiando los parámetros, solo tenemos que cambiar ID para que coincida con el que tenemos:
 +
 +<code>
 +    {
 +      "id": "3-planta2_01",
 +      "name": "planta2_01",
 +      "levels": [
 +        {
 +          "tileSize": 256,
 +          "size": 256,
 +          "fallbackOnly": true
 +        },
 +        {
 +          "tileSize": 512,
 +          "size": 512
 +        },
 +        {
 +          "tileSize": 512,
 +          "size": 1024
 +        },
 +        {
 +          "tileSize": 512,
 +          "size": 2048
 +        }
 +      ],
 +      "faceSize": 1368,
 +      "initialViewParameters": {
 +        "pitch": 0,
 +        "yaw": 0,
 +        "fov": 1.5707963267948966
 +      },
 +      "linkHotspots": [],
 +      "infoHotspots": []
 +    }
 +
 +</code>
 +
 +Y por último tenemos que añadir el DIV en el fichero index.html:
 +<code>
 +<div id="sceneList">
 +  <ul class="scenes">
 +
 +      <a href="javascript:void(0)" class="scene" data-id="0-portalon_01">
 +        <li class="text">portalon_01</li>
 +      </a>
 +
 +      <a href="javascript:void(0)" class="scene" data-id="1-portalon_02">
 +        <li class="text">portalon_02</li>
 +      </a>
 +      <a href="javascript:void(0)" class="scene" data-id="2-patio_01">
 +        <li class="text">patio_01</li>
 +      </a>
 +      <a href="javascript:void(0)" class="scene" data-id="3-planta2_01">
 +        <li class="text">planta2_01</li>
 +      </a>
 +  </ul>
 +</div>
 +
 +</code>
      
informatica/linux/tour360.1709935728.txt.gz · Last modified: 2024/03/08 22:08 by jose