QUICK START
-----------
1. Open SurfaceScan and review the full-window data-handling notice.
2. Select the two full-row acknowledgements for data handling and subject permission.
3. Allow Camera or World Sensing access.
4. Tap or recenter to place the bright blue box over the intended surface.
5. Adjust position, rotation, width, height, and depth.
6. Select LIVE for editable blue-box capture or Lock for a fixed green protected scan.
7. Move slowly through overlapping views until points and triangles accumulate.
8. Adjust Capture Points, Capture Rate, Confidence, Mesh Resolution, Mesh Refresh, Fusion Stability, Surface Continuity, and Preview Smoothing.
9. Open Preview, select a format, then choose Save or Share.
10. For Apple Vision Pro paired mode, accept the every-launch disclosure on both Build 36 devices and grant Local Network access. Automatic discovery establishes an encrypted link, verifies the SurfaceScan roles/build/protocol, selects the iOS RGB-D source, applies settings once, and starts streaming. Apple transport membership is checked before every send; a stale peer’s queued work is cancelled before bounded recovery and fresh verification. Request Final before export; Stop, Disconnect, manual retry, and native fallback remain available.
GESTURE GUIDE
-------------
Platform | Gesture | Action
-------- | ------- | ------
iPhone/iPad | Tap | Place the box on measured depth, raycast, or feature fallback.
iPhone/iPad | One-finger drag | Move left, right, up, or down.
iPhone/iPad | Two-finger vertical drag | Move nearer or farther.
iPhone/iPad | Two-finger horizontal drag | Change box depth.
iPhone/iPad | Pinch / rotate | Resize / rotate the box.
visionOS native | Spatial drag / pinch / rotate | Move, resize, and rotate the world box.
visionOS paired | Remote controls | Recenter, capture, pause, lock, reset, request preview, and request final mesh on the iPhone/iPad camera.
Android | Tap / drag / pinch / two fingers | Place, move, resize, change distance/depth, and rotate.
CAPTURE MODES
-------------
- LIVE: captures continuously inside the editable blue box. Capture pauses during a gesture or size change, clears observations registered to the old volume, and restarts after the box settles.
- LOCKED: freezes the box transform and six clipping planes, turns the box green, and produces the protected mesh used for export.
QUALITY CONTROLS
----------------
- Capture Points controls how many RGB-D, spatial, binocular, or temporal multi-view observations can be accepted from each processed frame.
- Capture Rate controls how frequently eligible frames or scene updates enter fusion.
- Confidence controls depth, spatial, binocular, and temporal multi-view acceptance; higher values reject more uncertain observations.
- Mesh Resolution controls protected output spacing and bounded voxel, cell, and triangle limits without controlling camera cadence.
- Mesh Refresh controls how frequently the protected and presentation meshes are rebuilt from accumulated fusion voxels.
- Fusion Stability controls residual and repeated-observation thresholds plus isolated-surface cleanup.
- Surface Continuity independently controls the maximum accepted local depth jump between neighbouring surface cells.
- Preview Smoothing affects only the displayed presentation mesh and is capped at 2.5 mm. It does not alter exported protected coordinates.
FILE FORMATS AND TRANSFER
-------------------------
- Save opens the system file destination picker.
- Share opens AirDrop or the Apple share interface, or Android Sharesheet / Quick Share when available.
- Receiving apps decide whether they support a particular mesh format.
Format | Colour | Typical compatibility
------ | ------ | ---------------------
PLY | Per-vertex RGB | Mesh and scientific tools.
OBJ | Vertex RGB extension | General 3D tools that support coloured vertices.
STL | No | Geometry-only CAD/manufacturing workflows.
USDZ | RGB displayColor | Apple Quick Look, RealityKit, and USD workflows.
TROUBLESHOOTING
---------------
Box is visible but no points appear: Improve lighting, include textured surroundings, make the box intersect the surface, reduce depth, wait for tracking, and move slowly.
Points appear but no connected mesh: Collect more overlapping views, increase Mesh Resolution or Mesh Refresh moderately, and lower Fusion Stability only if observations remain coherent.
Tracking limited: Hold the device steady, avoid featureless close-up views, include surrounding texture, and allow relocalization.
Save or Share unavailable: Lock the box and wait until the protected mesh contains vertices and triangles. Close any other file presentation.
Receiving app cannot open STL/PLY/OBJ: Save to Files and open the file in a mesh application that declares support for that format. USDZ is usually the simplest Apple preview format.
Enterprise RGB unavailable: Verify the approved entitlement, App ID, profile, license, physical device, and authorization. Standard geometry fallback should remain visible.
Paired iPhone/iPad not found or reconnecting: Accept the every-launch disclosure on every device, grant Local Network permission, confirm the same Build 36 is installed, keep devices awake and nearby, enable Wi-Fi and Bluetooth, and avoid networks that isolate peer devices. SurfaceScan checks Apple transport membership before every send, cancels stale queued traffic, retries a still-known interrupted camera with bounded backoff, and requires fresh verification before resuming payloads.
Paired preview visible but export disabled: Pause capture and request Final. A live preview is intentionally not exportable; wait for final and complete-topology status.
PRIVACY AND RESPONSIBLE USE
---------------------------
- Capture and file creation are local to the device.
- A surface mesh can contain identifiable colour, contour, scar, or tattoo detail.
- Scan only with permission and avoid intimate regions or unnecessary facial capture.
- Protect exported files and share them only with intended recipients.
- Android uses Google Play Services for AR, which is provided by Google and governed by Google's Privacy Policy.
LINKS AND CONTACT
-----------------
Website: https://www.orthopractis.com
Support: https://www.orthopractis.com/surfacescan
Privacy Policy: https://www.orthopractis.com/privacy
Terms of Use: https://www.orthopractis.com/terms-of-use
Email: info@orthopractis.com
Google Privacy Policy: https://policies.google.com/privacy

