@vincentt-xr/sdk 2.0.0-alpha.0 → 2.0.0-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (362) hide show
  1. package/GROUNDING.md +1813 -27
  2. package/dist/{DebuggerUI-CEfdddkZ.cjs → DebuggerUI-B45_Gb9d.cjs} +1 -1
  3. package/dist/{DebuggerUI-Dgop6Q6o.js → DebuggerUI-Cq28c18s.js} +1 -1
  4. package/dist/FaceMeshRenderer-6t8OsQhK.js +1195 -0
  5. package/dist/FaceMeshRenderer-lQLhYIW-.cjs +155 -0
  6. package/dist/FaceRetouch-CDrL0pXg.js +551 -0
  7. package/dist/FaceRetouch-DtNl8-4e.cjs +134 -0
  8. package/dist/audio/AudioEngine.d.ts +3 -1
  9. package/dist/audio/AudioPlayer.d.ts +29 -0
  10. package/dist/audio/AudioPlayerLogic.d.ts +4 -0
  11. package/dist/audio/index.d.ts +2 -0
  12. package/dist/components/Axes/index.d.ts +6 -0
  13. package/dist/components/FaceMesh/FaceMeshRenderer.d.ts +17 -0
  14. package/dist/components/FaceMesh/canonical/CanonicalFaceMeshRenderer.d.ts +22 -1
  15. package/dist/components/FaceMesh/canonical/FaceMeshMaterial.d.ts +25 -0
  16. package/dist/components/FaceMesh/canonical/assets.d.ts +3 -0
  17. package/dist/components/FaceMesh/canonical/geometryGroups.d.ts +9 -0
  18. package/dist/components/FaceMesh/canonical/parseCanonicalFaceModel.d.ts +2 -0
  19. package/dist/components/FaceMesh/canonical/shaders.d.ts +2 -0
  20. package/dist/components/FaceMesh/deform.d.ts +3 -0
  21. package/dist/components/FaceMesh/index.d.ts +5 -0
  22. package/dist/components/FaceMesh/material/defaults.d.ts +74 -0
  23. package/dist/components/FaceMesh/material/index.d.ts +1 -0
  24. package/dist/components/FaceMesh/material/options.d.ts +5 -1
  25. package/dist/components/FaceMesh/material/support.d.ts +7 -2
  26. package/dist/components/FaceMesh/material/textures.d.ts +4 -0
  27. package/dist/components/FaceMesh/material/types.d.ts +4 -2
  28. package/dist/components/FaceRetouch/Background.d.ts +9 -5
  29. package/dist/components/FaceRetouch/FaceRetouch.d.ts +47 -0
  30. package/dist/components/FaceRetouch/index.d.ts +2 -6
  31. package/dist/components/FaceRetouch/landmarkMask.d.ts +4 -6
  32. package/dist/components/FaceRetouch/useFaceRetouchMask.d.ts +4 -7
  33. package/dist/components/FaceTracker/index.d.ts +5 -3
  34. package/dist/components/FaceWarp3D/FaceWarp3DHead.d.ts +15 -0
  35. package/dist/components/FaceWarp3D/defaults.d.ts +37 -0
  36. package/dist/components/FaceWarp3D/index.d.ts +3 -0
  37. package/dist/components/FaceWarp3D/warp.d.ts +13 -0
  38. package/dist/components/HandJoints2D/index.d.ts +6 -0
  39. package/dist/components/HandTracker/index.d.ts +2 -2
  40. package/dist/components/HandTracking2D/HandVisual.d.ts +12 -0
  41. package/dist/components/HandTracking2D/index.d.ts +5 -0
  42. package/dist/components/HandTracking2DController/index.d.ts +5 -0
  43. package/dist/components/HandTracking3D/index.d.ts +6 -0
  44. package/dist/components/LightObject/index.d.ts +20 -0
  45. package/dist/components/LookAt/index.d.ts +23 -0
  46. package/dist/components/MeshRenderer/index.d.ts +58 -0
  47. package/dist/components/PerspectiveCamera/index.d.ts +2 -8
  48. package/dist/components/PinToMesh/index.d.ts +47 -0
  49. package/dist/components/RenderGroupLayer/index.d.ts +6 -0
  50. package/dist/components/SceneObjectRenderer/index.d.ts +16 -0
  51. package/dist/components/Screen2D/ScreenTransformFrame.d.ts +11 -0
  52. package/dist/components/Screen2D/ScreenTransformHelpers.d.ts +19 -0
  53. package/dist/components/Screen2D/ScreenTransformInteraction.d.ts +18 -0
  54. package/dist/components/Screen2D/index.d.ts +5 -0
  55. package/dist/components/ScreenGlass/defaults.d.ts +3 -0
  56. package/dist/components/ScreenGlass/index.d.ts +5 -0
  57. package/dist/components/ScreenGlass/shaders.d.ts +2 -0
  58. package/dist/components/ScreenGlass/types.d.ts +10 -0
  59. package/dist/components/ScreenGradient/defaults.d.ts +5 -0
  60. package/dist/components/ScreenGradient/index.d.ts +5 -0
  61. package/dist/components/ScreenGradient/shaders.d.ts +2 -0
  62. package/dist/components/ScreenGradient/types.d.ts +19 -0
  63. package/dist/components/ScreenImage/ScreenImage.d.ts +4 -0
  64. package/dist/components/ScreenImage/components/DynamicTextureSync.d.ts +9 -0
  65. package/dist/components/ScreenImage/components/ScreenImageBody.d.ts +9 -0
  66. package/dist/components/ScreenImage/components/ScreenImageFrame.d.ts +9 -0
  67. package/dist/components/ScreenImage/components/ScreenImageTransformFrame.d.ts +9 -0
  68. package/dist/components/ScreenImage/fit.d.ts +52 -0
  69. package/dist/components/ScreenImage/index.d.ts +8 -0
  70. package/dist/components/ScreenImage/materials/ScreenImageBlendMaterial.d.ts +9 -0
  71. package/dist/components/ScreenImage/materials/ScreenImageMatcap.d.ts +3 -0
  72. package/dist/components/ScreenImage/source.d.ts +16 -0
  73. package/dist/components/ScreenImage/types.d.ts +37 -0
  74. package/dist/components/ScreenImage/utils/ScreenImageConstants.d.ts +9 -0
  75. package/dist/components/ScreenImage/utils/ScreenImageHelpers.d.ts +4 -0
  76. package/dist/components/ScreenShape/geometry.d.ts +5 -0
  77. package/dist/components/ScreenShape/index.d.ts +5 -0
  78. package/dist/components/ScreenShape/types.d.ts +41 -0
  79. package/dist/components/ScreenSpaceUI/ScreenTransformGuide.d.ts +15 -0
  80. package/dist/components/ScreenSpaceUI/ScreenTransformOverlayGuide.d.ts +9 -0
  81. package/dist/components/ScreenSpaceUI/index.d.ts +2 -0
  82. package/dist/components/ScreenText/components/ScreenTextBody.d.ts +2 -0
  83. package/dist/components/ScreenText/components/ScreenTextTransformFrame.d.ts +9 -0
  84. package/dist/components/ScreenText/constants.d.ts +5 -0
  85. package/dist/components/ScreenText/index.d.ts +6 -0
  86. package/dist/components/ScreenText/types.d.ts +31 -0
  87. package/dist/components/ScreenText/utils/ScreenTextHelpers.d.ts +14 -0
  88. package/dist/components/ScreenText/utils/ScreenTextMappings.d.ts +17 -0
  89. package/dist/components/SequentialRenderPasses/index.d.ts +6 -0
  90. package/dist/components/TextLabel/TextLabel.d.ts +5 -0
  91. package/dist/components/TextLabel/alignment.d.ts +4 -0
  92. package/dist/components/TextLabel/bend.d.ts +9 -0
  93. package/dist/components/TextLabel/canvas/buildTextLabelTexture.d.ts +4 -0
  94. package/dist/components/TextLabel/canvas/canvasTypography.d.ts +13 -0
  95. package/dist/components/TextLabel/canvas/drawBackground.d.ts +21 -0
  96. package/dist/components/TextLabel/canvas/drawEffects.d.ts +34 -0
  97. package/dist/components/TextLabel/canvas/drawText.d.ts +19 -0
  98. package/dist/components/TextLabel/components/TextLabelMesh.d.ts +13 -0
  99. package/dist/components/TextLabel/constants.d.ts +2 -0
  100. package/dist/components/TextLabel/hooks/useTextLabelTexture.d.ts +7 -0
  101. package/dist/components/TextLabel/index.d.ts +2 -62
  102. package/dist/components/TextLabel/layout/measurement.d.ts +8 -0
  103. package/dist/components/TextLabel/layout/resolveTextLayout.d.ts +25 -0
  104. package/dist/components/TextLabel/layout/wrapText.d.ts +6 -0
  105. package/dist/components/TextLabel/types.d.ts +227 -0
  106. package/dist/components/TrackingAnchor/index.d.ts +18 -2
  107. package/dist/components/Transform3D/index.d.ts +30 -0
  108. package/dist/components/XRMediaSurface/index.d.ts +6 -6
  109. package/dist/components/XRScene/index.d.ts +14 -3
  110. package/dist/components/XRViewport/XRViewport.d.ts +11 -0
  111. package/dist/components/XRViewport/components/HiddenMedia.d.ts +7 -0
  112. package/dist/components/XRViewport/components/MediaAssetPicker.d.ts +8 -0
  113. package/dist/components/XRViewport/components/MediaControlStack.d.ts +13 -0
  114. package/dist/components/XRViewport/components/XRViewportLayers.d.ts +30 -0
  115. package/dist/components/XRViewport/constants.d.ts +24 -0
  116. package/dist/components/XRViewport/contexts.d.ts +6 -0
  117. package/dist/components/XRViewport/hooks/useViewportExternalFaces.d.ts +13 -0
  118. package/dist/components/XRViewport/hooks/useViewportMediaSource.d.ts +16 -0
  119. package/dist/components/XRViewport/hooks/useViewportMediaTexture.d.ts +10 -0
  120. package/dist/components/XRViewport/hooks/useViewportPipeline.d.ts +41 -0
  121. package/dist/components/XRViewport/hooks/useViewportRenderState.d.ts +47 -0
  122. package/dist/components/XRViewport/index.d.ts +3 -101
  123. package/dist/components/XRViewport/layout.d.ts +16 -0
  124. package/dist/components/XRViewport/slots.d.ts +16 -0
  125. package/dist/components/XRViewport/types.d.ts +89 -0
  126. package/dist/components/XRViewport/useViewportSize.d.ts +3 -0
  127. package/dist/components/index.d.ts +19 -0
  128. package/dist/contexts-BKvTIayr.cjs +1 -0
  129. package/dist/contexts-Bk5zz_VR.js +214 -0
  130. package/dist/debug-ui/component-editor/index.d.ts +19 -0
  131. package/dist/debug-ui/default-setting/index.d.ts +37 -0
  132. package/dist/debug-ui/default-setting.cjs +21 -0
  133. package/dist/debug-ui/default-setting.js +777 -0
  134. package/dist/debug-ui/face-mesh-renderer-settings/index.d.ts +8 -0
  135. package/dist/debug-ui/face-retouch/index.d.ts +11 -0
  136. package/dist/debug-ui/face-warp-3d/index.d.ts +6 -0
  137. package/dist/debug-ui/hand-joints-2d/index.d.ts +6 -0
  138. package/dist/debug-ui/hand-tracking-2d/index.d.ts +6 -0
  139. package/dist/debug-ui/hand-tracking-2d-controller/index.d.ts +6 -0
  140. package/dist/debug-ui/hand-tracking-3d/index.d.ts +6 -0
  141. package/dist/debug-ui/hierarchy-panel/index.d.ts +29 -0
  142. package/dist/debug-ui/index.d.ts +46 -0
  143. package/dist/debug-ui/layer-panel/index.d.ts +18 -0
  144. package/dist/debug-ui/media-source/MediaSourceSwitcher.d.ts +10 -0
  145. package/dist/debug-ui/media-source/index.d.ts +6 -0
  146. package/dist/debug-ui/media-source/media-preset.d.ts +9 -0
  147. package/dist/debug-ui/media-source/session.d.ts +12 -0
  148. package/dist/debug-ui/media-source.cjs +1 -0
  149. package/dist/debug-ui/media-source.js +9 -0
  150. package/dist/debug-ui/mesh-renderer-settings/index.d.ts +6 -0
  151. package/dist/debug-ui/object-inspector-panel/index.d.ts +25 -0
  152. package/dist/debug-ui/pin-to-mesh-settings/index.d.ts +10 -0
  153. package/dist/debug-ui/scene-editor/context.d.ts +38 -0
  154. package/dist/debug-ui/scene-editor/hierarchy-panel.d.ts +9 -0
  155. package/dist/debug-ui/scene-editor/index.d.ts +11 -0
  156. package/dist/debug-ui/scene-editor/inspector-panel.d.ts +7 -0
  157. package/dist/debug-ui/scene-editor/store-utils.d.ts +2 -0
  158. package/dist/debug-ui/scene-editor/viewport-toolbar.d.ts +4 -0
  159. package/dist/debug-ui/scene-editor/viewport.d.ts +21 -0
  160. package/dist/debug-ui/screen-glass-settings/index.d.ts +6 -0
  161. package/dist/debug-ui/screen-gradient-settings/GradientStopsEditor.d.ts +5 -0
  162. package/dist/debug-ui/screen-gradient-settings/index.d.ts +6 -0
  163. package/dist/debug-ui/screen-gradient-settings/styles.d.ts +3 -0
  164. package/dist/debug-ui/screen-image-settings/index.d.ts +9 -0
  165. package/dist/debug-ui/screen-shape-settings/index.d.ts +6 -0
  166. package/dist/debug-ui/screen-text-settings/NumberField.d.ts +9 -0
  167. package/dist/debug-ui/screen-text-settings/ScreenTextSettingsPanel.d.ts +3 -0
  168. package/dist/debug-ui/screen-text-settings/controls/NestedSection.d.ts +7 -0
  169. package/dist/debug-ui/screen-text-settings/controls/Section.d.ts +8 -0
  170. package/dist/debug-ui/screen-text-settings/controls/icons.d.ts +4 -0
  171. package/dist/debug-ui/screen-text-settings/index.d.ts +2 -0
  172. package/dist/debug-ui/screen-text-settings/sections/BackgroundSection.d.ts +8 -0
  173. package/dist/debug-ui/screen-text-settings/sections/ContentSection.d.ts +5 -0
  174. package/dist/debug-ui/screen-text-settings/sections/EffectsSection.d.ts +25 -0
  175. package/dist/debug-ui/screen-text-settings/sections/StyleSection.d.ts +5 -0
  176. package/dist/debug-ui/screen-text-settings/sections/TransformSection.d.ts +5 -0
  177. package/dist/debug-ui/screen-text-settings/sections/background/BackgroundFillControls.d.ts +2 -0
  178. package/dist/debug-ui/screen-text-settings/sections/background/BackgroundSizeControls.d.ts +2 -0
  179. package/dist/debug-ui/screen-text-settings/sections/background/BackgroundStrokeControls.d.ts +2 -0
  180. package/dist/debug-ui/screen-text-settings/sections/background/types.d.ts +7 -0
  181. package/dist/debug-ui/screen-text-settings/sections/effects/BendEffectSection.d.ts +4 -0
  182. package/dist/debug-ui/screen-text-settings/sections/effects/EffectChrome.d.ts +21 -0
  183. package/dist/debug-ui/screen-text-settings/sections/effects/GlowEffectSection.d.ts +4 -0
  184. package/dist/debug-ui/screen-text-settings/sections/effects/InnerShadowEffectSection.d.ts +4 -0
  185. package/dist/debug-ui/screen-text-settings/sections/effects/OutlineEffectSection.d.ts +4 -0
  186. package/dist/debug-ui/screen-text-settings/sections/effects/ShadowEffectSection.d.ts +4 -0
  187. package/dist/debug-ui/screen-text-settings/sections/effects/types.d.ts +14 -0
  188. package/dist/debug-ui/screen-text-settings/settings.d.ts +90 -0
  189. package/dist/debug-ui/screen-text-settings/styles.d.ts +26 -0
  190. package/dist/debug-ui/screen-text-settings/transform.d.ts +6 -0
  191. package/dist/debug-ui/screen-text-settings/types.d.ts +9 -0
  192. package/dist/debug-ui/settings-panel/index.d.ts +38 -0
  193. package/dist/debug-ui/shared/MaterialSection.d.ts +13 -0
  194. package/dist/debug-ui/shared/ScreenTransformSection.d.ts +32 -0
  195. package/dist/debug-ui/transform-3d-settings/index.d.ts +11 -0
  196. package/dist/debug-ui.cjs +10 -0
  197. package/dist/debug-ui.js +8861 -0
  198. package/dist/drawNormalizedCrop-B-7zU-Xw.cjs +1 -0
  199. package/dist/drawNormalizedCrop-CRdIDyl1.js +44 -0
  200. package/dist/entries/all.d.ts +1 -0
  201. package/dist/entries/core.d.ts +55 -4
  202. package/dist/entries/face-effects.d.ts +12 -8
  203. package/dist/entries/internal.d.ts +1 -1
  204. package/dist/entries/low-level.d.ts +21 -4
  205. package/dist/entries/scene-object.d.ts +10 -0
  206. package/dist/entries/tracking.d.ts +25 -2
  207. package/dist/face-action/index.d.ts +34 -0
  208. package/dist/face-attribute-expression/index.d.ts +10 -0
  209. package/dist/face-effects.cjs +1 -252
  210. package/dist/face-effects.js +1404 -2613
  211. package/dist/face-info/blendshapes.d.ts +3 -0
  212. package/dist/face-info/derive.d.ts +8 -0
  213. package/dist/face-info/drawFaceCrop.d.ts +10 -0
  214. package/dist/face-info/getFaceInfo.d.ts +8 -0
  215. package/dist/face-info/index.d.ts +8 -0
  216. package/dist/face-info/landmarks.d.ts +21 -0
  217. package/dist/face-info/types.d.ts +52 -0
  218. package/dist/getFaceInfo-CyPAKh3h.cjs +1 -0
  219. package/dist/getFaceInfo-hUKMLFcr.js +118 -0
  220. package/dist/hand/handJoints2d.d.ts +49 -0
  221. package/dist/hand/handTracking2d.d.ts +33 -0
  222. package/dist/hand/handTracking2dController.d.ts +65 -0
  223. package/dist/hand/handTracking3d.d.ts +52 -0
  224. package/dist/hooks/faceResults.d.ts +1 -1
  225. package/dist/hooks/useCalibrationFaceTracker.d.ts +1 -1
  226. package/dist/hooks/useFaceAction.d.ts +3 -0
  227. package/dist/hooks/useFaceAttributeExpression.d.ts +16 -0
  228. package/dist/hooks/useFaceDetection.d.ts +18 -0
  229. package/dist/hooks/useFaceInfo.d.ts +7 -0
  230. package/dist/hooks/useFaceInfos.d.ts +15 -0
  231. package/dist/hooks/useFaceResultReader.d.ts +10 -0
  232. package/dist/hooks/useFrameCapture.d.ts +18 -0
  233. package/dist/hooks/useMediaRecorder.d.ts +14 -2
  234. package/dist/hooks/useOwnedTexture.d.ts +6 -0
  235. package/dist/hooks/useTrackerContext.d.ts +2 -2
  236. package/dist/hooks/useXRSession/facade.d.ts +3 -0
  237. package/dist/hooks/useXRSession/registry.d.ts +9 -0
  238. package/dist/index-82aENaRq.cjs +1 -0
  239. package/dist/{index-BD-JWMjE.js → index-BgQAX8rs.js} +198 -134
  240. package/dist/index-CEc1CAmB.cjs +1 -0
  241. package/dist/index-CTHeBQOs.js +178 -0
  242. package/dist/index-D4bLzBr6.cjs +1 -0
  243. package/dist/index-DSpzjuqd.cjs +1 -0
  244. package/dist/index-Di70KWuY.js +2049 -0
  245. package/dist/index-DzEzkBIH.cjs +17 -0
  246. package/dist/{index-CYMj26Ej.js → index-JygePOwo.js} +565 -498
  247. package/dist/index-UC0Ux38E.js +111 -0
  248. package/dist/{internal-KOKJDxCG.js → internal-DuMPpcbp.js} +86 -80
  249. package/dist/internal-i2JkM85N.cjs +1 -0
  250. package/dist/internal.cjs +1 -1
  251. package/dist/internal.js +2 -2
  252. package/dist/low-level.cjs +1 -1
  253. package/dist/low-level.js +959 -632
  254. package/dist/main.cjs +1 -1
  255. package/dist/main.js +556 -455
  256. package/dist/material/MaterialFill.d.ts +20 -0
  257. package/dist/material/MeshMaterial.d.ts +14 -0
  258. package/dist/material/index.d.ts +2 -0
  259. package/dist/models/Body/index.d.ts +1 -1
  260. package/dist/models/Face/index.d.ts +1 -0
  261. package/dist/models/Face/rotation.d.ts +3 -0
  262. package/dist/models/Hand/HandTracking.d.ts +2 -0
  263. package/dist/render/layerStack.d.ts +29 -0
  264. package/dist/render/renderGroups.d.ts +47 -0
  265. package/dist/render/renderPasses.d.ts +18 -0
  266. package/dist/renderGroups-C9QJrAXu.js +152 -0
  267. package/dist/renderGroups-Dvm1J4lW.cjs +1 -0
  268. package/dist/renderLayers-lDtL0_43.cjs +1 -0
  269. package/dist/renderLayers-zrK2pv5O.js +13 -0
  270. package/dist/renderPasses-CT5iBwtg.cjs +21 -0
  271. package/dist/renderPasses-CjgG_6kQ.js +1500 -0
  272. package/dist/scene-object/index.d.ts +146 -0
  273. package/dist/scene-object/runtimeRegistry.d.ts +14 -0
  274. package/dist/scene-object.cjs +1 -0
  275. package/dist/scene-object.js +40 -0
  276. package/dist/screen-image/screenImagePresets.d.ts +13 -0
  277. package/dist/screen-image/screenImageSettings.d.ts +57 -0
  278. package/dist/screen-text/screenTextPresets.d.ts +6 -0
  279. package/dist/screen-text/screenTextSettings.d.ts +147 -0
  280. package/dist/screen2d/coordinates.d.ts +87 -0
  281. package/dist/screen2d/index.d.ts +7 -0
  282. package/dist/screen2d/material-runtime.d.ts +32 -0
  283. package/dist/screen2d/screenTransform.d.ts +47 -0
  284. package/dist/screen2d/smoothing.d.ts +5 -0
  285. package/dist/screen2d/texture.d.ts +10 -0
  286. package/dist/screen2d/transform.d.ts +25 -0
  287. package/dist/screen2d/types.d.ts +90 -0
  288. package/dist/{selectors-Bub0o3qy.cjs → selectors-2QvO5RYY.cjs} +1 -1
  289. package/dist/{selectors-BHO6TnoC.js → selectors-Dw3C-gSk.js} +5 -5
  290. package/dist/services/MetricsCollector/index.d.ts +7 -1
  291. package/dist/services/MetricsCollector/utils.d.ts +1 -1
  292. package/dist/session-BChR4TgK.cjs +31 -0
  293. package/dist/session-C1StwN0f.js +363 -0
  294. package/dist/texture/animatedTexture.d.ts +61 -0
  295. package/dist/texture/animationMath.d.ts +8 -0
  296. package/dist/texture/sourceResolver.d.ts +30 -0
  297. package/dist/tracking.cjs +1 -1
  298. package/dist/tracking.js +582 -298
  299. package/dist/types/face.d.ts +1 -13
  300. package/dist/types/hand-tracking.d.ts +8 -0
  301. package/dist/types/index.d.ts +0 -1
  302. package/dist/types/nodes.d.ts +4 -1
  303. package/dist/types/session.d.ts +2 -0
  304. package/dist/types/tracking.d.ts +8 -2
  305. package/dist/types/util-types.d.ts +1 -1
  306. package/dist/useFaceInfo-C-WfMlYp.cjs +1 -0
  307. package/dist/useFaceInfo-CwsHZedC.js +62 -0
  308. package/dist/useFaceResults-CkFc1egZ.js +19 -0
  309. package/dist/useFaceResults-VcFdOUFV.cjs +1 -0
  310. package/dist/utils/drawNormalizedCrop.d.ts +22 -0
  311. package/dist/utils/integrity.d.ts +4 -25
  312. package/dist/utils/landmarkBounds.d.ts +1 -1
  313. package/dist/utils/logger.d.ts +2 -2
  314. package/dist/x-Co8jPhP0.js +127 -0
  315. package/dist/x-KC8E4Gaj.cjs +41 -0
  316. package/docs/MIGRATION_GUIDE.md +589 -0
  317. package/docs/SDK_DOCUMENTATION.md +1155 -0
  318. package/docs/api/audio.mdx +36 -0
  319. package/docs/api/behavior-components.mdx +164 -0
  320. package/docs/api/capture-recording.mdx +103 -0
  321. package/docs/api/debug-ui-scene-editor.mdx +249 -0
  322. package/docs/api/face-actions.mdx +104 -0
  323. package/docs/api/face-attribute-expression.mdx +87 -0
  324. package/docs/api/face-binding-anchors.mdx +53 -0
  325. package/docs/api/face-effects.mdx +19 -0
  326. package/docs/api/face-info.mdx +112 -0
  327. package/docs/api/face-mesh.mdx +98 -0
  328. package/docs/api/face-painting.mdx +33 -0
  329. package/docs/api/face-retouching.mdx +73 -0
  330. package/docs/api/material-render-state.mdx +132 -0
  331. package/docs/api/runtime-3d.mdx +311 -0
  332. package/docs/api/scene-object-store.mdx +213 -0
  333. package/docs/api/screen-image.mdx +41 -0
  334. package/docs/api/screen-shape.mdx +64 -0
  335. package/docs/api/screen-space-coordinates.mdx +41 -0
  336. package/docs/api/screen-text.mdx +39 -0
  337. package/docs/api/texture-sources.mdx +55 -0
  338. package/docs/api/trackers.mdx +46 -0
  339. package/docs/docs.json +70 -0
  340. package/docs/examples/scene-object-recipes.mdx +194 -0
  341. package/docs/guides/harness-debug-ui.mdx +139 -0
  342. package/docs/inspector/hierarchy-panel.mdx +51 -0
  343. package/docs/inspector/object-inspector-panel.mdx +51 -0
  344. package/docs/introduction.mdx +121 -0
  345. package/docs/scene-objects/overview.mdx +127 -0
  346. package/docs/scene-objects/render-groups.mdx +77 -0
  347. package/docs/scene-objects/runtime-rendering.mdx +75 -0
  348. package/docs/texture-api-consumer.md +58 -0
  349. package/package.json +55 -7
  350. package/dist/components/FaceRetouch/retouchRegions.d.ts +0 -23
  351. package/dist/components/FaceRetouch/useFaceRetouchRegions.d.ts +0 -12
  352. package/dist/index-B5J4gzn2.cjs +0 -1
  353. package/dist/index-BVBVg96G.cjs +0 -1
  354. package/dist/index-DtwHElmG.js +0 -157
  355. package/dist/index-PtFmD6B8.cjs +0 -1
  356. package/dist/internal-DH5d1Xnq.cjs +0 -1
  357. package/dist/modules/XRClient/index.d.ts +0 -9
  358. package/dist/modules/index.d.ts +0 -1
  359. package/dist/services/ApiService.d.ts +0 -12
  360. package/dist/types/client.d.ts +0 -3
  361. package/dist/useFaceResults-cpsSmKKc.js +0 -81
  362. package/dist/useFaceResults-hVUJYSEY.cjs +0 -1
