For the non-profit GPLv3 Open Source Project [url removed, login to view] you are implementing a recorder functionality. It will be integrated into the App posted soon on Freelancer.
UI Prototype: [url removed, login to view]
The App has to work at least on a Lenovo Phab 2 Pro device.
A GLVideoRendererActivity (possibly with fragment) with a record and a reset button.
The Activity shows
- the current video from the camera
- a silhouette outline shape of a child
- captured point clouds (only during/after recording)
The mean distance to the object inside of the head of the shape is measured.
If this distance is around 1 meter the outline is green and not moving.
The further the distance is from 1 meter, the more the color of the outline turns from green to yellow to red.
If distance is < 1 meter the outline is doing a repeating animation, getting smaller
If distance is > 1 meter the outline is doing a repeating animation, getting bigger
When the user presses the record button the captured point clouds appear in the 3D scene (first person video), recording 10-15 (configuration) point clouds. The point clouds over time are identified by color. Every captured point cloud has a different color, the color changes gradually from blue to white.
You user can stop the capturing process by pushing the record button again. He can examine the 3D scan on the screen and press repeat or next.
Functionality is similar to mesh builder example from Google Tango Examples but with simple dots layered in Augmented Reality on top of the video feed instead of a VR model.
During recording the following Data is written to storage (and optional Google Firebase Storage):
- Device Poses with timestamps (absolute and transformation)
- Point Clouds with timestamps
- Video file (possibly frames with timestamps)
The Activity will be used for multiple/repeated scanning processes, with an instructional screen overlayed in between (see UI prototype, link above)
Before starting the Project you have to briefly explain which parts you are developing in Java or C++ and why.
Documentation has to be provided.