Releases: Any2HRTF/PPM
Matlab_1.4.0
Parametric pinna model (PPM) - MATLAB interface
Author: Florian Pausch (2022)
Versions and contributors:
0.8 and above: Florian Pausch (2022)
0.7 and below: Oscar Jones, Mantas Tamulionis (2021)
Current version:
1.4.0 (release)
OVERVIEW
-
demo_ppm
MATLAB script to demonstrate the functionality of the interface to the PPM (single-parameter and multiple-parameter input), including bi-directional communication with Blender via Python API -
Main functions:
-
ppm_initialize()
- Initialize the PPM structure array
- Optionally clean up previous data in result directory
-
ppm_get_values()
- Obtain the parameter values from the PPM contained in the Blender file to be modified, as specified in the PPM structure array
- Return a subset of parameter values as per 'type', 'name', 'axis'
- Render the PPM mesh as
ply
file
-
ppm_set_values()
Set the parameter values of the PPM contained in the Blender file to be modified- Independently select and modify parameters via 'type'/'name'/'axis'
- Use cell-array input to select and modify multiple parameters simultaneously
- Specify the rotation of PPM parameters via Euler angles
- itr=1: change the selected parameter values only once as per ppm.modify.instruction_mode
- itr>1: test itr neigboring values in steps of range/itr in a range of (+/- range/2) symmetric around val
- Render the PPM mesh as
ply
file - Render the PPM mesh as
png
image - Render depth information as
png
andexr
images (with control of depth-map range) - Manually set the camera pose when rendering the mesh as image
- Automatically set the camera rotation to point at a specified reference point cam_loc_ref
-
ppm_evaluate()
Evaluate the PPM mesh against a target mesh in terms of the Hausdorff distance- Only for single-parameter input in ppm_set_values: Plot parameter value per iteration (ppm.modify.itr)
- Plot modeled point cloud vs. target point cloud
- Plot histogram of Hausdorff values
- If ppm.modify.itr > 1 the parameter value is set to the one resulting in the minimum mean minimum Hausdorff distance across iterations
-
ppm_evaluate_multiple_meshes
MATLAB script to compare multiple PPM meshes to the corresponding target meshes and evaluate their geometric fit in terms of the Hausdorff distance -
ppm_test
New MATLAB script for comprehensive tests ofppm_initialize()
,ppm_get_values()
,ppm_set_values()
(single-parameter and multiple-parameter inputs), andppm_evaluate()
COMPATIBILITY
- Versions 1.1.0 and above only work with the Blender model ARI_PPM_v1 (armature and object definitions), see
config/parameter_defaults_v1.mat
andconfig/shape_key_limits_v1.mat
. - Version 1.4.0 requires the current Python scripts
python/get_values_and_export_mesh_v1_4_0.py
andpython/set_values_and_export_mesh_v1_4_0.py
RELEASE NOTES
-
python/get_values_and_export_mesh_v1_4_0.py
:- BUILD: renamed from
python/get_values_and_export_mesh_v1_3_1.py
(no code changes)
- BUILD: renamed from
-
python/set_values_and_export_mesh_v1_4_0.py
:- BUILD: renamed from
python/set_values_and_export_mesh_v1_3_1.py
(now obsolete) - REFACTOR: changed default value of 'depth_nearest' from NaN to 'cam_loc'
- BUILD: renamed from
-
ppm_demo
:- FEAT: added flag to switch between examples for single-parameter and multiple-parameter inputs when calling ppm_set_values()
- DOCS: updated function description, release-version number, and some comments
-
ppm_get_values()
:- BUILD: now calls
python/get_values_and_export_mesh_v1_4_0.py
- DOCS: updated function description and some comments
- BUILD: now calls
-
ppm_set_values()
:- FEAT: extended functionality to enable simultaneous parameter changes given cell arrays as input
- REFACTOR: changed default value of 'depth_nearest' from NaN to 'cam_loc'
- FIX: extended input-error control accounting for cell-array input
- FIX: included input-error message if axis triplets are not fully-occupied when using rotation modes other than 'quaternion' (cell-array input)
- FIX: addressed isotropic scaling of bendy bones when changing a single parameter value (automatic copying of the set value to the remaining axes)
- FIX: included error message if 'scale' is used together with 'W' as 'axis'
- FIX: included input-error message if user tries to scale a bendy bone (except Size-Bendy) anisotropically (cell-array input)
- FIX: distinguished between single-parameter and cell-array inputs when assigning parsed results to ppm.modify.type/.name/.axis
- DOCS: extended function description and changed some comments
-
ppm_modify_parameter_values()
:- FEAT: extended functionality to enable simultaneous parameter changes given cell arrays as input
- FIX: fixed wrong index when checking shape-key limits
- FIX: shape-key limits were not updated correctly in modify.val
- FIX: shape-key limits were not updated correctly in ppm.parameters
-
ppm_blender_execute()
:- BUILD: now calls
python/set_values_and_export_mesh_v1_4_0.py
- DOCS: changed some comments
- BUILD: now calls
-
ppm_evaluate()
:- FIX: removed parameter-value-over-iteration tile provided multiple-parameter changes in the PPM structure array
- DOCS: updated function description and some comments
-
ppm_test
- NEW: MATLAB script for comprehensive tests of interface-related functions
Matlab_1.3.1
Parametric pinna model (PPM) - MATLAB interface
Author: Florian Pausch (2022)
Versions and contributors:
0.8 and above: Florian Pausch (2022)
0.7 and below: Mantas Tamulionis (2021)
Current version:
1.3.1 (release)
OVERVIEW
-
demo_ppm
MATLAB script to demonstrate the functionality of the interface to the PPM, including bi-directional communication with Blender via Python API -
Main functions:
-
ppm_initialize()
- Initialize the PPM structure array
- Optionally clean up previous data in result directory
-
ppm_get_values()
- Obtain the parameter values from the PPM contained in the Blender file to be modified, as specified in the PPM structure array
- Return a subset of parameter values as per 'type', 'name', 'axis'
- Render the PPM mesh as
ply
file
-
ppm_set_values()
Set the parameter values of the PPM contained in the Blender file to be modified- Independently select and modify parameters via 'type'/'name'/'axis'
- Specify the rotation of PPM parameters via Euler angles
- itr=1: change the selected parameter values only once as per ppm.modify.instruction_mode
- itr>1: test itr neigboring values in steps of range/itr in a range of (+/- range/2) symmetric around val
- Render the PPM mesh as
ply
file - Manually set the camera pose when rendering an image
- Automatically set the camera rotation to point at a specified reference point cam_loc_ref
- Render the PPM mesh as
png
image - Render depth information as
png
andexr
images (with control of depth-map range)
-
ppm_evaluate()
Evaluate the PPM mesh against a target mesh in terms of the Hausdorff distance- Plot modeled point cloud vs. target point cloud
- Plot histogram of Hausdorff values
- If ppm.modify > 1 the parameter value is set to the one resulting in the minimum mean minimum Hausdorff distance across iterations
ppm_evaluate_multiple_meshes
MATLAB script to compare multiple PPM meshes to the corresponding target meshes and evaluate their geometric fit in terms of the Hausdorff distance
COMPATIBILITY
- Versions 1.1.0 and above only work with the Blender model ARI_PPM_v1 (armature and object definitions), see
config/parameter_defaults_v1.mat
andconfig/shape_key_limits_v1.mat
. - Version 1.3.1 requires the current Python scripts
python/get_values_and_export_mesh_v1_3_1.py
andpython/set_values_and_export_mesh_v1_3_1.py
RELEASE NOTES
-
python/get_values_and_export_mesh_v1_3_1.py
:- BUILD: renamed from
python/get_values_and_export_mesh_v1_3_0.py
(no code changes)
- BUILD: renamed from
-
python/set_values_and_export_mesh_v1_3_1.py
:- BUILD: renamed from
python/set_values_and_export_mesh_v1_3_0.py
(now obsolete) - FEAT: added parameters to control the depth-map range in the corresponding compositing node
* Minimum of input range: 0 (default; in Blender units); can be set via 'depth_farthest' inppm_set_values()
(resulting in black colors in normalised output of map-range node)
* Maximum of input range: Euclidian distance of camera to origin of global coordinate system in Blender units (default); can be set via 'depth_nearest' inppm_set_values()
(resulting in white colors in normalised output of map-range node)
* Minimum of output range: 1 (white), normalised
* Maximum of output range: 0 (black), normalised - FEAT: PNG files are now denoised using an additional denoise node in the compositor
- PERF: integrated functionality of get_depth() into render()
- PERF: switched to the physically-based renderer CYCLES
- BUILD: renamed from
-
ppm_demo
:- FEAT: included additional input parameters to control depth-map range when calling
ppm_set_values()
- DOCS: changed current release version to 1.3.1
- FEAT: included additional input parameters to control depth-map range when calling
-
ppm_get_values
:- BUILD: now calls
python/get_values_and_export_mesh_v1_3_1.py
- BUILD: now calls
-
ppm_set_values
:- FEAT: added input arguments to control nearest and farthest values in (normalised) depth map
- DOCS: added description of input arguments to control nearest and farthest values in (normalised) depth map
-
ppm_blender_execute
:- BUILD: now calls
python/set_values_and_export_mesh_v1_3_1.py
using the additional input parameters for depth-map control
- BUILD: now calls
Matlab_1.3.0
Parametric pinna model (PPM) - MATLAB interface
Author: Florian Pausch (2022)
Versions and contributors:
0.8 and above: Florian Pausch (2022)
0.7 and below: Oscar Jones, Mantas Tamulionis (2021)
Current version:
1.3.0 (release)
OVERVIEW
-
demo_ppm
MATLAB script to demonstrate the functionality of the interface to the PPM, including bi-directional communication with Blender via Python API -
Main functions:
-
ppm_initialize()
- initialize the PPM structure array
- optionally clean up previous data in result directory
-
ppm_get_values()
- obtain the parameter values from the PPM contained in the Blender file to be modified, as specified in the PPM structure array
- return a subset of parameter values as per 'type', 'name', 'axis'
- render the PPM mesh as
ply
file
-
ppm_set_values()
Set the parameter values of the PPM contained in the Blender file to be modified- independently select and modify parameters via 'type'/'name'/'axis'
- specify the rotation of PPM parameters via Euler angles
- itr=1: change the selected parameter values only once as per ppm.modify.instruction_mode
- itr>1: test itr neigboring values in steps of range/itr in a range of (+/- range/2) symmetric around val
- render the PPM mesh as
ply
file - manually set the camera pose when rendering an image
- automatically set the camera rotation to point at a specified reference point cam_loc_ref
- render the PPM mesh as
png
image - render depth information as
png
andexr
images
-
ppm_evaluate()
Evaluate the PPM mesh against a target mesh in terms of the Hausdorff distance- plot modeled point cloud vs. target point cloud
- plot histogram of Hausdorff values
- if ppm.modify > 1 the parameter value is set to the one resulting in the minimum mean minimum Hausdorff distance across iterations
ppm_evaluate_multiple_meshes
MATLAB script to compare multiple PPM meshes to the corresponding target meshes and evaluate their geometric fit in terms of the Hausdorff distance
COMPATIBILITY
- versions 1.1.0 and above only work with the Blender model ARI_PPM_v1 (armature and object definitions), see config/parameter_defaults_v1.mat and config/shape_key_limits_v1.mat.
- version 1.3.0 requires the current Python scripts
python/get_values_and_export_mesh_v1_3_0.py
andpython/set_values_and_export_mesh_v1_3_0.py
RELEASE NOTES
-
python/get_values_and_export_mesh_v1_3_0.py
:- BUILD: renamed from
get_values_and_export_mesh_v1_2.py
(no code changes) - DOCS: added description and author contributions
- BUILD: renamed from
-
python/set_values_and_export_mesh_v1_3_0.py
:- BUILD: renamed from
set_values_and_export_mesh_v1_2.py
(now obsolete) - FEAT: implemented depth extraction via Blender's compositing nodes
- use depth output from render-layer node
- map depth output:
* minimum of input range: 0
* maximum of input range: Euclidian distance of camera to origin of global coordinate system in Blender units
* minimum of output range: 1 (white), normalised
* maximum of output range: 0 (black), normalised - FEAT: depth map is saved as OPEN_EXR and PNG files
- FEAT: added input parameters for various file settings (see function description of
ppm_set_values
) - PERF: renamed automatically generated ouput files by removing frame idx
- DOCS: added description and author contributions
- BUILD: renamed from
-
ppm_initialize
:- FIX: incomplete clean-up of previous data
-
ppm_get_values
:- BUILD: now calls
python/get_values_and_export_mesh_v1_3_0.py
- DOCS: updated function description
- BUILD: now calls
-
ppm_set_values
:- FEAT: extended parser to control rendering parameters of PNG and EXR files
- PERF: removed optional input parameters as parser in ppm_blender_execute was removed
- DOCS: updated function description
-
ppm_blender_execute
:- BUILD: now calls
python/set_values_and_export_mesh_v1_3_0.py
- FEAT: extended parser to control rendering parameters of PNG and EXR files
- PERF: removed parser and instead use modified parameter values in PPM struct
- DOCS: updated function description
- BUILD: now calls
Matlab_1.2.0
Parametric pinna model (PPM) - MATLAB interface
Author: Florian Pausch (2022)
Versions and contributors:
1.0.0 and above: Florian Pausch (2022)
0.9.0: Florian Pausch (2022)
0.8: Florian Pausch (2022)
0.7 and below: Oscar Jones, Mantas Tamulionis (2021)
Current version:
1.2.0 (release)
OVERVIEW
-
demo_ppm
MATLAB script to demonstrate the functionality of the interface to the PPM, including bi-directional communication with Blender via Python API -
Main functions:
-
ppm_initialize()
- initialize the PPM structure array
- optionally clean up previous data in result directory
-
ppm_get_values()
- obtain the parameter values from the PPM contained in the Blender file to be modified, as specified in the PPM structure array
- return a subset of parameter values as per 'type', 'name', 'axis'
- render the PPM mesh as
ply
file
-
ppm_set_values()
Set the parameter values of the PPM contained in the Blender file to be modified- independently select and modify parameters via 'type'/'name'/'axis'
- specify the rotation of PPM parameters via Euler angles
- itr=1: change the selected parameter values only once as per ppm.modify.instruction_mode
- itr>1: test itr neigboring values in steps of range/itr in a range of (+/- range/2) symmetric around val
- render the PPM mesh as
ply
file - manually set the camera pose when rendering an image
- automatically set the camera rotation to point at a specified reference point cam_loc_ref
- render the PPM mesh as
png
image
-
ppm_evaluate()
Evaluate the PPM mesh against a target mesh in terms of the Hausdorff distance- plot modeled point cloud vs. target point cloud
- plot histogram of Hausdorff values
- if ppm.modify > 1 the parameter value is set to the one resulting in the minimum mean minimum Hausdorff distance across iterations
ppm_evaluate_multiple_meshes
MATLAB script to compare multiple PPM meshes to the corresponding target meshes and evaluate their geometric fit in terms of the Hausdorff distance
COMPATIBILITY
- versions 1.1.0 and above only work with the Blender model ARI_PPM_v1 (armature and object definitions), see config/parameter_defaults_v1.mat and config/shape_key_limits_v1.mat.
- version 1.2.0 requires the current Python scripts
python/get_existing_values_v1_2.py
andpython/set_existing_values_v1_2.py
RELEASE NOTES
-
python/get_values_and_export_mesh_v1_2.py
:- BUILD: renamed from
get_values_and_export_mesh_v1.py
(now obsolete) - PERF: disabled rendering of blender_bones_data.ply
- BUILD: renamed from
-
python/set_values_and_export_mesh_v1_2.py
:- BUILD: renamed from
set_values_and_export_mesh_v1.py
(now obsolete) - FEAT: added default camera pose when rendering an image without defining a camera pose
- FEAT: manually set camera position and orientation before rendering the image
- FEAT: automatically rotate the camera to a defined reference point
- PERF: disabled rendering of blender_bones_data.ply
- BUILD: renamed from
-
ppm_initialize
:- FIX: incomplete clean-up of previous data
- FEAT: create folder 'external' and automatically download MATLAB class
quaternion
if not available - DOCS: updated function description
-
ppm_get_values
:- BUILD: now calls
python/get_values_and_export_mesh_v1_2.py
- DOCS: updated function description
- BUILD: now calls
-
ppm_set_values
:- BUILD: now calls
python/set_values_and_export_mesh_v1_2.py
- FEAT: added option to specify the rotation of PPM parameters via Euler angles
- FEAT: added option to set camera position and orientation before rendering the image
- FEAT: added option to automatically rotate the camera to a defined reference point
- DOCS: updated function description
- BUILD: now calls
-
ppm_modify_parameter_values
:- FEAT: reconstruct corresponding quaternion from modified triplet of Euler angles
- FEAT: exports camera pose settings as txt-file to be loaded by
python/set_values_and_export_mesh_v1_2.py
-
ppm_blender_execute
:- BUILD: now calls
python/set_values_and_export_mesh_v1_2.py
- DOCS: updated function description
- BUILD: now calls
-
ppm_evaluate
:- DOCS: updated function description
Matlab_1.1.0
Parametric pinna model (PPM) - MATLAB interface
Author: Florian Pausch (2022)
Versions and contributors:
1.0.0 and above: Florian Pausch (2022)
0.9.0: Florian Pausch (2022)
0.8: Florian Pausch (2022)
0.7 and below: Oscar Jones, Mantas Tamulionis (2021)
Current version:
1.1.0 (release)
OVERVIEW
-
demo_ppm
MATLAB script to demonstrate the functionality of the interface to the PPM, including bi-directional communication with Blender via Python API -
Main functions:
-
ppm_initialize()
Initialize the PPM structure array -
ppm_get_values()
Obtain the parameter values from the Blender file to be modified, as specified in the PPM structure array, and return a subset of parameter values as per 'type', 'name', 'axis' -
ppm_set_values()
Set the PPM parameter values of the Blender file to be modified
-> independent parameter selection via 'type'/'name'/'axis'
-> itr=1: change the selected parameter values only once as per ppm.modify.instruction_mode
-> itr>1: test itr neigboring values in steps of range/itr in a range of (+/- range/2) symmetric around val -
ppm_evaluate()
Evaluate the PPM mesh against a target mesh in terms of the Hausdorff distance
-> plot histogram of Hausdorff values
-> if ppm.modify > 1 the parameter value is set to the one resulting in the minimum mean minimum Hausdorff distance across iterations
ppm_evaluate_multiple_meshes
MATLAB script to compare multiple PPM meshes to the corresponding target meshes and evaluate their geometric fit in terms of the Hausdorff distance
COMPATIBILITY
- versions 1.0.0 and above only work with the Blender model ARI_PPM_v1 (armature and object definitions), see config/parameter_defaults_v1.mat and config/shape_key_limits_v1.mat. The corresponding Python scripts
python/get_existing_values_v1.py
andpython/modify_and_export_v1.py
have been updated.
VERSIONS
-
1.1.0 (release)
- blender model: renamed ARI_PPM_v0_3 to ARI_PPM_v1
get_existing_values_v0_3.py
: renamed toget_values_and_export_mesh_v1.py
, now additionally exports PPM template mesh as .ply filemodify_and_export_mesh_v0_3.py
: renamed toset_values_and_export_mesh_v1.py
- parameter_defaults_v0_3.mat: renamed to parameter_defaults_v1.mat
ppm_evaluate
: added option to load other than default PPM mesh
-
1.0.2:
ppm_evaluate
: added option to set caxis limitsmodify_and_export_mesh.py
: removed decimate modifiers which reduce the complexity of the mesh when selecting the option 'remesh' inppm_set_values()
- config folder: renamed to default
- external folder: removed
- improved function descriptions
-
1.0.1:
ppm_evaluate_multiple_meshes
: new MATLAB script to compare multiple PPM meshes to the corresponding target meshes and evaluate their geometric fit in terms of the Hausdorff distance
-
1.0.0:
- blender model ARI_PPM_v0_2: renamed and updated to ARI_PPM_v1, new armature, object, and shape key definitions (not backward compatible, i.e. for versions below 1.0.0), naming conventions: Start with upper-case letter, continue in lower-case, string separators "_" and "-"
<Bone_name>-<Part_of_bone> -> e.g. Helix_up-Start, Crus_inferius_anthelicis-Bendy ppm_initialize
: modified parameter_defaults_v1.mat and shape_key_limits_v1.mat (former parameter_limits.mat) to match new definitions- config folder: added new default blender file (PPM_default_v1.blend)
- blender model ARI_PPM_v0_2: renamed and updated to ARI_PPM_v1, new armature, object, and shape key definitions (not backward compatible, i.e. for versions below 1.0.0), naming conventions: Start with upper-case letter, continue in lower-case, string separators "_" and "-"
-
0.9.3:
get_existing_values.py
: added W component when fetching the parameter values from specified blender file (extension of the parameter set of type 'Rotation'). The previously ignored W-component of the orientation quaternion is now included and can be queried and set viappm_get_values()
andppm_set_values()
, respectively. The corresponding Python scriptspython/get_existing_values.py
andpython/modify_and_export.py
have been updated.modify_and_export_mesh.py
: added W-component when setting the parameter values in the specified blender fileppm_initialize
: updated initialization- parameter_defaults.mat: updated
-
0.9.2:
ppm_get_values
: select and return parameter values
-
0.9.1:
ppm_get_values
: selection of parameter values is now possible via parameter type and nameppm_set_values
: independent setting of parameter valuesppm_evaluate
: itr>1: assign parameter values yielding the lowest Hausdorff distance to current set of parameter values- improved function descriptions
- code improvements at several locations
-
0.9.0:
- switched to semantic versioning
- improved interface design by implementing the functions
ppm_initialize()
,ppm_get_values()
,ppm_set_values()
andppm_evaluate()
ppm_initialize
: new MATLAB function to initialize the PPM structure arrayppm_get_values
: new MATLAB function to obtain the parameter values from the blender file to be modifiedppm_set_values
: new MATLAB function to set the PPM parameter values of the blender file to be modifiedppm_evaluate
: new MATLAB function to evaluate the PPM template mesh against a target mesh in terms of the Hausdorff distance- added function descriptions
-
0.8:
- extensive MATLAB interface re-design
- integrated functionality of previous interface versions into functions
- renamed functions for consistency (
ppm_<function name>
) - new folder structure for improved tidyness (config, data, external, python, result)