User Tools

Site Tools


visual3d:documentation:pipeline:expressions:signal_functions

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
visual3d:documentation:pipeline:expressions:signal_functions [2024/09/05 17:53] – [Snip] wikisysopvisual3d:documentation:pipeline:expressions:signal_functions [2024/11/15 19:27] (current) – [Point_Tracked_By_3Points] wikisysop
Line 81: Line 81:
 </code> </code>
 ==== First_Derivative ==== ==== First_Derivative ====
 +[[visual3d:documentation:pipeline:signal_commands:second_derivative#first_derivative]]
 ==== Second_Derivative ==== ==== Second_Derivative ====
 +[[visual3d:documentation:pipeline:signal_commands:second_derivative#second_derivative]]
 ==== Interpolate ==== ==== Interpolate ====
  
Line 164: Line 164:
 Indefinite_Integral(target::processed::rft1, vector(0.0, 0.0, 1.0), event_label::original::rhs) Indefinite_Integral(target::processed::rft1, vector(0.0, 0.0, 1.0), event_label::original::rhs)
 Indefinite_Integral(target::processed::rft1, vector(0.0, 0.0, 1.0), event_label::original::rhs, event_label::original::rto) Indefinite_Integral(target::processed::rft1, vector(0.0, 0.0, 1.0), event_label::original::rhs, event_label::original::rto)
 +</code>
 +
 +**Note that the event label requires the full signal path. i.e. event_label::original::rhs not just rhs**
 +
 +==== Cumulative_Sum ====
 +
 +**Cumulative_Sum(signal, initial_value, start_event, end_event)** - where initial_value, start_event and end_event are optional.
 +
 +<code>
 +Example;
 +Cumulative_Sum(target::processed::rft1)
 +Cumulative_Sum(target::processed::rft1, vector(0.0, 0.0, 1.0))
 +Cumulative_Sum(target::processed::rft1, vector(0.0, 0.0, 1.0), event_label::original::rhs)
 +Cumulative_Sum(target::processed::rft1, vector(0.0, 0.0, 1.0), event_label::original::rhs, event_label::original::rto)
 +Cumulative_Sum(target::processed::rft1, vector(NAN, NAN, NAN), event_label::original::rhs)
 </code> </code>
  
Line 221: Line 236:
 </code> </code>
  
 +==== Point_Tracked_By_3Points ====
 +
 +**Point_Tracked_By_3Points(Point1, Vertex1, Vertex2, Vertex3)**
 +
 +This function was implemented to used DERIVED signals as tracking markers for a point relative to these tracking markers.
 +
 +In other words, this is mimics a LANDMARK in which a point is tracked by three TARGETS or LANDMARKS in a model.
 +
 +The difference is that a model isn't required.
 +
 +Why would this be useful?\\
 +The c3d format specifies that the lowest sampling rate is the POINT rate (i.e. the marker rate)\\
 +Marker based tracking, however, often has possible sampling rates that are much higher than video rates used by markerless tracking.\\
 +In a situation like baseball batting or golf many users record marker and markerless synchronously and merge the files.\\
 +The markers are used to track the club or bat at a higher sampling rate than the video\\
 +Then the c3d format, and Visual3D's implementation, collide with this objective.\\
 +When merging the two files, Visual3D automatically downsamples the POINT rate to the ROTATION rate.\\
 +To compensate (at least somewhat), Visual3D stores a copy of the POINT data as a DERIVED signal at the original POINT rate\\
 +The data is preserved, but the model and model based items cannot refer to the DERIVED signals\\
 +The workaround is to perform some calculations only on the DERIVED signals independent of any model.\\
 +**As as aside, for some applications, using only the marker data will result in faster processing and smaller cmz files.**\\
 +
 +Example: 
 +locate a point in the model relative to 3 markers\\
 +then track this point in the movement trial
 +
 +<code>
 +Evaluate_Expression
 +/EXPRESSION=Point_Tracked_By_3Points(Point_Relative_To_3Points(MODEL::TARGET::FaceBot, MODEL::TARGET::Shaft4, MODEL::TARGET::Shaft5, MODEL::TARGET::Shaft6),
 + TARGET::ORIGINAL::Shaft4, TARGET::ORIGINAL::Shaft5, TARGET::ORIGINAL::Shaft6)
 +/RESULT_TYPES=DERIVED
 +/RESULT_FOLDERS=CLUBFACE
 +/RESULT_NAME=FaceBot
 +;
 +</code>
  
 ==== Snip ==== ==== Snip ====
Line 242: Line 292:
 === Example === === Example ===
  
-This example demonstrates how the Snip expression can be used to extract the last 3 frames of data from a metric signal.+Example 1 demonstrates how the Snip expression can be used to extract the last 3 frames of data from a metric signal.
  
 <code> <code>
Line 279: Line 329:
 ; ;
 </code> </code>
 +
 +Example 2 demonstrates how the Snip expression in conjunction with spline, and several other functions
  
 <code> <code>
visual3d/documentation/pipeline/expressions/signal_functions.1725558801.txt.gz · Last modified: 2024/09/05 17:53 by wikisysop