wip
This commit is contained in:
parent
13919df3e0
commit
c1809345cc
@ -24,12 +24,12 @@
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
showgrid="false"
|
||||
inkscape:zoom="2.2976154"
|
||||
inkscape:cx="104.89136"
|
||||
inkscape:cx="105.10898"
|
||||
inkscape:cy="113.1608"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1030"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="22"
|
||||
inkscape:window-width="1143"
|
||||
inkscape:window-height="1342"
|
||||
inkscape:window-x="1146"
|
||||
inkscape:window-y="72"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="layer1">
|
||||
<inkscape:grid
|
||||
@ -97,25 +97,9 @@
|
||||
transform="translate(21.028221,-34.520283)"><tspan
|
||||
x="84.117188"
|
||||
y="102.36772"
|
||||
id="tspan6427"><tspan
|
||||
id="tspan219"><tspan
|
||||
style="font-size:12px;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Normal';fill:#000000;stroke:none"
|
||||
id="tspan6425">Extended Reality (XR)</tspan></tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-dasharray:none;stroke-opacity:1"
|
||||
x="98.254189"
|
||||
y="104.05024"
|
||||
id="text2357"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan6316"
|
||||
x="98.254189"
|
||||
y="104.05024"
|
||||
style="text-align:center;text-anchor:middle">Virtual</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan6318"
|
||||
x="98.254189"
|
||||
y="119.05024"
|
||||
style="text-align:center;text-anchor:middle">Reality (VR)</tspan></text>
|
||||
id="tspan217">Extended Reality (XR)</tspan></tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-dasharray:none;stroke-opacity:1"
|
||||
@ -140,29 +124,19 @@
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-dasharray:none;stroke-opacity:1"
|
||||
x="204.76335"
|
||||
y="102.59318"
|
||||
x="216.02277"
|
||||
y="146.52649"
|
||||
id="text3093"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan6320"
|
||||
x="204.76335"
|
||||
y="102.59318"
|
||||
x="216.02277"
|
||||
y="146.52649"
|
||||
style="text-align:center;text-anchor:middle">Augmented</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan6322"
|
||||
x="204.76335"
|
||||
y="117.59318"
|
||||
x="216.02277"
|
||||
y="161.52649"
|
||||
style="text-align:center;text-anchor:middle">Reality (AR)</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;font-family:'Open Sans';-inkscape-font-specification:'Open Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-dasharray:none;stroke-opacity:1"
|
||||
x="215.55812"
|
||||
y="185.11629"
|
||||
id="text3825"><tspan
|
||||
id="tspan3823"
|
||||
x="215.55812"
|
||||
y="185.11629"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal">SAR</tspan></text>
|
||||
<ellipse
|
||||
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.45987;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path4715-0-8"
|
||||
@ -170,6 +144,22 @@
|
||||
cy="155.31702"
|
||||
rx="72.666672"
|
||||
ry="71.540054" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-dasharray:none;stroke-opacity:1"
|
||||
x="88.430763"
|
||||
y="146.52649"
|
||||
id="text2357"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan6316"
|
||||
x="88.430763"
|
||||
y="146.52649"
|
||||
style="text-align:center;text-anchor:middle">Virtual</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan6318"
|
||||
x="88.430763"
|
||||
y="161.52649"
|
||||
style="text-align:center;text-anchor:middle">Reality (VR)</tspan></text>
|
||||
<ellipse
|
||||
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.45987;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path4715-0-8-0"
|
||||
@ -177,12 +167,5 @@
|
||||
cy="155.18689"
|
||||
rx="72.666672"
|
||||
ry="71.540054" />
|
||||
<ellipse
|
||||
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path4715-0-5"
|
||||
cx="226.4397"
|
||||
cy="182.28995"
|
||||
rx="25.295851"
|
||||
ry="24.903666" />
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 10 KiB |
34
main.tex
34
main.tex
@ -176,17 +176,17 @@ In this paper, we present the core AURA specification and demonstrate how it ena
|
||||
|
||||
\section{Background and Related Work}
|
||||
|
||||
Spatial Augmented Reality (AR) represents a significant leap in human-computer interaction by seamlessly blending digital information into the physical world. Augmented Reality (AR) systems can rely on head-mounted displays (HMDs), handheld devices, and projection-based systems to directly augment real-world surfaces. These technologies collectively aim to enhance user interaction with contextualised information in 3D spaces. However, despite the advances in AR, existing approaches lack standardisation for interaction design and application modelling, creating significant fragmentation between different platforms and implementations.
|
||||
Augmented Reality (AR) represents a major advancement in human-computer interaction by integrating digital information into the physical world. AR systems can rely on head-mounted displays (HMDs), handheld devices, and projection-based systems to directly augment real-world surfaces. These technologies collectively aim to enhance user interaction with contextualised information in 3D spaces. However, despite the advances in AR, existing approaches lack standardisation for interaction design and application modelling, creating significant fragmentation between different platforms and implementations.
|
||||
|
||||
\begin{figure}[htbp]
|
||||
\centering
|
||||
\includesvg[inkscapelatex=false, width=0.7\linewidth]{figures/map_of_field.svg}
|
||||
\caption{AR as a subset for AR}\label{fig:finding_sar}
|
||||
\caption{Augmented Reality as a form of Extended Reality}\label{fig:ar_in_xr}
|
||||
\end{figure}
|
||||
|
||||
In Fig.~\ref{fig:finding_sar} we depict AR as a subset of AR. AR focuses on the visual augmentation of spaces, rather than other modalities such as sound or haptic feedback. Unlike Virtual Reality (VR), which imerses users in a fully digital environment, or Mixed Reality (MR), which blends virtual and real-world elements interactively, AR is specifically an augmentation of the visual perception of physical spaces, through devices such as AR glasses, projection, or a simple smartphone.
|
||||
As illustrated in Fig.~\ref{fig:ar_in_xr}, Augmented Reality is distinct from other forms of Extended Reality (XR). While Virtual Reality (VR) immerses users entirely within a simulated environment, and Mixed Reality (MR) tightly blends physical and virtual elements through real-time spatial alignment, AR focuses on enriching the user's perception of the physical world by adding digital elements in one or more modalities—most commonly visual, but also auditory or haptic.
|
||||
|
||||
\subsection{Spatial Augmented Reality Technologies}
|
||||
\subsection{Augmented Reality Technologies}
|
||||
AR systems can be broadly classified into three categories~\cite{van2010survey}:
|
||||
\begin{enumerate}
|
||||
\item \textbf{Projection-Based Augmented Reality:} These systems use projectors to overlay digital content onto physical surfaces, enabling shared experiences without the need for individual head-mounted devices. Such systems have been explored extensively in applications like collaborative design, education, and entertainment.
|
||||
@ -266,7 +266,7 @@ To fully understand how AURA manifests are structured, it is essential to introd
|
||||
\midrule
|
||||
\textbf{Scope} & Focuses on an individual AR application & Covers the entire AR environment, supporting multiple applications \\
|
||||
\midrule
|
||||
\textbf{Key Elements} & Agents, components, entities, interaction rules & Components (e.g., physical surfaces), ambients, worlds, applications, spatial configuration \\
|
||||
\textbf{Key Elements} & Agents, components, entities, interaction rules & Components (e.g., physical surfaces), ambients, worlds, applications \\
|
||||
\midrule
|
||||
\textbf{Flexibility} & Defines only application-specific requirements & Ensures system-wide consistency and cross-application compatibility \\
|
||||
\bottomrule
|
||||
@ -308,7 +308,7 @@ AURA manifests describe only the \textit{externally observable} behaviour of app
|
||||
\begin{figure*}
|
||||
\centering
|
||||
\includesvg[inkscapelatex=false, width=\linewidth]{figures/sarm_basic_storage_concept.drawio.svg}
|
||||
\caption{The System Manifest defines Worlds (e.g., $\omega_1$, $\omega_2$) and their associated Ambients ($\alpha_1..\alpha_6$). Each Application is tied to a unique Ambient (1:1 relationship). When an Application (e.g., $A_1$) accesses a Component's storage, the associated Ambient (e.g., $\alpha_1$) mediates access to the correct scoped storage view (e.g., $C_1$'s $\omega_1$ data). Thus, $A_1$, $A_2$, and $A_3$ share the same view of $C_1$, while $A_4$ and $A_5$/$A_6$ operate over isolated data contexts.}\label{fig:sarm_basic_storage_concept}
|
||||
\caption{The System Manifest defines Worlds ($\omega_1$, $\omega_2$) and their associated Ambients ($\alpha_1..\alpha_6$). Each Application is tied to a unique Ambient (1:1 relationship). When an Application (e.g., $A_1$) accesses a Component's storage, the associated Ambient (e.g., $\alpha_1$) mediates access to the correct scoped storage view (e.g., $C_1$'s $\omega_1$ data). Thus, $A_1$, $A_2$, and $A_3$ share the same view of $C_1$, while $A_4$ and $A_5$/$A_6$ operate over isolated data contexts.}\label{fig:sarm_basic_storage_concept}
|
||||
\end{figure*}
|
||||
|
||||
AURA supports data exchange between applications by attaching shared memory to components. This enables coordination without direct dependencies between applications. This memory model allows different applications to share state only when they belong to the same world, enforcing scoped visibility and sandboxing between application groups. In Fig.~\ref{fig:sarm_basic_storage_concept} we show how worlds and ambients play together in order to facilitate proper interoperability.
|
||||
@ -345,7 +345,6 @@ To illustrate how manifests operate together, we examine a simplified photo gall
|
||||
\paragraph{Metadata and Agents} The application begins by declaring its name and the roles of agents it expects:
|
||||
|
||||
\begin{lstlisting}[language=json, numbers=none]
|
||||
"@context": "https://sar-manifest-schema.org",
|
||||
"@type": "ApplicationManifest",
|
||||
"application": {
|
||||
"name": "LightSpacePhotoProjection",
|
||||
@ -355,8 +354,7 @@ To illustrate how manifests operate together, we examine a simplified photo gall
|
||||
"agents": [
|
||||
{ "type": "User", "role": "Interactor", "instancesAllowed": "*" },
|
||||
{ "type": "Camera", "device": "Tracking Camera" },
|
||||
{ "type": "Projector", "device": "Overhead Projector" }
|
||||
]
|
||||
{ "type": "Projector", "device": "Overhead Projector" } ]
|
||||
\end{lstlisting}
|
||||
|
||||
\paragraph{Components} Are physical elements, each application component should define its minimum requirements to be suitable, and they can be reused between different entity definition. In this case, we will define a static surface for use both by the photo gallery and viewers:
|
||||
@ -368,8 +366,7 @@ To illustrate how manifests operate together, we examine a simplified photo gall
|
||||
"description": "A generic static surface for projection.",
|
||||
"minimum_width": 0.5, "minimum_height": 0.5
|
||||
},
|
||||
{"id": "hand_tracking_component", "type": "tracking_component"}
|
||||
]
|
||||
{"id": "hand_tracking_component", "type": "tracking_component"} ]
|
||||
\end{lstlisting}
|
||||
|
||||
\paragraph{Entities and States} Entities reflect the interaction logic of the application, including the gallery and multiple viewers:
|
||||
@ -397,8 +394,7 @@ To illustrate how manifests operate together, we examine a simplified photo gall
|
||||
"set_state": "photo_selected",
|
||||
"set_state_entity": {
|
||||
"entity": "hand_proxy_light",
|
||||
"state": "visible"
|
||||
} } } } } ]
|
||||
"state": "visible" } } } } } ]
|
||||
\end{lstlisting}
|
||||
|
||||
We defined a \textbf{photo gallery visualiser} (restricted to a single instance) that allows users to browse photos, and multiple \textbf{photo viewers} that display selected photos on different surfaces.
|
||||
@ -423,8 +419,7 @@ by the application (e.g., static surfaces such as the table and walls in LightSp
|
||||
"spatialAttributes": {
|
||||
"x": "user_hand_x",
|
||||
"y": "user_hand_y",
|
||||
"z": "user_hand_z"
|
||||
} } } ]
|
||||
"z": "user_hand_z" } } } ]
|
||||
\end{lstlisting}
|
||||
|
||||
\paragraph{System Agents} Users or devices (e.g., cameras and projectors).
|
||||
@ -445,14 +440,11 @@ by the application (e.g., static surfaces such as the table and walls in LightSp
|
||||
{
|
||||
"id": "lightspace_ambient",
|
||||
"dimensions": { "width": 4.0, "height": 3.0 },
|
||||
"associatedCamera": { "id": "Tracking Camera", "region_start_x": 30, "region_start_y": 30, "region_end_x": 750, "region_end_y": 750 },
|
||||
"associatedCamera": { "id": "Tracking Camera", "region_start_x": 30, "region_start_y": 30, "region_end_x": 420, "region_end_y": 420 },
|
||||
"associatedProjector": { "id": "Overhead Projector" },
|
||||
"accessibleComponents": ["table_surface", "wall_surface_1", "wall_surface_2", "hand_tracker"]
|
||||
}
|
||||
],
|
||||
"accessibleComponents": ["table_surface", "wall_surface_1", "wall_surface_2", "hand_tracker"] } ],
|
||||
"applications": [
|
||||
{ "name": "LightSpacePhotoProjection", "ambient": "lightspace_ambient" }
|
||||
]
|
||||
{ "name": "LightSpacePhotoProjection", "ambient": "lightspace_ambient" } ]
|
||||
\end{lstlisting}
|
||||
|
||||
The "LightSpacePhotoProjection" application is registered with the ambient "lightspace\_ambient." The "accessibleComponents" field ensures that the application associated with the ambient can use the defined surfaces. Three surfaces (a table and two walls) are defined, each with spatial attributes (position and dimensions). A single ambient ("lightspace\_ambient") is defined, specifying the operational space for the application. This ambient is associated with a tracking camera, an overhead projector, and the defined components (table and wall surfaces).
|
||||
|
Loading…
x
Reference in New Issue
Block a user