diff --git a/dissertation/dissertation.lyx b/dissertation/dissertation.lyx index 9d62ba3..61e57bd 100644 --- a/dissertation/dissertation.lyx +++ b/dissertation/dissertation.lyx @@ -267,8 +267,8 @@ Acknowledgements \begin_layout Standard \noindent \align center -I'd like to extend my thanks to Professor Ning Wang for both the opportunities - provided by this project and his continued support. +I'd like to extend my thanks to Professor Ning Wang for both the learning + opportunities provided by this project and his continued support. \end_layout @@ -506,10 +506,14 @@ Conducted throughout the 2019/20 academic year, the project was inevitably \noun on Kinect \noun default - sensor. + sensor and no access to an +\noun on +Android +\noun default + phone with AR support. This significantly hindered the ability to evaluate the implemented multi-sourc -e capabilities and alternative objectives were identified in order to maintain - productivity. +e capabilities and some elements of the mobile AR display, as a result alternati +ve objectives were identified in order to maintain productivity. \end_layout \begin_layout Section @@ -2402,8 +2406,11 @@ literal "false" \noun on Hololens \noun default - application to build a handheld AR experience targeted at the Android mobile - operating system. + application to build a handheld AR experience targeting the +\noun on +Android +\noun default + mobile operating system. \end_layout \begin_layout Standard @@ -2460,6 +2467,72 @@ Unity and management. \end_layout +\begin_layout Standard +Hologram point clouds are rendered in a similar fashion to the server's + OpenGL window in that each vertex of the cloud is rendered individually + creating the impression of a contiguous mesh as opposed to forming a coherent + surface. + The +\noun on +PointCloudElem +\noun default + game object with a customisable colour acts as the primitive vertex of + this cloud. +\end_layout + +\begin_layout Standard +The scripts most relevant scripts for the developments are as follows, +\end_layout + +\begin_layout Description +PointCloudReceiver Server-like object responsible for managing connections + and sockets. + Responsible for passing received point clouds from the +\noun on +RxBuffer +\noun default + to the +\noun on +PointCloudRenderer +\noun default + for presentation. +\end_layout + +\begin_layout Description +PointCloudRenderer Display manager responsible for managing the live +\noun on +PointCloudElem +\noun default +'s representing a hologram. + Takes de-buffered frames from the +\noun on +PointCloudReceiver +\noun default + and increases or decreases the population of +\noun on +PointCloudElem +\noun default +'s as required before using the contained +\noun on +ElemRenderer +\noun default + to update the colour and position of each. +\end_layout + +\begin_layout Description +ElemRenderer A component of the +\noun on +PointCloudElem +\noun default + responsible for updating the presentation of each vertices' mesh. +\end_layout + +\begin_layout Description +PointCloudSocket Traditional socket object for managing network connections. + Buffers lists of vertices and RGB data from raw bytes received from the + network. +\end_layout + \begin_layout Subsection Evaluation \begin_inset CommandInset label @@ -2646,11 +2719,21 @@ Additional features facilitating the paradigm shift away from a single stream \begin_deeper \begin_layout Itemize -This is done by identifying and removing + \emph on -stale sources +Stale \emph default - at the server. +sources for which no network traffic is received within a timeout are identified + and removed at the server. +\end_layout + +\begin_layout Itemize +The global +\noun on +KinectSetting +\noun default +s object describing parameters including the positions of calibration markers + was made a source-level object in order to allow multi-view configurations. \end_layout \end_deeper @@ -3814,7 +3897,7 @@ status open \begin_inset Graphics filename /home/andy/uni/dissertation/media/SourceCollection.png lyxscale 20 - width 40col% + width 60col% \end_inset @@ -3854,8 +3937,8 @@ In order to lend the design to a cross-platform server, events are used to signal a source being connected or disconnected. A connected source is identified when a frame is added for which there is no key found in the sources dictionary. - The disconnected source event fires as during the RemoveSource() method - which is called manually or by the cleaner thread. + The disconnected source event fires during the RemoveSource() method which + is called manually or by the cleaner thread. \end_layout \begin_layout Standard @@ -3874,7 +3957,77 @@ is this a good idea? \end_inset + +\end_layout + +\begin_layout Subsection +Multi-Source Settings +\end_layout + +\begin_layout Standard +The +\noun on +KinectSettings +\noun default + class is responsible for maintaining configuration parameters for aspects + of the experience including calibration for multi-view scenarios and flags + for whether bodies should be isolated from the scene and whether skeletons + should be shown in the server display. + Some of these including the positions of calibration markers must be known + by clients and as such the +\noun on +KinectServer +\noun default + is capable of delivering the current settings to each client. +\begin_inset Flex TODO Note (Margin) +status open + +\begin_layout Plain Layout +settings window figure? +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Subsubsection +Design Considerations +\end_layout + +\begin_layout Standard +When considering the transition from a single stream scenario to the multi-sourc +e product, it can be seen that the settings should no longer be global. + Taking the calibration settings as an example, the positions and ID's of + each marker refer to those visible within a scene. + These will have no meaning if made central parameters, +\end_layout + +\begin_layout Subsubsection +Implementation +\end_layout + +\begin_layout Standard +The +\noun on +SourceCollection +\noun default + presented a natural location to store each source's settings object alongside + it's last frame, again aiming to employ the object-oriented ethos of encapsulat +ion. + This allowed the settings to be governed by the existing logic including +\emph on +stale source +\emph default + identification. +\end_layout + +\begin_layout Standard +The global settings object was not removed but instead had it's significance + changed. + The object was altered to define the default settings on which each newly + connected source's are based on. \end_layout \begin_layout Subsection diff --git a/media/DisplayFrameTransformer.png b/media/DisplayFrameTransformer.png index bb07d0b..dcb2532 100644 Binary files a/media/DisplayFrameTransformer.png and b/media/DisplayFrameTransformer.png differ diff --git a/media/SourceCollection.png b/media/SourceCollection.png index 7400673..bd108e1 100644 Binary files a/media/SourceCollection.png and b/media/SourceCollection.png differ diff --git a/uml.xmi b/uml.xmi index 243cd32..0857c46 100644 --- a/uml.xmi +++ b/uml.xmi @@ -1,226 +1,245 @@ - + umbrello uml modeller http://umbrello.kde.org 1.6.17 UnicodeUTF8 - + - + - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + - + - + - - - + + + - - + + - + - + - + - + - + - + - + - - - - + + + + - + - - - - + + + + - + - + - - + + - + - + - - - - - - - + + + + + + + - + - - + + - - - + + + - - + + - + - - - - - - - - - - - - + + + + + + + + + + + + + - + - + - - + + - + - - + + - - - - - + + + + + - + - + - + - - - - - + + + + + + + + + + + + + + - + - - + + - + - - + + - + - + + - + + + + + + + + + - + - + - + - + - + @@ -254,8 +273,9 @@ + - + @@ -283,7 +303,13 @@ + + + + + + @@ -294,6 +320,7 @@ + @@ -306,7 +333,7 @@ - +