@@ -0,0 +1,311 @@
1
+ ---
2
+ title: "Runtime 3D API"
3
+ description: "Core runtime components for serialized 3D scene objects: Transform3D, MeshRenderer, LightObject, LookAt, PinToMesh, VideoBackground, and SceneObjectRenderer."
4
+ sidebarTitle: "Runtime 3D"
5
+ icon: "cube"
6
+ ---
7
+
8
+ Import runtime components from `@vincentt-xr/sdk`.
9
+
10
+ ```tsx
11
+ import {
12
+ DEFAULT_MESH_RENDERER,
13
+ DEFAULT_MESH_RENDERER_RENDER_STATE,
14
+ LightObject,
15
+ LookAt,
16
+ MeshRenderer,
17
+ PinToMesh,
18
+ SceneObjectRenderer,
19
+ Transform3D,
20
+ VideoBackground,
21
+ } from "@vincentt-xr/sdk";
22
+ ```
23
+
24
+ `DEFAULT_MESH_RENDERER` and `DEFAULT_MESH_RENDERER_RENDER_STATE` are exported
25
+ for serialized scene construction and editor defaults.
26
+
27
+ ## `Transform3D`
28
+
29
+ Applies authored 3D transform state to its children.
30
+
31
+ ```ts
32
+ type Transform3DSettings = {
33
+ enabled: boolean;
34
+ visible: boolean;
35
+ position: { x: number; y: number; z: number };
36
+ rotation: { x: number; y: number; z: number }; // degrees
37
+ scale: { x: number; y: number; z: number };
38
+ showTransformControls?: boolean;
39
+ transformControlMode?: "translate" | "rotate" | "scale";
40
+ transformControlSpace?: "local" | "world";
41
+ };
42
+ ```
43
+
44
+ ```tsx
45
+ <Transform3D value={transformSettings} onChange={setTransformSettings}>
46
+ <MeshRenderer value={meshRendererSettings} />
47
+ </Transform3D>
48
+ ```
49
+
50
+ ## `MeshRenderer`
51
+
52
+ Renders a primitive mesh or GLTF/GLB asset.
53
+
54
+ ```ts
55
+ type MeshRendererSettings = {
56
+ enabled: boolean;
57
+ visible: boolean;
58
+ mesh: "cube" | "sphere" | "plane";
59
+ assetUrl?: string;
60
+ assetNodeName?: string;
61
+ material: {
62
+ type: "standard" | "basic";
63
+ color: string;
64
+ opacity: number;
65
+ wireframe: boolean;
66
+ roughness: number;
67
+ metalness: number;
68
+ renderState?: Partial<MeshRendererRenderState>;
69
+ };
70
+ shadowMode: "off" | "cast" | "receive" | "castReceive";
71
+ };
72
+ ```
73
+
74
+ ```tsx
75
+ <MeshRenderer
76
+ value={{
77
+ ...DEFAULT_MESH_RENDERER,
78
+ mesh: "plane",
79
+ material: {
80
+ ...DEFAULT_MESH_RENDERER.material,
81
+ color: "#1b2733",
82
+ renderState: {
83
+ depthTest: true,
84
+ depthWrite: true,
85
+ cullMode: "off",
86
+ },
87
+ },
88
+ shadowMode: "receive",
89
+ }}
90
+ />
91
+ ```
92
+
93
+ ### `MeshRendererRenderState`
94
+
95
+ Render-state fields map to Three.js material or scoped WebGL draw state.
96
+
97
+ ```ts
98
+ type MeshRendererRenderState = {
99
+ depthTest: boolean;
100
+ depthWrite: boolean;
101
+ depthFunc:
102
+ | "never"
103
+ | "less"
104
+ | "equal"
105
+ | "lessEqual"
106
+ | "greater"
107
+ | "notEqual"
108
+ | "greaterEqual"
109
+ | "always";
110
+ colorWrite: boolean;
111
+ colorMask: { r: boolean; g: boolean; b: boolean; a: boolean };
112
+ cullMode: "back" | "front" | "off";
113
+ blendMode: "normal" | "additive" | "subtractive" | "multiply" | "none";
114
+ polygonOffset: {
115
+ enabled: boolean;
116
+ factor: number;
117
+ units: number;
118
+ };
119
+ };
120
+ ```
121
+
122
+ Defaults preserve standard Three.js behavior:
123
+
124
+ ```ts
125
+ {
126
+ depthTest: true,
127
+ depthWrite: true,
128
+ depthFunc: "lessEqual",
129
+ colorWrite: true,
130
+ colorMask: { r: true, g: true, b: true, a: true },
131
+ cullMode: "back",
132
+ blendMode: "normal",
133
+ polygonOffset: { enabled: false, factor: 0, units: 0 },
134
+ }
135
+ ```
136
+
137
+ Notes:
138
+
139
+ - `wireframe` belongs to material state, not geometry state.
140
+ - `colorMask` is per-channel RGBA write control. It is applied around each mesh
141
+ draw and restored after render.
142
+ - GLTF materials are cloned before SDK material overrides are applied.
143
+ - `instanceCount` is not material state; it belongs to a future instanced-mesh
144
+ API.
145
+
146
+ ## `VideoBackground`
147
+
148
+ Renders the camera feed as a flat background. It intentionally does not expose
149
+ depth-test/depth-write props.
150
+
151
+ ```tsx
152
+ <VideoBackground
153
+ segmentationMask={maskTexture}
154
+ segmentation="portrait"
155
+ customBackground="#6366f1"
156
+ renderOrder={-999}
157
+ />
158
+ ```
159
+
160
+ Use the debug-ui `XRSceneViewport` when the camera feed should behave as a real
161
+ 3D plane in an editor. That viewport owns a separate depth-writing
162
+ camera-texture plane without changing `VideoBackground` semantics.
163
+
164
+ ## `LightObject`
165
+
166
+ Renders a light from serialized settings plus a `Transform3D` position/rotation.
167
+
168
+ ```ts
169
+ type LightSettings = {
170
+ enabled: boolean;
171
+ type: "ambient" | "directional" | "point" | "spot";
172
+ color: string;
173
+ intensity: number;
174
+ castShadow: boolean;
175
+ distance: number;
176
+ angle: number;
177
+ penumbra: number;
178
+ decay: number;
179
+ showHelper: boolean;
180
+ };
181
+ ```
182
+
183
+ Default `showHelper` is `false`; editor pages can enable it explicitly.
184
+
185
+ ## `LookAt`
186
+
187
+ Partial-stage behavior component. Rotates its child toward a target object.
188
+
189
+ ```ts
190
+ type LookAtSettings = {
191
+ enabled: boolean;
192
+ targetObjectId: string | null;
193
+ mode: "point" | "direction";
194
+ inheritChildren: boolean;
195
+ offsetRotation: { x: number; y: number; z: number };
196
+ };
197
+ ```
198
+
199
+ ```tsx
200
+ <LookAt target={targetObject} settings={lookAtSettings}>
201
+ <MeshRenderer value={meshRendererSettings} />
202
+ </LookAt>
203
+ ```
204
+
205
+ In `SceneObjectRenderer`, nested child objects do not inherit the parent's
206
+ LookAt rotation by default. Set `inheritChildren: true` when children should
207
+ rigidly follow the parent's look-at facing.
208
+
209
+ ## `PinToMesh`
210
+
211
+ Partial-stage behavior component. Pins a runtime wrapper to a target mesh
212
+ surface.
213
+
214
+ ```ts
215
+ type PinToMeshSettings = {
216
+ enabled: boolean;
217
+ targetObjectId: string | null;
218
+ orientation: "none" | "position" | "positionAndDirection";
219
+ uv: { x: number; y: number };
220
+ vertexNormal: boolean;
221
+ offsetSpace: "local" | "world";
222
+ offsetPosition: { x: number; y: number; z: number };
223
+ offsetRotation: { x: number; y: number; z: number };
224
+ };
225
+ ```
226
+
227
+ Default values:
228
+
229
+ ```ts
230
+ {
231
+ enabled: false,
232
+ targetObjectId: null,
233
+ orientation: "none",
234
+ uv: { x: 0.5, y: 0.5 },
235
+ vertexNormal: false,
236
+ offsetSpace: "local",
237
+ offsetPosition: { x: 0, y: 0, z: 0 },
238
+ offsetRotation: { x: 0, y: 0, z: 0 },
239
+ }
240
+ ```
241
+
242
+ Runtime behavior:
243
+
244
+ - Disabled PinToMesh resets its wrapper to local position `0,0,0` and identity
245
+ rotation.
246
+ - Missing target also resets the wrapper.
247
+ - `Transform3D` remains the authored transform source of truth.
248
+ - `orientation: "positionAndDirection"` aligns to the target surface normal.
249
+ - `offsetRotation` is reapplied from a clean base each frame; it must not
250
+ compound.
251
+
252
+ ```tsx
253
+ <PinToMesh target={targetObject} settings={pinToMeshSettings}>
254
+ <Transform3D value={transformSettings}>
255
+ <MeshRenderer value={meshRendererSettings} />
256
+ </Transform3D>
257
+ </PinToMesh>
258
+ ```
259
+
260
+ ## `SceneObjectRenderer`
261
+
262
+ Renders serialized scene-object data through runtime components.
263
+
264
+ ```ts
265
+ type SceneObjectRendererProps = {
266
+ objectId: string;
267
+ store: SceneObjectStore;
268
+ editorMode?: boolean;
269
+ renderOrder?: number;
270
+ renderLayer?: number;
271
+ onComponentChange?: (component: SceneComponent) => void;
272
+ fallback?: (message: string) => ReactNode;
273
+ };
274
+ ```
275
+
276
+ Supported combinations:
277
+
278
+ | Components | Runtime result |
279
+ | ------------------------------------------ | ------------------------------- |
280
+ | `Transform` | invisible 3D null/container |
281
+ | `Transform` + `MeshRenderer` | 3D object |
282
+ | `Transform` + `MeshRenderer` + `LookAt` | 3D object with look-at behavior |
283
+ | `Transform` + `MeshRenderer` + `PinToMesh` | 3D object with pin behavior |
284
+ | `Transform` + `Light` | light object |
285
+ | `ScreenTransform` | invisible 2D null/container |
286
+ | `ScreenTransform` + `ScreenImage` | screen image |
287
+ | `ScreenTransform` + `ScreenText` | screen text |
288
+
289
+ Nested scene objects are resolved from `SceneObjectStore` data. Root objects
290
+ come from `createRenderPlan`; children are rendered recursively inside their
291
+ parent runtime object, so child transforms inherit parent transforms.
292
+
293
+ ## `ScreenImage` architecture and ownership
294
+
295
+ `ScreenImage` is a thin screen-space orchestrator. Its implementation is split
296
+ by responsibility:
297
+
298
+ - `components/ScreenImageBody.tsx` owns the cloned UV texture and generated
299
+ matcap, selects unlit/PBR/matcap/advanced-blend materials, and renders the
300
+ core mesh.
301
+ - `components/ScreenImageFrame.tsx` resolves anchor-based layout.
302
+ - `components/ScreenImageTransformFrame.tsx` owns editor drag listeners,
303
+ transform math, and guide rendering.
304
+ - `materials/` contains GLSL blend materials and procedural matcap generation.
305
+ - `source.ts`, `fit.ts`, `types.ts`, and `utils/` contain reusable pure models,
306
+ source resolution, fitting, defaults, and mapping helpers.
307
+
308
+ Consumer-provided textures remain consumer-owned and are never disposed by
309
+ `ScreenImage`. Internally cloned UV textures and generated matcaps are disposed
310
+ on replacement or unmount. Dynamic video/canvas textures keep their per-frame
311
+ update behavior.
@@ -0,0 +1,213 @@
1
+ ---
2
+ title: "Scene Object Store API"
3
+ description: "Definitions and helpers for serialized scene data, components, defaults, and immutable store updates."
4
+ sidebarTitle: "Scene Object Store"
5
+ icon: "database"
6
+ ---
7
+
8
+ Import scene-object APIs from `@vincentt-xr/sdk/scene-object`.
9
+
10
+ Internal source layout: scene-object store helpers stay in `lib/scene-object/`;
11
+ render-group helpers live in `lib/render/`; serialized `ScreenImage` and
12
+ `ScreenText` settings live in `lib/screen-image/` and `lib/screen-text/`. Public
13
+ imports stay unchanged.
14
+
15
+ ```ts
16
+ import {
17
+ createRenderPlan,
18
+ createDefaultComponent,
19
+ createSceneObject,
20
+ migrateToRenderGroups,
21
+ moveObjectToGroup,
22
+ replaceSceneComponent,
23
+ replaceSceneObject,
24
+ reorderObjectWithinGroup,
25
+ reorderRenderGroup,
26
+ setSceneObjectVisible,
27
+ validateGroupCompatibility,
28
+ type RenderGroupSceneObjectStore,
29
+ type SceneObjectStore,
30
+ } from "@vincentt-xr/sdk/scene-object";
31
+ ```
32
+
33
+ ## Core types
34
+
35
+ ```ts
36
+ type SceneObject = {
37
+ id: string;
38
+ name: string;
39
+ enabled: boolean;
40
+ parentObjectId?: string | null;
41
+ childObjectIds?: string[];
42
+ renderGroupId?: string;
43
+ componentIds: string[];
44
+ };
45
+
46
+ type SceneComponent<TType extends SceneComponentType = SceneComponentType> = {
47
+ id: string;
48
+ objectId: string;
49
+ type: TType;
50
+ enabled: boolean;
51
+ settings: ComponentRegistry[TType];
52
+ };
53
+
54
+ type SceneObjectStore = {
55
+ objects: Record<string, SceneObject>;
56
+ components: Record<string, SceneComponent>;
57
+ };
58
+ ```
59
+
60
+ ## `ComponentRegistry`
61
+
62
+ ```ts
63
+ type ComponentRegistry = {
64
+ Transform: Transform3DSettings;
65
+ ScreenTransform: ScreenTransform2DSettings;
66
+ ScreenImage: ScreenImageSettings;
67
+ ScreenText: ScreenTextSettings;
68
+ MeshRenderer: MeshRendererSettings;
69
+ FaceMeshRenderer: FaceMeshRendererSettings;
70
+ Material: MaterialSettings;
71
+ Texture: TextureSettings;
72
+ Light: LightSettings;
73
+ LookAt: LookAtSettings;
74
+ PinToMesh: PinToMeshSettings;
75
+ };
76
+ ```
77
+
78
+ ## Create an object
79
+
80
+ ```ts
81
+ const object = createSceneObject({
82
+ id: "mic",
83
+ name: "Mic",
84
+ renderGroupId: "scene3d",
85
+ });
86
+
87
+ const transform = createDefaultComponent("Transform", object.id);
88
+ const meshRenderer = createDefaultComponent("MeshRenderer", object.id);
89
+
90
+ const store: SceneObjectStore = {
91
+ objects: {
92
+ [object.id]: {
93
+ ...object,
94
+ componentIds: [transform.id, meshRenderer.id],
95
+ },
96
+ },
97
+ components: {
98
+ [transform.id]: transform,
99
+ [meshRenderer.id]: meshRenderer,
100
+ },
101
+ };
102
+ ```
103
+
104
+ ## Default components
105
+
106
+ ```ts
107
+ createDefaultComponent("Transform", objectId);
108
+ createDefaultComponent("MeshRenderer", objectId);
109
+ createDefaultComponent("FaceMeshRenderer", objectId);
110
+ createDefaultComponent("Light", objectId);
111
+ createDefaultComponent("LookAt", objectId);
112
+ createDefaultComponent("PinToMesh", objectId);
113
+ createDefaultComponent("ScreenTransform", objectId);
114
+ createDefaultComponent("ScreenImage", objectId);
115
+ createDefaultComponent("ScreenText", objectId);
116
+ ```
117
+
118
+ Defaults are cloned before return, so callers can safely mutate the returned
119
+ settings while constructing serialized scene data.
120
+
121
+ Null/container objects are component combinations, not separate runtime classes:
122
+
123
+ ```ts
124
+ // 3D null/container
125
+ const transform = createDefaultComponent("Transform", object.id);
126
+
127
+ // 2D null/container
128
+ const screenTransform = createDefaultComponent("ScreenTransform", object.id);
129
+ ```
130
+
131
+ They render no visible mesh/text/image by themselves, but they can parent child
132
+ objects and expose their transform in the debug inspector.
133
+
134
+ ## Immutable updates
135
+
136
+ Use these helpers when wiring inspectors or editor panels.
137
+
138
+ ```ts
139
+ setStore((current) => replaceSceneComponent(current, nextComponent));
140
+ setStore((current) => replaceSceneObject(current, nextObject));
141
+ setStore((current) => setSceneObjectVisible(current, objectId, false));
142
+ setStore((current) => setSceneObjectParent(current, "child", "parent"));
143
+ ```
144
+
145
+ Rules:
146
+
147
+ - component edits flow through `replaceSceneComponent`
148
+ - object name/enabled/render-group edits flow through `replaceSceneObject`
149
+ - hierarchy visibility edits flow through `setSceneObjectVisible`
150
+ - hierarchy parent edits flow through `setSceneObjectParent`
151
+ - editor panels should not keep separate transform/material/light/pin state
152
+
153
+ ## Nested scene objects
154
+
155
+ 3D and 2D scene objects can be nested with `parentObjectId` and
156
+ `childObjectIds`. A child transform is local to its parent transform: the child
157
+ can still move freely, and moving/rotating/scaling the parent affects all
158
+ descendants. Parenting does not rewrite the child's Transform component; the
159
+ existing Transform values become the child's local offset from the parent. A
160
+ child with position `{ x: 0, y: 0, z: 0 }` sits at the parent origin.
161
+
162
+ ```ts
163
+ const next = setSceneObjectParent(store, "mic", "emoji");
164
+ ```
165
+
166
+ `setSceneObjectParent` updates both sides of the relationship, preserves
167
+ ordering through `childObjectIds`, rejects cycles, and does not preserve world
168
+ position by rewriting Transform values. `createRenderPlan` emits only root
169
+ objects; `SceneObjectRenderer` renders children inside their parent runtime
170
+ object so inherited transforms work.
171
+
172
+ Editor-style parent changes should use
173
+ `setSceneObjectParentPreserveWorldTransform`. That helper updates the hierarchy
174
+ and recalculates the child's local Transform so the object does not visually
175
+ jump at the moment it is nested or un-nested.
176
+
177
+ ## Render-group store
178
+
179
+ Grouped scene editors use `RenderGroupSceneObjectStore`.
180
+
181
+ ```ts
182
+ type RenderGroupSceneObjectStore = SceneObjectStore & {
183
+ renderGroups: Record<string, RenderGroup>;
184
+ renderGroupOrder: string[];
185
+ };
186
+ ```
187
+
188
+ Use `createRenderPlan(store)` to derive render entries for
189
+ `SceneObjectRenderer`.
190
+
191
+ ```ts
192
+ const grouped: RenderGroupSceneObjectStore = migrateToRenderGroups(store);
193
+ const plan = createRenderPlan(grouped);
194
+ ```
195
+
196
+ Common render-group helpers:
197
+
198
+ ```ts
199
+ reorderRenderGroup(grouped, "scene3d", 0);
200
+ reorderObjectWithinGroup(grouped, "scene3d", "mic", 1);
201
+
202
+ if (validateGroupCompatibility(grouped, "mic", "scene3d")) {
203
+ moveObjectToGroup(grouped, "mic", "scene3d", 0);
204
+ }
205
+ ```
206
+
207
+ `createRenderPlan` returns entries with `objectId`, `renderOrder`, and
208
+ `renderLayer`. Feed those entries to `SceneObjectRenderer` and derive pass layers
209
+ from the plan:
210
+
211
+ ```ts
212
+ const passLayers = Array.from(new Set(plan.map((entry) => entry.renderLayer)));
213
+ ```
@@ -0,0 +1,41 @@
1
+ ---
2
+ title: "Screen Image"
3
+ description: "Author screen-space images with shared transforms, fitting, materials, and editor settings."
4
+ sidebarTitle: "Screen Image"
5
+ icon: "image"
6
+ ---
7
+
8
+ Use `ScreenImage` for logos, stickers, frames, badges, and photo placeholders.
9
+ It owns its screen transform; prefer `position`, `size`, and `rotation` for
10
+ normal authoring.
11
+
12
+ ```tsx
13
+ import { ScreenImage, ScreenSpaceUI } from "@vincentt-xr/sdk";
14
+
15
+ <ScreenSpaceUI>
16
+ <ScreenImage
17
+ name="logo"
18
+ source={{ kind: "image", src: logoUrl }}
19
+ coordinateSpace="canvas"
20
+ canvasSize={{ width: 720, height: 1280 }}
21
+ position={[-180, 464]}
22
+ size={[216, 160]}
23
+ stretchMode="fit"
24
+ opacity={0.95}
25
+ />
26
+ </ScreenSpaceUI>;
27
+ ```
28
+
29
+ Sources are `{ kind: "default" }`, `{ kind: "image", src }`, or an existing
30
+ `{ kind: "texture", texture }`. `fit` supports `stretch`, `contain`, and
31
+ `cover`. Canvas coordinates use center origin and positive Y upward.
32
+
33
+ The authored size is the bounding rectangle, not the image's natural size.
34
+ Fit changes content inside that rectangle and never changes the rigid
35
+ transform. Keep visibility, opacity, tint, flips, pivot, overlay, render order,
36
+ transparency, alpha test, position, size, and rotation in one source of truth.
37
+
38
+ For scene objects, combine `ScreenTransform` + `ScreenImage` and use
39
+ `mapScreenImageSettingsToProps`. Use `ScreenImageSettingsPanel` from
40
+ `@vincentt-xr/sdk/debug-ui`; wire `onScreenTransformChange` so drag editing
41
+ updates the same mounted object.
@@ -0,0 +1,64 @@
1
+ ---
2
+ title: "Screen Shape"
3
+ description: "Verified screen-space vector shapes with solid, gradient, and glass fills."
4
+ sidebarTitle: "Screen Shape"
5
+ icon: "shapes"
6
+ ---
7
+
8
+ `ScreenShape` renders editable vector primitives in SDK design pixels. Use it
9
+ instead of generating raster assets for circles, ellipses, rectangles, rounded
10
+ rectangles, polygons, stars, and lines.
11
+
12
+ ```tsx
13
+ import { ScreenShape, ScreenSpaceUI } from "@vincentt-xr/sdk";
14
+
15
+ <ScreenSpaceUI>
16
+ <ScreenShape
17
+ transform={{ position: { x: 0, y: 0 }, size: { width: 220, height: 220 } }}
18
+ settings={{
19
+ kind: "star",
20
+ fillMode: "gradient",
21
+ fillOpacity: 0.9,
22
+ gradient: {
23
+ type: "angular",
24
+ stops: [
25
+ { offset: 0, color: "#fb7185" },
26
+ { offset: 0.5, color: "#8b5cf6" },
27
+ { offset: 1, color: "#38bdf8" },
28
+ ],
29
+ },
30
+ strokeColor: "#ffffff",
31
+ strokeWidth: 3,
32
+ sides: 5,
33
+ innerRadiusRatio: 0.45,
34
+ }}
35
+ />
36
+ </ScreenSpaceUI>;
37
+ ```
38
+
39
+ ## Settings
40
+
41
+ - `kind`: `circle`, `ellipse`, `rectangle`, `roundedRectangle`, `polygon`,
42
+ `star`, or `line`
43
+ - `fillMode`: `solid`, `gradient`, or `glass`
44
+ - `fillColor`, `fillOpacity`, `strokeColor`, `strokeOpacity`, `strokeWidth`
45
+ - `cornerRadius`, `sides`, `innerRadiusRatio`, and `dashed`
46
+ - normalized `lineStart` and `lineEnd` coordinates for lines
47
+
48
+ Regular circles, polygons, and stars preserve equal axes in non-square bounds.
49
+ Ellipses and rectangles fill their bounds.
50
+
51
+ ## Gradient and glass
52
+
53
+ Gradients support `linear`, `radial`, and `angular` (conic) modes with 2–8
54
+ color stops. Configure `angle`, `center`, and `radius` as needed. The reusable
55
+ `ScreenGradientMaterial` and `normalizeScreenGradient` exports live in core.
56
+
57
+ Glass uses `tint`, `opacity`, `frost`, and `highlight`. It is a lightweight
58
+ translucent shader, not backdrop blur or refraction. `fillOpacity` multiplies
59
+ the glass opacity. The reusable `ScreenGlassMaterial` is also exported from
60
+ core.
61
+
62
+ For serialized scenes, pair `ScreenTransform` with `ScreenShape`. Use
63
+ `ScreenShapeSettingsPanel` from `@vincentt-xr/sdk/debug-ui` for live editing.
64
+ The verified example is `/screen-shapes`.
@@ -0,0 +1,41 @@
1
+ ---
2
+ title: "Screen-Space Coordinates"
3
+ description: "Convert between SDK design pixels, normalized points, media, DOM clients, rays, and world positions."
4
+ sidebarTitle: "Screen Coordinates"
5
+ icon: "ruler"
6
+ ---
7
+
8
+ Import screen-coordinate helpers from `@vincentt-xr/sdk`. SDK screen pixels use
9
+ a `720x1280` design canvas by default, center origin, and positive Y upward.
10
+ They are not Three.js world units.
11
+
12
+ ```ts
13
+ import {
14
+ clientToScreenPixels,
15
+ normalizedToScreenPixels,
16
+ screenPixelsToUnits,
17
+ screenPointToRay,
18
+ screenUnitsToPixels,
19
+ worldToScreenPixels,
20
+ } from "@vincentt-xr/sdk";
21
+
22
+ const units = screenPixelsToUnits(120, { parentSize });
23
+ const pixels = screenUnitsToPixels(units, { parentSize });
24
+ const label = worldToScreenPixels({ point: worldPoint, camera, viewportSize });
25
+ const ray = screenPointToRay({ point: tapPoint, camera, viewportSize });
26
+ ```
27
+
28
+ - `clientToScreenPixels` / `screenPixelsToClient`: pointer events and DOM overlays
29
+ - `normalizedToScreenPixels` / `screenPixelsToNormalized`: top-left-origin normalized points
30
+ - `mediaToScreenPixels` / `screenPixelsToMedia`: cover/contain layout and mirroring
31
+ - `worldToScreenPixels`: labels and indicators over tracked 3D points
32
+ - `screenPointToRay`: hit testing and 3D placement from design pixels
33
+ - `smoothNumber`, `smoothVector2`, `smoothVector3`: frame-rate-independent tracked motion
34
+
35
+ Hide world projections whose `depth` is outside `[-1, 1]`. Reuse optional output
36
+ vectors inside frame loops. Use Three.js `localToWorld`, `worldToLocal`,
37
+ `project`, and `unproject` directly instead of adding SDK wrappers.
38
+
39
+ Use `mergeScreenTransform2D` to fill defaults and `resolveScreenTransform2D` to
40
+ resolve authored position, size, scale, rotation, and pivot. Do not copy the
41
+ default root size or reference-pixel constants into custom renderers.