--- a
+++ b/tool_funcs/readVTPfile.m
@@ -0,0 +1,59 @@
+%-------------------------------------------------------------------------%
+%    Copyright (c) 2021 Modenese L.                                       %
+%    Author:   Luca Modenese,  2021                                       %
+%    email:    l.modenese@imperial.ac.uk                                  %
+% ----------------------------------------------------------------------- %
+% read VTP as a VTK file. No differences wrt easier approach from 2013.
+function [P, C, N] = readVTPfile(aVTKfile, debugplots)
+
+% no plots by default
+if nargin<2;     debugplots = 0;   end
+
+% check on the file: is it open?
+if ~isfile(aVTKfile)
+    error([aVTKfile, 'does not exist']);
+end
+
+% parse the xml VTP structure in a MATLAB structure
+F = xml2struct(aVTKfile);
+% read the number of points
+N_points = str2double(F.VTKFile.PolyData.Piece.Attributes.NumberOfPoints);
+% read the number of polygons
+N_polys = str2double(F.VTKFile.PolyData.Piece.Attributes.NumberOfPolys);
+
+% get the normals
+normals = F.VTKFile.PolyData.Piece.PointData.DataArray.Text;
+N = textscan(normals,'%f %f %f\n');
+N = [N{1}, N{2}, N{3}];
+
+% read the points
+points = F.VTKFile.PolyData.Piece.Points.DataArray.Text;
+P = textscan(points,'%f %f %f\n');
+P = [P{1}, P{2}, P{3}];
+if size(P,1)~=N_points
+    error(['readVTP.m Error reading file ', aVTKfile]);
+end
+
+% read the connectivity matrix
+connectivity = F.VTKFile.PolyData.Piece.Polys.DataArray;
+temp_con = connectivity{1};
+connectivity = strjust(strtrim(deblank(temp_con.Text)), 'left');
+
+% from OpenSim vtp these files are read as a long row
+
+% C = textscan(connectivity,'%f %f %f\n');
+% C = [C{1}, C{2}, C{3}];
+C = textscan(connectivity,'%f %f %f %f\n');
+C = [C{1}, C{2}, C{3}];
+% C = str2num(connectivity);
+% readjust the list of values and add one (numbering starts at zero
+% otherwise.
+C = reshape(C', [3, N_polys])'+1;
+
+% debug plotting
+if debugplots
+    TR = triangulation(C, P);
+    trisurf(TR); axis equal
+    title('The VTP file you are trying to read')
+end
+end
\ No newline at end of file