![]() | ![]() | ![]() | ![]() |
|---|---|---|---|
![]() |


WHY THE BOUNDED BOX IS USEFUL
The box limits acquisition to the intended region and reduces unrelated background geometry. It gives the operator visible control over spatial scope. It also establishes a metric local coordinate system that can be kept stable for a protected capture and used consistently across supported export formats.
The editable box is blue. LIVE capture can run while it is stationary. Any gesture or dimension change pauses and rebases capture so observations from two different coordinate volumes are not mixed.
The locked box is green. Its transform, dimensions, and clipping planes are frozen. Fixed capture produces the protected metric result used for review and export.
3. IOS AND IPADOS RGB-D ACQUISITION
One ARSCNView owns the AR session and display pipeline.
Smoothed scene depth is preferred when available.
Scene depth is the next measured-depth source.
Sparse tracked feature points are a limited fallback.
Camera intrinsics are mapped into depth resolution for metric unprojection.
RGB colour is sampled from the synchronized camera image and attached only to measured geometry.
Input is clipped to the selected box before entering fusion.
A bounded nonblocking frame gate prevents retained ARFrame accumulation and camera-buffer exhaustion.
ARKit callbacks remain on bounded worker queues and publish value results to explicit MainActor controller state.
A camera-session generation accompanies lifecycle callbacks. A callback is accepted only when its generation matches the current session, which prevents an earlier failed, interrupted, or backgrounded session from publishing into a replacement session.
A bounded camera circuit breaker preserves capture intent, pauses the failed route, waits through a short cooldown, and restarts only the AR camera session. Protected geometry, fusion state, box settings, and export state remain intact. Stable tracking resumes the previous LIVE or locked-capture intent.
The iOS resource governor classifies current conditions as normal, fair, serious, or critical. Thermal state, memory warnings, and sustained slow RGB-D processing can reduce frame cadence, sampling, live display point count, and presentation-mesh limits. Those reductions apply only to regenerable presentation work and do not modify protected geometry or export topology.
ARKit remains runtime-gated. App Store Connect controls compatible iPhone/iPad-app availability on Apple Vision Pro separately from the native visionOS products.
4. VISIONOS STANDARD ACQUISITION
WorldTrackingProvider supplies wearer-relative pose and placement.
SceneReconstructionProvider supplies public measured mesh anchors.
Triangles are transformed into box-local coordinates and clipped to all six planes.
Direct clipped topology is retained separately from capped display geometry.
Public scene reconstruction is environmental geometry and does not guarantee close-range body-surface or moving-person reconstruction.
The Standard target does not access or claim raw passthrough RGB.
When no measured public geometry intersects the box, the app reports that state and does not synthesize a replacement surface.

