A 3Sixty Studio project is a plain folder. Knowing its layout helps with backups, moving projects between devices, hosting, and advanced edits. This page is a reference; you never need to edit these files by hand to use the app.
Folder layout
My Project/
├── index.html the tour player (rebuilt on every Run and Export)
├── WTMProject.wtm all tour data, in JSON
├── panoramas/ 360° photos
├── images/ Image Assets (icons, map, pins, textures)
├── videos/ MP4 files
├── audios/ audio clips
├── pdf/ PDF documents
├── models/ GLB models
├── customhtml/ Custom HTML pages
├── js/ player scripts, incl. 3D helpers added when needed
└── index.before-upgrade.html backup, only after a template upgrade
Media folders are created when you first open the matching section. The files js/3sixty-gltfloader.js (GLB loader) and js/3sixty-bvh.js (fast collision checks) are copied in by the build when a project has GLB models or 3D scenes.
WTMProject.wtm
WTMProject.wtm is a JSON file (pretty-printed with two spaces) and is the single source of truth for the tour. index.html is regenerated from it. The format is compatible with the older 3Sixty desktop app, in both directions.
cameraPos, cameraYaw, cameraPitch: the spawn point (eye position, angles in degrees).
type: cube, sphere, plane or model (model holds a file name from models/).
color: an integer RGB value (16777215 = 0xFFFFFF, white). materialType is color or texture; texture is a file name from images/.
animation.keyframes[].ease: linear, easeIn, easeOut or easeInOut.
environment.skyboxType: none, color (with skyboxColor like #111122) or panorama (with skyboxPanorama).
index.html and build markers
index.html is a copy of the app's tour template. On every Run and Export, 3Sixty Studio replaces the content between pairs of comment markers with freshly generated code and leaves everything else alone:
Markers
Filled with
<!--projecttitle--> … <!--projecttitle-end-->
The <title> tag
<!--projectdescription--> … -end-->
The meta description
<!--loadingtext--> … -end-->
The loading text
/*initfunction*/ … /*initfunction-end*/
The first panorama to load
/*panoramas*/ … /*panoramas-end*/
Hotspots and their actions, per panorama
/*customjs*/ … /*customjs-end*/
Tour UI (toolbar, pop-ups), controls, tour map, panorama list, Mouse Look