Failed to load a mesh from gptoolbox. I am missing something, what is it?
Show older comments
% 1. Load a Mesh
[V, F] = readOFF('D:\Conferences and Workshops\SG Summer\MFC - S\codes\gptoolbox-master\gptoolbox-master\mesh.off');
% 2. Display the Mesh
figure;
trisurf(F, V(:,1), V(:,2), V(:,3), 'FaceColor', 'cyan', 'EdgeColor', 'none');
axis equal;
lighting gouraud;
camlight;
title('Original Mesh');
xlabel('X');
ylabel('Y');
zlabel('Z');
% Define the number of iterations and timestep for smoothing
num_iterations = 100;
time_step = 0.01;
% 3. Mean Curvature Flow (MCF) - Explicit Method
V_explicit = V; % Copy the vertices for the explicit method
for iter = 1:num_iterations
% Compute the Laplace-Beltrami operator and mean curvature normal
L = cotmatrix(V_explicit, F);
HN = -L * V_explicit;
% Update vertex positions
V_explicit = V_explicit + time_step * HN;
end
% Display the smoothed mesh - Explicit Method
figure;
trisurf(F, V_explicit(:,1), V_explicit(:,2), V_explicit(:,3), 'FaceColor', 'cyan', 'EdgeColor', 'none');
axis equal;
lighting gouraud;
camlight;
title('MCF - Explicit Method');
xlabel('X');
ylabel('Y');
zlabel('Z');
% 3. Mean Curvature Flow (MCF) - Semi-Implicit Method
V_implicit = V; % Copy the vertices for the implicit method
for iter = 1:num_iterations
% Compute the Laplace-Beltrami operator
L = cotmatrix(V_implicit, F);
% Solve (I - time_step * L) * V_new = V_old
V_implicit = (speye(size(V_implicit, 1)) - time_step * L) \ V_implicit;
end
% Display the smoothed mesh - Semi-Implicit Method
figure;
trisurf(F, V_implicit(:,1), V_implicit(:,2), V_implicit(:,3), 'FaceColor', 'cyan', 'EdgeColor', 'none');
axis equal;
lighting gouraud;
camlight;
title('MCF - Semi-Implicit Method');
xlabel('X');
ylabel('Y');
zlabel('Z');
here is the link to loadmesh function: https://github.com/geometry-processing/gptoolbox/blob/master/mesh/load_mesh.m
I get this error:
shittyday (%sorry this is the name of the script)
Error using fscanf
Invalid file identifier. Use fopen to generate a valid file identifier.
Error in readOFF (line 27)
OFFheader = upper(fscanf( fp, '%s\n', 1 ));
Error in shittyday (line 2)
[V, F] = readOFF('D:\Conferences and Workshops\SG Summer\MFC - S\codes\gptoolbox-master\gptoolbox-master\mesh.off');
12 Comments
Walter Roberson
on 13 Aug 2024
Do you get an error message?
ehsan
on 13 Aug 2024
Vinay
on 13 Aug 2024
Hello Eshan,
I tried running the code on an irregular polyhedron (.off file) and it is working correctly. Could you please provide more details about the error you are encountering?
Vinay
on 13 Aug 2024
Can you share the 'mesh.off' file ?
ehsan
on 13 Aug 2024
Vinay
on 13 Aug 2024
Try adding this command in the readoff.m file to check if 'fopen' is opening the file correctly or not
fp = fopen( filename, 'r' );
if fp == -1
error('Failed to open file: %s', filename);
end
OFFheader = upper(fscanf( fp, '%s\n', 1 ));
ehsan
on 13 Aug 2024
ehsan
on 13 Aug 2024
@ehsan I have attached a 'face.zip' file containig the face.off file and the 'demo.m' which is loading the mesh.
Try to run this script and if you face any issue please tell me.
Also can you share this 'D:\Conferences and Workshops\SG Summer\MFC - S\codes\gptoolbox-master\gptoolbox-master\mesh.off' file you are trying to load in your script.
ehsan
on 13 Aug 2024
ehsan
on 13 Aug 2024
Edited: Walter Roberson
on 13 Aug 2024
Accepted Answer
More Answers (0)
Categories
Find more on Polygons in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!