This is an old revision of the document!
Table of Contents
visual3d reserved names
contents
current_signal
used to refer to a specific signal with a simple syntax compute the length of one signal.
the legacy syntax is:
evaluate_expression /expression=length(target::original::rft1) /result_types=derived /result_folders=processed /result_name=_length /apply_as_suffix_to_signal_name=true ; the legacy syntax can get complicated if pipeline_parameters are used in the signal name because of the order in which equations are parsed.
! create a pipeline parameter containing the marker name set_pipeline_parameter /parameter_name=marker /parameter_value=rft1 ; evaluate_expression /expression=length(target::original&:&:&::marker&) /result_types=derived /result_folders=processed /result_name=_length ; this gets even more complicate if the folder is also a pipeline parameter.
an alternative is the following
evaluate_expression
/expression=length(current_signal)
/signal_types=target
/signal_folder=original
/signal_names=::marker
/result_types=derived
/result_folders=processed
/result_name=_length
/apply_as_suffix_to_signal_name=true
;
used to allow multiple signals to be specified in an expression
compute the length of targets rft1, rft2, and rft3 in the original folder
the legacy implementation requires a for_each statement
for_each /iteration_parameter_name= markers /items= rft1+rft2+rft3 ; evaluate_expression /expression=length(target::original&:&:&::markers&) /signal_types=target /signal_folder=original /signal_names= /result_types=derived /result_folders=processed /result_name=::markers /apply_as_suffix_to_signal_name=true ; end_for_each /iteration_parameter_name=markers ; using current_signal
evaluate_expression
/expression=length(current_signal)
/signal_types=target
/signal_folder=original
/signal_names=rft1+rft2+rft3
/result_types=derived
/result_folders=processed
/result_name=_length
/apply_as_suffix_to_signal_name=true
;
used to specifying all signals of a given type
compute the length of all targets in the original folder
the legacy implementation requires a for_each command and a command to get the names of all of the targets
set_pipeline_parameter_to_list_of_signal_names /parameter_name=all_targets /signal_type=target /signal_folder=original ; for_each /iteration_parameter_name= markers /items= ::all_targets ; evaluate_expression /expression=length(target::original&:&:&::markers&) /signal_types=target /signal_folder=original /signal_names= /result_types=derived /result_folders=processed /result_name=::markers /apply_as_suffix_to_signal_name=true ; end_for_each /iteration_parameter_name=markers ; using current_signal
evaluate_expression
/expression=length(current_signal)
/signal_types=target
/signal_folder=original
/signal_names=
/result_types=derived
/result_folders=processed
/result_name=_length
/apply_as_suffix_to_signal_name=true
;
apply_as_suffix_to_signal_name
if apply_as_suffix_to_signal_name is true, or result_names.size() == signal_names.size()
compute the length of all targets in the original folder
evaluate_expression /expression=length(current_signal) /signal_types=target /signal_folder=original /signal_names= /result_types=derived /result_folders=processed /result_name=_length /apply_as_suffix_to_signal_name=true ; compute the length of two targets (rft1 and rft2) in the original folder
evaluate_expression /expression=length(current_signal) /signal_types=target /signal_folder=original /signal_names=rft1+rft2 /result_types=derived /result_folders=processed /result_name=_length /apply_as_suffix_to_signal_name=true ; compute a best_plane_fit for multiple signals at each frame of data
evaluate_expression
/expression=best_fit_plane(current_signal)
/signal_types=target
/signal_folder=original
/signal_names=lsk_1+lsk_2+lsk_3
/result_types=derived
/result_folders=processed
/result_name=lsk_plane
/apply_as_suffix_to_signal_name=true
;
if apply_as_suffix_to_signal_name is false, and result_names.size() == 1
compute the length of one target (target::original::rft1)
evaluate_expression /expression=length(target::original::rft1) /result_types=derived /result_folders=processed /result_name=rft1_length ;
nan
nan is a reserved string used to designate “not a number”.
visual3d commands refer to no_data or data_not_found as nan
for example, the expression 1/0 results in nan
isnan
isnan(expression) tests values against nan - if the number is nan the result is 1, otherwise the result is 0
[set_pipeline_parameter_from_expression] /parameter_name= nan_test /expression=isnan(1/0) /as_integer=true ; ::nan_test = 1 [set_pipeline_parameter_from_expression] /parameter_name= nan_test /expression=isnan(-999999.000000) /as_integer=true ; ::nan_test = 1 returns “1” because -999999 is equal to data not found in visual3d.
[set_pipeline_parameter_from_expression] /parameter_name= nan_test /expression=isnan(15) /as_integer=true ; ::nan_test = 0 example: set negative values to no_data
if the z-component of the lelb signal is below 0 set the frame to no_data
evaluate_expression /expression=(target::original::lelb::z>0)/(target::original::lelb::z>0)*target::original::lelb /result_name=lelb /result_type=target /result_folder=processed ;