Analysis Examples
Last updated
Last updated
The following examples are basic explanations on how to get started with the datasets, some techniques are shown but also single vs multi branch examples for when working with multiple limbs etc.
These examples primarily focus on colouring as preview, but these values can be used as with all data to drive design or other forms of representation.
Liberally use panels to check the flow of data to ensure you understand the content!
Datasets can get large so pay careful attention to data structures. For components with inputs/outputs that are grafted or flattened, do these BEFORE you link anything further.
Data intrinsic to the body can be started on by comparing frame-to-frame data using body joints or body curves.
Speed is calculated as distance over time. We can compare joint positions from one frame to the next directly as distance. Time is given to us by the Kinect's recording framerate: 30fps.
Input is a single body joint, in the example above, [25] FOOT_RIGHT.
Setup data for comparison.
Calculate speed.
Optional adjustment for readability or to make more sense with Rhino file's units.
Remap values - remap here for what is most appropriate for the source domain S. For example, if it is relative speed we can use the bounds of the values. If interested in only a range of speeds within 2-5m/s, that can be the source domain and the clipped values C output may be more relevant.
Here is also where other types of analyses may be done instead, example; comparatives.
A. Preview the text B. Preview colours and geometry in Rhino.
How does the body act on the space? The following examples cover how to work with body and spatial data in the form of point clouds.
It is recommended that you construct your scripts using low resolution datasets where possible so you may experiment with the different data structures required.
Firstly, working on an entire point cloud when it is not necessary will just lead to unnecessary processing time. So, optionally, extract just the region effected.
Be wary of keeping track of (2), where you have two point clouds; inside and outside the region. These will likely be merged later on.
One way to generate Heatmaps, is to use Attractor logic. The following examples work through heatmapping feet positions.
Prepare your data sets; region to work on (inside region example as above), and the joint data. In this example, only one joint is chosen.
Point attractor setup - as the body joint datatree defaults to joints per frame, each resulting branch is essentially the distances per frame. Manipulate the data tree to extract the point cloud as it were in one frame.
Remap values for use in preview. This is a generic remap but here is where you can consider what this means, is it a gradient of influence, or a bounds of interaction etc..
This results in one single frame, and a not so representative display as the entire region is shaded. Let's address these two points next.
In (2), one way to collapse the data; to consider all the joint positions; is to use [Sort List]
.
Default behaviour is to sort values smallest to largest - we can think of it this way:
The result of [Flip Matrix]
means that for each point in the point-cloud, is a list of distances to each frame's body joint.
[Sort List]
will sort these distances.
[List Item]
with index 0 effectively tells which frame the point is closest to.
By doing so the tree structure is collapse, and we are left with 1 value per point-cloud point. Summarily this tells us how the point cloud is affected overall.
As with before in (3), this is a generic remap that can be expanded upon.
In (4), [Interpolate]
is used to transition the values. This component takes a certain data structure:
Merge both colours where each branch corresponds to a point in the point-cloud, with its two colour values, original and adjusted. (This will work with any list)
Input parameter t, is the interpolation amount between each branch of input data D. 0 t = closer to first [0] item in the list. 1 t = closer to the last item of the list.
We have to minus the values from the graph mapper to invert the effect, or we can swap the order of colours, or change the remap method.
If working with multiple joints, for example both feet - [21] FOOT_LEFT and [25] FOOT_RIGHT - we can adjust the above the following:
Main changes are in (1): this method uses two polylines for each joint over time to maintain the same type of data structure as before.
The following is a method that uses the joints as its original point data if required. This method reverses the data structure so far between the point-cloud points and body data, as highlighted:
'Attaching' helpers for any proxies between the body data and spatial data. Examples include sight cones, objects, or a body structure. Similar types of analysis as above can be used thereafter.
A simple form of attachment may just use the data of the body as a way for 3pt operations. You can define a plane with at least 3 points, which can be used for orientation as well. Here is a simple/naive way for sight using tracked points on the face.