{"id":14991,"date":"2026-10-07T19:19:11","date_gmt":"2026-10-07T19:19:11","guid":{"rendered":"https:\/\/academy.filio.io\/?p=14991"},"modified":"2026-10-07T22:35:27","modified_gmt":"2026-10-07T22:35:27","slug":"set-up-walking-placement-filio-data-collector","status":"publish","type":"post","link":"https:\/\/academy.filio.io\/set-up-walking-placement-filio-data-collector\/","title":{"rendered":"How to Set Up and Use Walking Placement in Filio Data Collector"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"14991\" class=\"elementor elementor-14991\" data-elementor-post-type=\"post\">\n\t\t\t\t<div class=\"elementor-element elementor-element-21d3211b e-flex e-con-boxed e-con e-parent\" data-id=\"21d3211b\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-1fad4ca2 elementor-widget elementor-widget-text-editor\" data-id=\"1fad4ca2\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\n<p><style id=\"filio-walking-final-style\">.ff-academy.ff-walking-final{color:#2f353a;font-family:inherit;max-width:1120px;margin:auto}.ff-academy.ff-walking-final p,.ff-academy.ff-walking-final li{font-size:17px;line-height:1.7}.ff-academy.ff-walking-final p,.ff-academy.ff-walking-final ul,.ff-academy.ff-walking-final ol{max-width:74ch}.ff-academy.ff-walking-final h2{font-size:28px;line-height:1.3;margin:48px 0 18px}.ff-academy.ff-walking-final h3{font-size:23px;line-height:1.4;margin:36px 0 14px}.ff-academy.ff-walking-final figure{margin:26px auto 38px;width:100%}.ff-academy.ff-walking-final video{display:block;width:100%;height:auto;object-fit:contain;background:#fff}.ff-academy.ff-walking-final .ff-portrait{max-width:576px}.ff-academy.ff-walking-final figcaption{font-size:15px;line-height:1.6;margin-top:12px;color:#52565a}.ff-academy.ff-walking-final a{color:inherit;text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:3px}.ff-academy.ff-walking-final .ff-next{display:inline-block;background:#eaaa00;color:#2f353a;padding:12px 20px;border-radius:6px;font-weight:600;text-decoration:none}.ff-academy.ff-walking-final details{padding:14px 18px;border:1px solid #b8b8b8;margin:18px 0 32px}.ff-academy.ff-walking-final summary{font-weight:600;cursor:pointer}.ff-academy.ff-walking-final .ff-notes{border-left:4px solid #eaaa00;padding-left:20px;margin:30px 0}.ff-academy.ff-walking-final h2,.ff-academy.ff-walking-final h3{scroll-margin-top:180px}\n.ff-academy.ff-walking-final figure.ff-step-media{max-width:310px;width:100%;margin:26px auto 38px;border:1px solid #b8b8b8;padding:4px;border-radius:12px;box-sizing:border-box;background:#fff}\n.ff-walking-final .ff-product-crop{position:relative;width:100%;aspect-ratio:498\/974;overflow:hidden;background:#fff;border-radius:7px}\n.ff-walking-final .ff-product-crop>video,.ff-walking-final .ff-product-crop>img,.ff-walking-final .ff-product-crop>canvas{position:absolute;display:block;left:0;top:0;width:100%;max-width:none;height:auto;transform:translateY(-6.1111111111%);object-fit:contain;margin:0;border:0}\n.ff-walking-final .ff-product-crop>video{pointer-events:none}\n.ff-walking-final .ff-product-crop>video::-webkit-media-controls{display:none!important}\n.ff-walking-final .ff-product-crop>.ff-motion-poster{display:none}\n.ff-academy.ff-walking-final figure.ff-context-media{width:100%;max-width:690px;margin:26px auto 38px}\n.ff-walking-final .ff-context-media .ff-product-crop{aspect-ratio:1280\/720;border-radius:0;background:#2f353a}\n.ff-walking-final .ff-context-media .ff-product-crop>video,.ff-walking-final .ff-context-media .ff-product-crop>img,.ff-walking-final .ff-context-media .ff-product-crop>canvas{transform:none}\n.ff-walking-final.is-reduced-motion .ff-product-crop>video,.ff-walking-final.is-reduced-motion .ff-product-crop>.ff-loop-reset{display:none!important}.ff-walking-final.is-reduced-motion .ff-product-crop>.ff-motion-poster{display:block}\n@media(prefers-reduced-motion:reduce){.ff-walking-final .ff-product-crop>video,.ff-walking-final .ff-product-crop>.ff-loop-reset{display:none!important}.ff-walking-final .ff-product-crop>.ff-motion-poster{display:block}}\n<\/style><\/p>\n<!-- Prepared for draft 14991 only; no publication. -->\n<div class=\"ff-academy ff-walking-final\">\n<p>Use Walking Placement in Filio Data Collector to establish a start and end reference on a plan, capture media while walking, and review the plan-linked record.<\/p>\n<h2>When to use this<\/h2>\n<p>Use the intended project plan and a safe, straight setup path. Confirm that the start and end locations you select on the plan correspond to where you are physically standing.<\/p>\n<h2>Step-by-step<\/h2>\n<h3>1. Select the intended project<\/h3>\n<p>Select the intended project.<\/p>\n<h3>2. Select the intended plan sheet<\/h3>\n<p>Open <strong>Plan Sheets<\/strong> and select the intended plan. The current demonstration begins with the plan already selected.<\/p>\n<figure class=\"ff-motion ff-step-media\" data-step=\"2\" data-asset-key=\"selected-plan\">\n<div class=\"ff-product-crop\"><img fetchpriority=\"high\" decoding=\"async\" src=\"https:\/\/academy.filio.io\/wp-content\/uploads\/2026\/10\/filio-walking-selected-plan.jpg\" alt=\"Selected project and plan context before Walking Placement setup\" width=\"498\" height=\"1080\" \/><\/div>\n<\/figure>\n<h3>3. Open Walking Placement<\/h3>\n<p>When the <strong>One-time walking setup<\/strong> prompt appears, choose <strong>Open setup<\/strong>.<\/p>\n<figure class=\"ff-motion ff-step-media\" data-step=\"3\" data-asset-key=\"open-setup\">\n<div class=\"ff-product-crop\"><video id=\"walking-open-setup\" poster=\"https:\/\/academy.filio.io\/wp-content\/uploads\/2026\/10\/filio-walking-open-setup-poster.jpg\" preload=\"metadata\" autoplay=\"autoplay\" loop=\"loop\" muted=\"\" width=\"498\" height=\"1080\" data-loop-end=\"3.2\" data-loop-dwell=\"1000\" aria-label=\"Open Walking Placement\"><source src=\"https:\/\/academy.filio.io\/wp-content\/uploads\/2026\/10\/filio-walking-open-setup.mp4\" type=\"video\/mp4\" \/><\/video> <img decoding=\"async\" class=\"ff-motion-poster\" src=\"https:\/\/academy.filio.io\/wp-content\/uploads\/2026\/10\/filio-walking-open-setup-poster.jpg\" alt=\"Open Walking Placement\" width=\"498\" height=\"1080\" \/><\/div>\n<\/figure>\n<h3>4. Set the start point<\/h3>\n<p>Position the start reference on the plan where you are standing, then choose <strong>Set Start Point<\/strong>.<\/p>\n<figure class=\"ff-motion ff-step-media\" data-step=\"4\" data-asset-key=\"set-start\">\n<div class=\"ff-product-crop\"><video id=\"walking-set-start\" poster=\"https:\/\/academy.filio.io\/wp-content\/uploads\/2026\/10\/filio-walking-set-start-poster.jpg\" preload=\"metadata\" autoplay=\"autoplay\" loop=\"loop\" muted=\"\" width=\"498\" height=\"1080\" data-loop-end=\"5.633333\" data-loop-dwell=\"1000\" aria-label=\"Set the start point\"><source src=\"https:\/\/academy.filio.io\/wp-content\/uploads\/2026\/10\/filio-walking-set-start.mp4\" type=\"video\/mp4\" \/><\/video> <img decoding=\"async\" class=\"ff-motion-poster\" src=\"https:\/\/academy.filio.io\/wp-content\/uploads\/2026\/10\/filio-walking-set-start-poster.jpg\" alt=\"Set the start point\" width=\"498\" height=\"1080\" \/><\/div>\n<\/figure>\n<h3>5. Walk the setup path<\/h3>\n<p>Follow the straight-line guide. The current displayed minimum is <strong>2 m<\/strong>. The screen recommends <strong>8\u201310 m<\/strong> when you can continue safely; that recommendation is not an additional requirement.<\/p>\n<figure class=\"ff-motion ff-step-media\" data-step=\"5\" data-asset-key=\"walk-setup-path\">\n<div class=\"ff-product-crop\"><video id=\"walking-walk-setup-path\" poster=\"https:\/\/academy.filio.io\/wp-content\/uploads\/2026\/10\/filio-walking-walk-setup-path-poster.jpg\" preload=\"metadata\" autoplay=\"autoplay\" loop=\"loop\" muted=\"\" width=\"498\" height=\"1080\" data-loop-end=\"9.933333\" data-loop-dwell=\"1000\" aria-label=\"Walk the setup path\"><source src=\"https:\/\/academy.filio.io\/wp-content\/uploads\/2026\/10\/filio-walking-walk-setup-path.mp4\" type=\"video\/mp4\" \/><\/video> <img loading=\"lazy\" decoding=\"async\" class=\"ff-motion-poster\" src=\"https:\/\/academy.filio.io\/wp-content\/uploads\/2026\/10\/filio-walking-walk-setup-path-poster.jpg\" alt=\"Walk the setup path\" width=\"498\" height=\"1080\" \/><\/div>\n<\/figure>\n<h3>6. Set the end point<\/h3>\n<p>Follow the prompt to hold still while Filio records where you stopped. Move the plan to the corresponding location and choose <strong>Set End Point<\/strong>.<\/p>\n<figure class=\"ff-motion ff-step-media\" data-step=\"6\" data-asset-key=\"set-end\">\n<div class=\"ff-product-crop\"><video id=\"walking-set-end\" poster=\"https:\/\/academy.filio.io\/wp-content\/uploads\/2026\/10\/filio-walking-set-end-poster.jpg\" preload=\"metadata\" autoplay=\"autoplay\" loop=\"loop\" muted=\"\" width=\"498\" height=\"1080\" data-loop-end=\"8.3\" data-loop-dwell=\"1000\" aria-label=\"Set the end point\"><source src=\"https:\/\/academy.filio.io\/wp-content\/uploads\/2026\/10\/filio-walking-set-end.mp4\" type=\"video\/mp4\" \/><\/video> <img loading=\"lazy\" decoding=\"async\" class=\"ff-motion-poster\" src=\"https:\/\/academy.filio.io\/wp-content\/uploads\/2026\/10\/filio-walking-set-end-poster.jpg\" alt=\"Set the end point\" width=\"498\" height=\"1080\" \/><\/div>\n<\/figure>\n<h3>7. Enter Walking mode<\/h3>\n<p>Wait for camera tracking to prepare, then check that <strong>Walking<\/strong> is selected rather than Manual.<\/p>\n<figure class=\"ff-motion ff-step-media\" data-step=\"7\" data-asset-key=\"enter-walking-mode\">\n<div class=\"ff-product-crop\"><video id=\"walking-enter-walking-mode\" poster=\"https:\/\/academy.filio.io\/wp-content\/uploads\/2026\/10\/filio-walking-enter-walking-mode-poster.jpg\" preload=\"metadata\" autoplay=\"autoplay\" loop=\"loop\" muted=\"\" width=\"498\" height=\"1080\" data-loop-end=\"4.8\" data-loop-dwell=\"1000\" aria-label=\"Enter Walking mode\"><source src=\"https:\/\/academy.filio.io\/wp-content\/uploads\/2026\/10\/filio-walking-enter-walking-mode.mp4\" type=\"video\/mp4\" \/><\/video> <img loading=\"lazy\" decoding=\"async\" class=\"ff-motion-poster\" src=\"https:\/\/academy.filio.io\/wp-content\/uploads\/2026\/10\/filio-walking-enter-walking-mode-poster.jpg\" alt=\"Enter Walking mode\" width=\"498\" height=\"1080\" \/><\/div>\n<\/figure>\n<h3>8. Capture while walking<\/h3>\n<p>Move through the space and use the capture control for the views you need. Follow any prompt to stay still during capture.<\/p>\n<figure class=\"ff-motion ff-step-media\" data-step=\"8\" data-asset-key=\"capture\">\n<div class=\"ff-product-crop\"><video id=\"walking-capture\" poster=\"https:\/\/academy.filio.io\/wp-content\/uploads\/2026\/10\/filio-walking-capture-poster.jpg\" preload=\"metadata\" autoplay=\"autoplay\" loop=\"loop\" muted=\"\" width=\"498\" height=\"1080\" data-loop-end=\"6.433333\" data-loop-dwell=\"1000\" aria-label=\"Capture while walking\"><source src=\"https:\/\/academy.filio.io\/wp-content\/uploads\/2026\/10\/filio-walking-capture.mp4\" type=\"video\/mp4\" \/><\/video> <img loading=\"lazy\" decoding=\"async\" class=\"ff-motion-poster\" src=\"https:\/\/academy.filio.io\/wp-content\/uploads\/2026\/10\/filio-walking-capture-poster.jpg\" alt=\"Capture while walking\" width=\"498\" height=\"1080\" \/><\/div>\n<\/figure>\n<h3>9. Review plan-linked media<\/h3>\n<p>Review the captured media markers on the plan. Check their position and direction against the space and the views you intended to document.<\/p>\n<figure class=\"ff-motion ff-step-media\" data-step=\"9\" data-asset-key=\"review-plan-media\">\n<div class=\"ff-product-crop\"><video id=\"walking-review-plan-media\" poster=\"https:\/\/academy.filio.io\/wp-content\/uploads\/2026\/10\/filio-walking-review-plan-media-poster.jpg\" preload=\"metadata\" autoplay=\"autoplay\" loop=\"loop\" muted=\"\" width=\"498\" height=\"1080\" data-loop-end=\"8.933333\" data-loop-dwell=\"1000\" aria-label=\"Review plan-linked media\"><source src=\"https:\/\/academy.filio.io\/wp-content\/uploads\/2026\/10\/filio-walking-review-plan-media.mp4\" type=\"video\/mp4\" \/><\/video> <img loading=\"lazy\" decoding=\"async\" class=\"ff-motion-poster\" src=\"https:\/\/academy.filio.io\/wp-content\/uploads\/2026\/10\/filio-walking-review-plan-media-poster.jpg\" alt=\"Review plan-linked media\" width=\"498\" height=\"1080\" \/><\/div>\n<\/figure>\n<h2>Indoor example<\/h2>\n<p>This alternate indoor example applies the capture and plan-linked review steps above to a scanned room. Check the selected room plan, capture the required views and review their markers against the actual space.<\/p>\n<figure class=\"ff-motion ff-context-media\" data-media-id=\"14986\" data-poster-id=\"14987\">\n<div class=\"ff-product-crop\"><video id=\"walking-indoor-example\" poster=\"https:\/\/academy.filio.io\/wp-content\/uploads\/2026\/10\/FILIO_walking_indoor_academy_context_review_poster.png\" preload=\"metadata\" autoplay=\"autoplay\" loop=\"loop\" muted=\"\" width=\"1280\" height=\"720\" data-loop-end=\"10.8\" data-loop-dwell=\"1000\" aria-label=\"Indoor example: room-plan setup and capture in plan context\"><source src=\"https:\/\/academy.filio.io\/wp-content\/uploads\/2026\/10\/FILIO_walking_indoor_academy_context_review.mp4\" type=\"video\/mp4\" \/><\/video> <img loading=\"lazy\" decoding=\"async\" class=\"ff-motion-poster\" src=\"https:\/\/academy.filio.io\/wp-content\/uploads\/2026\/10\/FILIO_walking_indoor_academy_context_review_poster.png\" alt=\"Indoor example: room-plan setup and capture in plan context\" width=\"1280\" height=\"720\" \/><\/div>\n<\/figure>\n<aside class=\"ff-notes ff-setup-guidance\" aria-labelledby=\"walking-setup-guidance\">\n<h2 id=\"walking-setup-guidance\">Setup Guidance<\/h2>\n<p>If setup reports that you moved off the straight line, follow its prompt to walk back toward the guide or start over.<\/p>\n<p>This warning is from a separate setup attempt. Setup correction, the visible <strong>Recalibrate<\/strong> control and editing a saved record are separate actions. The current demonstration does not establish a saved-record marker-editing workflow.<\/p>\n<figure class=\"ff-motion ff-step-media\" data-section=\"setup-guidance\" data-asset-key=\"setup-warning\">\n<div class=\"ff-product-crop\"><video id=\"walking-setup-warning\" poster=\"https:\/\/academy.filio.io\/wp-content\/uploads\/2026\/10\/filio-walking-setup-warning-poster.jpg\" preload=\"metadata\" autoplay=\"autoplay\" loop=\"loop\" muted=\"\" width=\"498\" height=\"1080\" data-loop-end=\"4.933333\" data-loop-dwell=\"1000\" aria-label=\"Review setup guidance\"><source src=\"https:\/\/academy.filio.io\/wp-content\/uploads\/2026\/10\/filio-walking-setup-warning.mp4\" type=\"video\/mp4\" \/><\/video> <img loading=\"lazy\" decoding=\"async\" class=\"ff-motion-poster\" src=\"https:\/\/academy.filio.io\/wp-content\/uploads\/2026\/10\/filio-walking-setup-warning-poster.jpg\" alt=\"Review setup guidance\" width=\"498\" height=\"1080\" \/><\/div>\n<\/figure>\n<\/aside>\n<div class=\"ff-notes\">\n<h2>Important notes<\/h2>\n<p>The setup-distance recommendation is not a numeric accuracy guarantee or a photo-spacing rule. Check the displayed placement as you work. This guide makes no offline capture or synchronization guarantee.<\/p>\n<\/div>\n<h2>Related Academy guides<\/h2>\n<p><a href=\"https:\/\/www.filio.io\/academy\/create-interior-scan-plan-sheet-filio-data-collector\" target=\"_blank\" rel=\"noopener\">Create and review an Interior Scan<\/a> when you need room context for the project. For a separate completed model, see <a href=\"https:\/\/www.filio.io\/academy\/how-do-i-review-and-measure-a-3d-model-in-filio\" target=\"_blank\" rel=\"noopener\">3D model navigation and measurement<\/a>.<\/p>\n<p><a class=\"ff-next\" href=\"https:\/\/www.filio.io\/academy\/how-to-create-and-compare-before-after-photos-in-filio-data-collector\" target=\"_blank\" rel=\"noopener\">Create and compare Before &amp; After photos<\/a><\/p>\n<\/div>\n<p><script id=\"filio-walking-teaching-loops\">\/* Walking 14991 only: restrained, source-faithful teaching loops. *\/\n(() => {\n  'use strict';\n  const init = () => {\n    const reduced = window.matchMedia('(prefers-reduced-motion: reduce)');\n    document.querySelectorAll('.ff-walking-final').forEach(root => {\n      const controllers = [];\n      const setReduced = () => {\n        root.classList.toggle('is-reduced-motion', reduced.matches);\n        controllers.forEach(sync => sync());\n      };\n      root.querySelectorAll('video[data-loop-end]').forEach(video => {\n        if (video.dataset.ffLoopReady === '1') return;\n        video.dataset.ffLoopReady = '1';\n        const frame = video.closest('.ff-product-crop');\n        if (!frame) return;\n        const canvas = document.createElement('canvas');\n        canvas.className = 'ff-loop-reset';\n        canvas.setAttribute('aria-hidden', 'true');\n        Object.assign(canvas.style, {\n          position: 'absolute', pointerEvents: 'none', zIndex: '2',\n          opacity: '0', transition: 'none'\n        });\n        frame.appendChild(canvas);\n        const ctx = canvas.getContext('2d');\n        const number = (key, fallback) => {\n          const value = Number(video.dataset[key]);\n          return Number.isFinite(value) && value >= 0 ? value : fallback;\n        };\n        const requestedEnd = number('loopEnd', 3);\n        const dwell = number('loopDwell', 700);\n        const midAt = number('midHoldAt', 0);\n        const midDwell = number('midHoldMs', 0);\n        let state = 'playing', midDone = false, seen = true;\n        let timer = 0, timerDue = 0, remaining = 0, afterTimer = null;\n        let frameCallback = 0, fadeTimer = 0;\n        const rect = frame.getBoundingClientRect();\n        seen = rect.bottom > 0 && rect.top < window.innerHeight;\n        const active = () => seen && !document.hidden && !reduced.matches;\n        const end = () => Number.isFinite(video.duration)\n          ? Math.min(requestedEnd, Math.max(0, video.duration - 0.04))\n          : requestedEnd;\n        const clearClock = () => {\n          if (timer) {\n            remaining = Math.max(0, timerDue - performance.now());\n            clearTimeout(timer);\n            timer = 0;\n          }\n        };\n        const resumeClock = () => {\n          if (!afterTimer || timer || !active()) return;\n          timerDue = performance.now() + remaining;\n          timer = setTimeout(() => {\n            timer = 0;\n            const callback = afterTimer;\n            afterTimer = null;\n            callback();\n          }, remaining);\n        };\n        const wait = (ms, callback) => {\n          clearClock();\n          remaining = ms;\n          afterTimer = callback;\n          resumeClock();\n        };\n        const cancelFrame = () => {\n          if (frameCallback && video.cancelVideoFrameCallback) video.cancelVideoFrameCallback(frameCallback);\n          else if (frameCallback) cancelAnimationFrame(frameCallback);\n          frameCallback = 0;\n        };\n        const play = () => {\n          if (!active()) return;\n          const promise = video.play();\n          if (promise && promise.catch) promise.catch(() => {});\n        };\n        const snapshot = () => {\n          if (!ctx || !video.videoWidth || !video.videoHeight) return;\n          canvas.width = video.videoWidth;\n          canvas.height = video.videoHeight;\n          try {\n            ctx.drawImage(video, 0, 0, canvas.width, canvas.height);\n            canvas.style.transition = 'none';\n            canvas.style.opacity = '1';\n          } catch (_) { canvas.style.opacity = '0'; }\n        };\n        const reveal = () => {\n          if (state !== 'reveal' || !active()) return;\n          state = 'playing';\n          canvas.style.transition = 'opacity 160ms linear';\n          requestAnimationFrame(() => { canvas.style.opacity = '0'; });\n          clearTimeout(fadeTimer);\n          fadeTimer = setTimeout(() => {\n            if (state === 'playing') canvas.style.transition = 'none';\n          }, 180);\n          watch();\n        };\n        const resetReady = () => {\n          state = 'reveal';\n          if (!active()) return;\n          play();\n          if (video.requestVideoFrameCallback) {\n            frameCallback = video.requestVideoFrameCallback(() => {\n              frameCallback = 0;\n              reveal();\n            });\n          } else requestAnimationFrame(reveal);\n        };\n        const reset = () => {\n          state = 'reset-seek';\n          midDone = false;\n          video.currentTime = 0;\n        };\n        const holdEnd = () => {\n          state = 'dwell';\n          snapshot();\n          wait(dwell, reset);\n        };\n        const finish = () => {\n          state = 'end-seek';\n          video.pause();\n          cancelFrame();\n          const target = end();\n          if (Math.abs(video.currentTime - target) > 0.01) video.currentTime = target;\n          else holdEnd();\n        };\n        const tick = time => {\n          if (state !== 'playing' || !active() || video.seeking) return;\n          if (time >= end()) { finish(); return; }\n          if (!midDone && midAt > 0 && midDwell > 0 && time >= midAt) {\n            midDone = true;\n            state = 'mid-dwell';\n            video.pause();\n            cancelFrame();\n            wait(midDwell, () => { state = 'playing'; play(); watch(); });\n          }\n        };\n        function watch() {\n          if (frameCallback || state !== 'playing' || !active()) return;\n          if (video.requestVideoFrameCallback) {\n            frameCallback = video.requestVideoFrameCallback((_, metadata) => {\n              frameCallback = 0;\n              tick(metadata.mediaTime);\n              watch();\n            });\n          } else {\n            frameCallback = requestAnimationFrame(() => {\n              frameCallback = 0;\n              tick(video.currentTime);\n              watch();\n            });\n          }\n        }\n        const sync = () => {\n          if (!active()) {\n            video.pause();\n            clearClock();\n            cancelFrame();\n            return;\n          }\n          if (afterTimer) resumeClock();\n          else if (state === 'reveal') resetReady();\n          else if (state === 'playing') { play(); watch(); }\n        };\n        controllers.push(sync);\n        ['autoplay', 'muted', 'loop', 'playsinline'].forEach(name => video.setAttribute(name, ''));\n        video.autoplay = video.muted = video.defaultMuted = video.loop = video.playsInline = true;\n        video.controls = false;\n        video.removeAttribute('controls');\n        video.addEventListener('timeupdate', () => tick(video.currentTime));\n        video.addEventListener('seeked', () => {\n          if (state === 'end-seek') holdEnd();\n          else if (state === 'reset-seek') resetReady();\n        });\n        video.addEventListener('loadedmetadata', sync);\n        video.addEventListener('canplay', sync);\n        document.addEventListener('visibilitychange', sync);\n        if ('IntersectionObserver' in window) {\n          const observer = new IntersectionObserver(entries => {\n            seen = entries[0].isIntersecting;\n            sync();\n          }, { threshold: 0.01 });\n          observer.observe(frame);\n        }\n        sync();\n      });\n      setReduced();\n      if (reduced.addEventListener) reduced.addEventListener('change', setReduced);\n      else reduced.addListener(setReduced);\n    });\n  };\n  if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', init, { once: true });\n  else init();\n})();\n<\/script><\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Set start and end references for Walking Placement, walk at least 2 m (8\u201310 m recommended), then capture and review plan-linked media.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[130,227],"tags":[2064,2697,643,2692,2690,2691,2695,2698,2696,2693,2701,2702,2699,2700,2694],"class_list":["post-14991","post","type-post","status-publish","format-standard","hentry","category-filio-mobile-app","category-advanced-media-tools","tag-capture","tag-construction-site-photos","tag-data-collector","tag-directional-photo-markers","tag-filio-data-collector","tag-filio-walking-placement","tag-indoor-construction-documentation","tag-mobile-field-documentation","tag-plan-sheet-photo-placement","tag-spatial-photo-documentation","tag-step","tag-stepper","tag-walking","tag-walking-placement","tag-walking-placement-setup"],"acf":[],"_links":{"self":[{"href":"https:\/\/academy.filio.io\/wp-json\/wp\/v2\/posts\/14991","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/academy.filio.io\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/academy.filio.io\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/academy.filio.io\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/academy.filio.io\/wp-json\/wp\/v2\/comments?post=14991"}],"version-history":[{"count":19,"href":"https:\/\/academy.filio.io\/wp-json\/wp\/v2\/posts\/14991\/revisions"}],"predecessor-version":[{"id":15118,"href":"https:\/\/academy.filio.io\/wp-json\/wp\/v2\/posts\/14991\/revisions\/15118"}],"wp:attachment":[{"href":"https:\/\/academy.filio.io\/wp-json\/wp\/v2\/media?parent=14991"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/academy.filio.io\/wp-json\/wp\/v2\/categories?post=14991"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/academy.filio.io\/wp-json\/wp\/v2\/tags?post=14991"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}