https://apps.apple.com/gr/app/surfacescanvisionstandard/id6804780503 SurfaceScanVisionStandard
AUTOMATIC IOS CAMERA CONNECTION TO APPLE VISION PRO
Consent gate
Every cold launch begins behind the full data-handling and subject-permission disclosure. Camera or spatial capture and nearby connection do not begin until both acknowledgements are accepted for the current launch.
Automatic iOS behavior
Acceptance sets an in-memory session flag and starts the SurfaceScan iOS nearby advertiser while the app is active. Visiting the connectivity page is no longer required. The user can stop or re-enable nearby streaming explicitly.
Automatic Vision Pro behavior
Acceptance sets an in-memory session flag and starts nearby discovery while the app is active. Native Vision mesh remains available while discovery runs. MCSession transport connection is not treated as application readiness. Each camera must first return a valid SurfaceScan hello containing the expected camera role, Build 40 identity, and wire protocol. Only then does Vision Pro switch to that paired iOS source, apply current box and quality settings to the newly verified camera once, send Start Capture, and request a preview. Start is a request. Paired monitoring is presented as Streaming only after the camera reports current consent, Camera permission, tracking, capture, and quality readiness.
Direct transport
The Apple targets use one Multipeer Connectivity service named surfacescan and declare the corresponding _surfacescan._tcp Bonjour service. MCSession requires encryption. Internal authorization is keyed by the peer identity rather than display name. A targeted hello is sent to each transport-connected peer and retried at a bounded cadence until the compatible role, product build, and protocol are verified. Commands, status, live RGB-D, preview meshes, and protected meshes are rejected before verification. Immediately before either MCSession send site, Build 40 also checks Apple’s authoritative transport membership. Cached application readiness alone is never sufficient. There is no Orthopractis cloud relay.
Framework advertiser or browser startup is limited to five attempts using delays of 1, 2, 4, 8, and 8 seconds. A still-known peer receives at most six re-invitations. SurfaceScan hello verification receives at most eight attempts and respects intentional pause state. Exhaustion leaves explicit Retry or Settings recovery and does not tear down unrelated verified cameras.
Transported content
Remote commands.
Capture and quality status.
Bounded live RGB-D point packets with colour, confidence, camera origin, rays, intrinsics, pose, timestamps, sequence, camera identifier, and box dimensions. These point samples are not unrestricted or full-resolution camera video.
Coalesced colour preview meshes.
Separately finalized protected meshes.
Safety and bounds
Up to six compatible camera peers are bounded by the design.
Live packets use unreliable replaceable delivery so stale preview traffic does not block newer frames.
Only the newest pending live frame is retained per verified peer, and it is drained between paced reliable mesh chunks.
The transport delegate identifies live binary packets promptly, coalesces only the newest encoded packet for a peer before property-list decoding, decodes it on the live codec queue, rechecks connection epoch and readiness, and performs fusion on a separate bounded fusion queue.
Packet size, point count, sequence, stale age, role, build, and protocol are checked.
Protected mesh transfer uses bounded chunks, part counts, an overall transfer ceiling, one active paced large transfer per peer, latest-preview coalescing, and latest-final supersession. Each chunk rechecks the peer’s current verified generation; a peer failure cancels only that peer’s pending transfer while other verified cameras remain available.
Incoming partial transfer state expires after 30 seconds and is bounded to 96 MiB and 32 incomplete transfers in aggregate. Oldest partial work is evicted when a bound must be recovered. Non-hello envelopes must belong to a current verified peer before transfer state is allocated.
If Apple no longer reports a participant connected, SurfaceScan quarantines that peer once, invalidates paced-transfer tokens, removes pending preview, final, and live payloads, removes its partial incoming transfers, updates visible readiness, and schedules at most one bounded reconnect while discovery remains enabled.
Unexpected disconnects clear authorization and stale packets, preserve current results, and schedule bounded exponential re-invitation while automatic discovery remains enabled. A peer must complete the hello again after reconnection.
Secondary cameras must pass overlap and registration error limits before contributing.
Guarded closest-ray triangulation is accepted only when rays are numerically well conditioned and agree with measured RGB-D.
Confidence-weighted voxel fusion or the best accepted source remains available when triangulation is unreliable.
Preview and final separation
Live RGB-D and preview meshes are display and fusion inputs. They do not by themselves authorize export. A final protected mesh is created after capture pauses and pending fusion drains. A Final estimated at no more than 48 MiB uses the complete transport route. A larger Final may be reduced to bounded transport budgets and is explicitly marked incomplete. Export requires a non-empty complete protected result and explicit review; an incomplete or transport-reduced Final remains locked until the operator reduces Mesh Resolution or detail and requests Final again.
Stop and fallback behavior
Stopping iOS automatic streaming stops nearby transport but preserves local camera capture, accumulated results, preview, Save, Share, and export.
Stopping Vision automatic search or choosing Disconnect returns to native Vision mesh when presentation state permits and preserves protected results.
Sustained paired-source loss returns to native measured Vision geometry while automatic discovery continues if the user has not stopped it. A lightweight health monitor reselects the paired source after verified RGB-D frames return, even when MCSession itself never emitted a new connection transition.
Short inactive transitions pause application payloads and rendering without immediately destroying a healthy encrypted peer session. visionOS uses one process-wide application lifecycle authority, so a restored auxiliary window cannot background the shared transport while another SurfaceScan scene is active. A real process background transition suspends advertiser, browser, capture providers, sampling, and rendering work. Foreground restoration preserves scan data and pairing intent.
The RealityView adds its attachment during one-time creation and does not remount it from the update closure. Translation, rotation, and magnification target only the box entity and its descendants. The translucent box keeps input and collision support without a hover component. Gesture-time entity refreshes are throttled and use non-forced presentation updates. Paired monitoring uses an 8,000-point sample every 520 milliseconds and an 18,000-triangle display copy. Editable LIVE work uses bounded construction budgets, while locked and complete Final data preserve the requested protected topology. Paired pause sends one authoritative Final request.
Learn how SurfaceScan connects an iPhone or iPad camera to Apple Vision Pro, how Android sharing works, and how to troubleshoot local capture.
QUESTION
What are the six connection steps?
ANSWER
Accept on both devices, allow Local Network and requested Camera or spatial permissions, keep both devices awake and nearby, wait for the verified encrypted link, wait for the iOS camera to acknowledge RGB-D Streaming, then choose Final for the separate protected mesh. LIVE preview alone does not unlock export.
QUESTION
How does iPhone or iPad connect to Apple Vision Pro?
ANSWER
Install SurfaceScan on both devices. Launch both apps and select both full-row acknowledgements on each device for the current launch. Grant Local Network and other requested permissions. The iPhone or iPad starts nearby availability and Apple Vision Pro starts discovery. The pair first establishes Apple’s encrypted local link; that state remains provisional while SurfaceScan verifies the camera and viewer roles, Build 40 identity, protocol, and current membership. Apple’s authoritative transport membership is checked immediately before every send. Vision Pro selects the verified iOS source, sends settings to that camera once, and requests capture. Streaming begins only after the camera acknowledges consent, Camera permission, tracking, and readiness.
QUESTION
What do Searching, Connecting, Verifying, Streaming, and Reconnecting mean?
ANSWER
Searching means Vision Pro is browsing automatically. Connecting means a compatible camera was found and Apple’s encrypted link is being established. Verifying means SurfaceScan is checking the role, build, and protocol before application data is accepted. Streaming means verified RGB-D frames are arriving. Reconnecting means existing results are safe while SurfaceScan retries a known compatible camera with bounded backoff.
QUESTION
Is there a QR code, account, password, or cloud relay?
ANSWER
No Orthopractis account, password, QR code, or cloud relay is required. The connection is direct between compatible nearby accepted Apple devices.
QUESTION
Does automatic connection bypass Apple permissions?
ANSWER
No. SurfaceScan cannot bypass Local Network, Camera, world-sensing, background, device, or operating-system rules. Automatic connection starts only after current-launch acceptance and still depends on required system permission.
QUESTION
What data is transferred between Apple devices?
ANSWER
The connection can transfer capture commands, settings, status, quality, bounded colour RGB-D point samples, calibration and pose information, colour previews, and separately finalized meshes. The iPhone or iPad remains the RGB-D camera and metric-fusion authority. SurfaceScan does not transmit unrestricted or full-resolution camera video over this route.
QUESTION
Can I stop automatic streaming?
ANSWER
Yes. On iPhone or iPad choose Stop automatic Vision streaming. On Apple Vision Pro choose Stop automatic camera search or Disconnect and use Vision mesh. Stopping nearby connectivity does not disable unrelated local capture, delete current results, or remove Preview, Save, Share, or export.
QUESTION
Why do both devices need Build 40?
ANSWER
Compatible product-build validation protects commands, packet formats, preview, and protected mesh transfer. An older or incompatible build is not accepted as a current camera or viewer.
QUESTION
Why is Local Network permission required?
ANSWER
Apple’s nearby peer discovery uses local-network services. If permission is denied, SurfaceScan cannot discover or connect the compatible camera and viewer. You can change permission in system Settings and relaunch the apps.
QUESTION
Why are devices not discovering each other?
ANSWER
Confirm the same Build 40 is installed, accept on both devices, grant Local Network access, keep both apps active and devices awake and nearby, enable Wi-Fi and Bluetooth, and avoid guest or managed networks that isolate peer devices. Re-enable automatic streaming or camera search if stopped. Restart both apps after changing system permission.
QUESTION
What happens when the connection drops?
ANSWER
Build 40 removes the stale participant from application readiness, cancels that peer’s queued chunks and live packet, preserves existing protected and preview results and other cameras, and retries with bounded backoff only while automatic discovery remains enabled. Every recovered connection must verify again before application traffic resumes. Apple Vision Pro retains native measured scene geometry as the fallback.
QUESTION
Why did the debug console report an invitation response for an invitation the app no longer recognized?
ANSWER
That can occur when an operating-system response arrives after an earlier nearby attempt has already been timed out, stopped, or replaced. Build 40 cancels pending peer connections before timeout or teardown, ignores callbacks from replaced browser or advertiser instances, and requires a fresh verified hello before data resumes. Use the in-app state rather than the isolated framework line to determine readiness.
If Apple's nearby advertiser or browser cannot start at all, SurfaceScan clears the failed object and retries after 1, 2, 4, 8, and 8 seconds. After five failed starts it keeps Retry Discovery and Settings visible instead of retrying indefinitely.
A still-known peer receives at most six re-invitations, and SurfaceScan hello verification receives at most eight attempts. After exhaustion, use Retry, open Settings, or wait for a genuinely fresh advertisement. Other verified cameras and preserved results remain available.
QUESTION
What happens during a system overlay or true background transition?
ANSWER
During a short inactive state or app-owned modal overlay, iOS keeps its main AR view mounted but pauses camera work, rendering, and outgoing payloads. A true process background or explicit camera-recovery state tears down the applicable camera or renderer and stops the nearby route safely. Foreground activation creates a fresh camera generation and restores enabled discovery and capture intent where permission and source readiness allow. Protected and preview results remain intact.
QUESTION
What happens if the iOS camera fails?
ANSWER
Build 40 rejects callbacks from the older camera generation, preserves the protected result and prior capture intent, shows a short bounded cooldown, and restarts only the camera session. Once tracking is healthy, the app resumes the previous LIVE or locked-capture intent. Retry cannot bypass Camera permission or operating-system restrictions.
QUESTION
Why can live display density or cadence decrease temporarily?
ANSWER
The normal, fair, serious, and critical resource governor can reduce regenerable live sampling, display cadence, display points, or presentation mesh size under thermal, memory, or sustained processing pressure. It does not modify the protected mesh, capture box, settings, or an already reviewable export result.
QUESTION
Do Backlight, PointerUI, TCP_INFO, or fence messages mean the SurfaceScan connection failed?
ANSWER
Not by themselves. Those messages originate in Apple system services or the compositor. PCT soft-mask capture messages and a hover recognizer waiting in the possible state can also be framework focus/composition diagnostics. Build 40 reduces app-owned work by using one full-window rectangular form, two full-row confirmations, an adaptive link grid, and opacity-only overlays. Use SurfaceScan’s in-app state and live-frame status to diagnose the app. A persistent Reconnecting state requires the permission, awake-device, Wi-Fi, Bluetooth, and network-isolation checks above. Build 40 also replaces the invalid link.badge.minus system-symbol request from the earlier UI.
A debugger ending with code 9 does not identify jetsam, watchdog, debugger termination, or another cause by itself. If the process terminates again on a physical device, collect the matching .ips, JetsamEvent, or watchdog report and include the reproduction steps.
QUESTION
Can more than one iPhone or iPad camera connect?
ANSWER
The architecture bounds compatible camera peers to six. Additional cameras contribute only after sequence, overlap, registration, and error checks. Reliable measured RGB-D fusion remains available when guarded triangulation is not suitable. Multi-camera use requires physical-device validation for the intended environment.
QUESTION
Can live preview be exported immediately?
ANSWER
No. Live RGB-D and coalesced previews are display and fusion inputs. Export on Apple Vision Pro requires a separate complete non-empty protected final mesh and explicit review. A Final estimated above 48 MiB may be transport-reduced and marked incomplete; export remains locked until the operator reduces Mesh Resolution or detail and requests a complete Final.
QUESTION
Does Android connect live to Apple Vision Pro?
ANSWER
No. The live SurfaceScan Vision bridge uses Apple platform frameworks. Android remains a complete standalone ARCore RGB-D capture and export edition. Save or share PLY, OBJ, STL, or USDZ through Android’s system interfaces for later import on compatible systems.
QUESTION
Does Android upload scans?
ANSWER
SurfaceScan does not provide an Orthopractis scan server or automatic upload. Camera, depth, fusion, preview, and file creation are local. Google Play Services for AR has separate Google data practices disclosed in the Privacy Policy. A file leaves SurfaceScan only when you choose Save or Share.
QUESTION
Which export format should I use?
ANSWER
Use PLY for metric vertices, colour, and triangles. Use OBJ for broad mesh compatibility and vertex-colour extension. Use STL when geometry-only output is required. Use USDZ for Apple-compatible metric 3D geometry and display colour when available.
QUESTION
Why is the native Vision Pro result empty?
ANSWER
Standard mode depends on public measured scene reconstruction. Reposition the box over a stable reconstructed surface. Public scene reconstruction may omit people or close-range body surfaces and may not represent hair, reflective or transparent surfaces, or other close-range objects. SurfaceScan does not invent geometry when the source is empty.
QUESTION
Is SurfaceScan a medical device?
ANSWER
No. SurfaceScan is a surface digitisation and 3D documentation utility. It does not diagnose, screen, monitor, predict disease, or recommend treatment. Any professional or safety-sensitive use requires independent validation and applicable approval.
QUESTION
Why does consent appear every launch?
ANSWER
Camera-derived surface information and exported files may be identifiable. The disclosure confirms processing, platform connectivity, file responsibility, and subject permission before capture begins for the current launch.
SUPPORT
Email: info@orthopractis.com
Support page: https://www.orthopractis.com/surfacescan#support
Privacy: https://www.orthopractis.com/privacy
Terms: https://www.orthopractis.com/terms-of-use
![]() | ![]() | ![]() | ![]() |
|---|---|---|---|
![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() |
![]() |



















.png)