Extension of libigl which allows to also read the texture of wrl-files in Python as igl.read_triangle_mesh(wrFilePath, V, F, TC)

jalec a982a13696 makefile, h2pair and todos before trying to convert all 13 жил өмнө
examples 8988a40736 example fun example shows benefit of header only library 13 жил өмнө
EPS.h c66820d5e3 clean up all around 13 жил өмнө
Makefile a982a13696 makefile, h2pair and todos before trying to convert all 13 жил өмнө
ONE.h c66820d5e3 clean up all around 13 жил өмнө
PI.h 9f4b4acd36 per corner normals, texture mapping 13 жил өмнө
ReAntTweakBar.h c66820d5e3 clean up all around 13 жил өмнө
Timer.h c66820d5e3 clean up all around 13 жил өмнө
ZERO.h c66820d5e3 clean up all around 13 жил өмнө
adjacency_list.h c66820d5e3 clean up all around 13 жил өмнө
adjacency_matrix.h 3a7e857da3 added reserves to functions using DynamicSparseMatrix, where appropriate 13 жил өмнө
all_pairs_distances.h c66820d5e3 clean up all around 13 жил өмнө
axis_angle_to_quat.h 8df094f330 cleaned up verbose outputs 13 жил өмнө
basename.h f803e13d06 fixed min_quad_* to handle non positive definite systems (though falls back on dense decomposition) 13 жил өмнө
canonical_quaternions.h 4dfd20d527 Templatized (or began to at least) canonical_quaternions 14 жил өмнө
cat.h c66820d5e3 clean up all around 13 жил өмнө
cocoa_key_to_anttweakbar_key.h c66820d5e3 clean up all around 13 жил өмнө
colon.h 8df094f330 cleaned up verbose outputs 13 жил өмнө
concat.h 2ec5601563 added missing inlines 13 жил өмнө
cotangent.h c66820d5e3 clean up all around 13 жил өмнө
cotmatrix.h 4be1028505 Fixed and generalized cotmatrix, write .mesh file, cat like matlab's cat 13 жил өмнө
create_index_vbo.h 7e8e5ed1f1 fix unix dependencies and added ifdef include windows around opengl includes 13 жил өмнө
create_mesh_vbo.h 7e8e5ed1f1 fix unix dependencies and added ifdef include windows around opengl includes 13 жил өмнө
create_shader_program.h 49d35546d5 Explicit instantiation 13 жил өмнө
create_vector_vbo.h 7e8e5ed1f1 fix unix dependencies and added ifdef include windows around opengl includes 13 жил өмнө
cross.h abd98b398b added a bunch of quaternion math, vector math and trackball 14 жил өмнө
destroy_shader_program.h 7e8e5ed1f1 fix unix dependencies and added ifdef include windows around opengl includes 13 жил өмнө
diag.h f803e13d06 fixed min_quad_* to handle non positive definite systems (though falls back on dense decomposition) 13 жил өмнө
dirname.h 0289f43a50 missing inlines and organization 14 жил өмнө
dot.h abd98b398b added a bunch of quaternion math, vector math and trackball 14 жил өмнө
edges.h c976e54f83 upsample, limit faces to subset of indices, reorder vertex and face list so face'd indices are first, all pairs distances 13 жил өмнө
edgetopology.h c66820d5e3 clean up all around 13 жил өмнө
example_fun.cpp cfb91ba04f script to separate .h into .h and .cpp pair 13 жил өмнө
example_fun.h cfb91ba04f script to separate .h into .h and .cpp pair 13 жил өмнө
faces_first.h c66820d5e3 clean up all around 13 жил өмнө
file_contents_as_string.h c66820d5e3 clean up all around 13 жил өмнө
file_exists.h 8fc2d636da Added more php-like file permissions/existence checkers. And an example which tests them against their php cousins. 14 жил өмнө
find.h f803e13d06 fixed min_quad_* to handle non positive definite systems (though falls back on dense decomposition) 13 жил өмнө
full.h a62d483b1c colon, full and speye functions to match matlab 13 жил өмнө
get_seconds.h c66820d5e3 clean up all around 13 жил өмнө
get_seconds_hires.h c66820d5e3 clean up all around 13 жил өмнө
gl_type_size.h c66820d5e3 clean up all around 13 жил өмнө
grad.h c66820d5e3 clean up all around 13 жил өмнө
h2pair.sh a982a13696 makefile, h2pair and todos before trying to convert all 13 жил өмнө
igl_inline.h cfb91ba04f script to separate .h into .h and .cpp pair 13 жил өмнө
is_border_vertex.h c66820d5e3 clean up all around 13 жил өмнө
is_dir.h 7e8e5ed1f1 fix unix dependencies and added ifdef include windows around opengl includes 13 жил өмнө
is_file.h 8fc2d636da Added more php-like file permissions/existence checkers. And an example which tests them against their php cousins. 14 жил өмнө
is_manifold.h c66820d5e3 clean up all around 13 жил өмнө
is_readable.h 7e8e5ed1f1 fix unix dependencies and added ifdef include windows around opengl includes 13 жил өмнө
is_symmetric.h f803e13d06 fixed min_quad_* to handle non positive definite systems (though falls back on dense decomposition) 13 жил өмнө
is_writable.h 7e8e5ed1f1 fix unix dependencies and added ifdef include windows around opengl includes 13 жил өмнө
limit_faces.h c66820d5e3 clean up all around 13 жил өмнө
list_to_matrix.h c66820d5e3 clean up all around 13 жил өмнө
load_shader.h c66820d5e3 clean up all around 13 жил өмнө
lu_lagrange.h f803e13d06 fixed min_quad_* to handle non positive definite systems (though falls back on dense decomposition) 13 жил өмнө
mat_max.h c66820d5e3 clean up all around 13 жил өмнө
mat_min.h c66820d5e3 clean up all around 13 жил өмнө
material_colors.h c66820d5e3 clean up all around 13 жил өмнө
matlab-to-eigen.html 618e148359 cat and .mesh reader writer 13 жил өмнө
matlabinterface.h c66820d5e3 clean up all around 13 жил өмнө
max_size.h c66820d5e3 clean up all around 13 жил өмнө
min_quad_dense.h c66820d5e3 clean up all around 13 жил өмнө
min_quad_with_fixed.h 8df094f330 cleaned up verbose outputs 13 жил өмнө
min_size.h c66820d5e3 clean up all around 13 жил өмнө
mode.h c66820d5e3 clean up all around 13 жил өмнө
moveFV.h c66820d5e3 clean up all around 13 жил өмнө
mvc.h c66820d5e3 clean up all around 13 жил өмнө
normalize_quat.h f9c9115e03 Templated the quaternion functions and EPS, a few more quaternion functions, fixed prototypes and header defines in writeOBJ 14 жил өмнө
normalize_rows.h c66820d5e3 clean up all around 13 жил өмнө
orth.h c66820d5e3 clean up all around 13 жил өмнө
pathinfo.h f803e13d06 fixed min_quad_* to handle non positive definite systems (though falls back on dense decomposition) 13 жил өмнө
per_corner_normals.h 9f4b4acd36 per corner normals, texture mapping 13 жил өмнө
per_face_normals.h f803e13d06 fixed min_quad_* to handle non positive definite systems (though falls back on dense decomposition) 13 жил өмнө
per_vertex_normals.h f803e13d06 fixed min_quad_* to handle non positive definite systems (though falls back on dense decomposition) 13 жил өмнө
plot_vector.h c66820d5e3 clean up all around 13 жил өмнө
point_in_circle.h b7e523aec7 project/unproject wrappers, 2d point in circle test and eigen affine matrix example 14 жил өмнө
pos.h c66820d5e3 clean up all around 13 жил өмнө
print_gl_get.h c66820d5e3 clean up all around 13 жил өмнө
print_ijv.h 19fc88d42f bug fixes and clean up for cotmatrix, 14 жил өмнө
print_program_info_log.h c66820d5e3 clean up all around 13 жил өмнө
print_shader_info_log.h c66820d5e3 clean up all around 13 жил өмнө
project.h 7e8e5ed1f1 fix unix dependencies and added ifdef include windows around opengl includes 13 жил өмнө
quat_conjugate.h f9c9115e03 Templated the quaternion functions and EPS, a few more quaternion functions, fixed prototypes and header defines in writeOBJ 14 жил өмнө
quat_mult.h f9c9115e03 Templated the quaternion functions and EPS, a few more quaternion functions, fixed prototypes and header defines in writeOBJ 14 жил өмнө
quat_to_mat.h c66820d5e3 clean up all around 13 жил өмнө
read.h f803e13d06 fixed min_quad_* to handle non positive definite systems (though falls back on dense decomposition) 13 жил өмнө
readDMAT.h b7e523aec7 project/unproject wrappers, 2d point in circle test and eigen affine matrix example 14 жил өмнө
readMESH.h 49d35546d5 Explicit instantiation 13 жил өмнө
readOBJ.h 6cc82477d7 ONE variables, cotangent for each edge of each face, snotes in zum 13 жил өмнө
readOFF.h f803e13d06 fixed min_quad_* to handle non positive definite systems (though falls back on dense decomposition) 13 жил өмнө
readme.txt cfb91ba04f script to separate .h into .h and .cpp pair 13 жил өмнө
removeDuplicates.h c66820d5e3 clean up all around 13 жил өмнө
removeUnreferenced.h c66820d5e3 clean up all around 13 жил өмнө
reorder.h 206e6bc0eb fixed some template issues and strict warnings, gl type to string, type to size, matlab to eigen html doc 14 жил өмнө
repdiag.h 4be1028505 Fixed and generalized cotmatrix, write .mesh file, cat like matlab's cat 13 жил өмнө
repmat.h f803e13d06 fixed min_quad_* to handle non positive definite systems (though falls back on dense decomposition) 13 жил өмнө
report_gl_error.h c66820d5e3 clean up all around 13 жил өмнө
rotate_by_quat.h f9c9115e03 Templated the quaternion functions and EPS, a few more quaternion functions, fixed prototypes and header defines in writeOBJ 14 жил өмнө
rows_to_matrix.h c66820d5e3 clean up all around 13 жил өмнө
slice.h 1e33670556 fixed bug in slice>sparse 13 жил өмнө
slice_into.h 8302a36e26 slice into 13 жил өмнө
snap_to_canonical_view_quat.h 206e6bc0eb fixed some template issues and strict warnings, gl type to string, type to size, matlab to eigen html doc 14 жил өмнө
sort.h c66820d5e3 clean up all around 13 жил өмнө
sparse.h 8df094f330 cleaned up verbose outputs 13 жил өмнө
speye.h c66820d5e3 clean up all around 13 жил өмнө
stdin_to_temp.h c66820d5e3 clean up all around 13 жил өмнө
sum.h c66820d5e3 clean up all around 13 жил өмнө
texture_from_tga.h c66820d5e3 clean up all around 13 жил өмнө
tga.h c66820d5e3 clean up all around 13 жил өмнө
todos.txt a982a13696 makefile, h2pair and todos before trying to convert all 13 жил өмнө
trackball.h c66820d5e3 clean up all around 13 жил өмнө
transpose_blocks.h f803e13d06 fixed min_quad_* to handle non positive definite systems (though falls back on dense decomposition) 13 жил өмнө
tt.h c66820d5e3 clean up all around 13 жил өмнө
tutorial.html e9ac385dff tutorial 13 жил өмнө
uniform_type_to_string.h 7e8e5ed1f1 fix unix dependencies and added ifdef include windows around opengl includes 13 жил өмнө
unproject.h 7e8e5ed1f1 fix unix dependencies and added ifdef include windows around opengl includes 13 жил өмнө
upsample.h c66820d5e3 clean up all around 13 жил өмнө
verbose.h 0abb7a4d3c changed interfaces of read*.h to return bool, 14 жил өмнө
vf.h c976e54f83 upsample, limit faces to subset of indices, reorder vertex and face list so face'd indices are first, all pairs distances 13 жил өмнө
write.h c66820d5e3 clean up all around 13 жил өмнө
writeDMAT.h 8df094f330 cleaned up verbose outputs 13 жил өмнө
writeMESH.h 8bcd85c89d fixed warnings in writeMESH 13 жил өмнө
writeOBJ.h f803e13d06 fixed min_quad_* to handle non positive definite systems (though falls back on dense decomposition) 13 жил өмнө
writeOFF.h c66820d5e3 clean up all around 13 жил өмнө

readMESH.h

#ifndef IGL_READMESH_H
#define IGL_READMESH_H

#include
#include

namespace igl
{
// load a tetrahedral volume mesh from a .mesh file
//
// Templates:
// Scalar type for positions and vectors (will be read as double and cast
// to Scalar)
// Index type for indices (will be read as int and cast to Index)
// Input:
// mesh_file_name path of .mesh file
// Outputs:
// V double matrix of vertex positions #V by 3
// T #T list of tet indices into vertex positions
// F #F list of face indices into vertex positions
template
inline bool readMESH(
const std::string mesh_file_name,
std::vector > & V,
std::vector > & T,
std::vector > & F);

// Input:
// mesh_file_name path of .mesh file
// Outputs:
// V eigen double matrix #V by 3
// T eigen int matrix #T by 4
// F eigen int matrix #F by 3
inline bool readMESH(
const std::string str,
Eigen::MatrixXd& V,
Eigen::MatrixXi& T,
Eigen::MatrixXi& F);
}

// Implementation
#include
#include

template
inline bool igl::readMESH(
const std::string mesh_file_name,
std::vector > & V,
std::vector > & T,
std::vector > & F)
{
using namespace std;
using namespace igl;
FILE * mesh_file = fopen(mesh_file_name.c_str(),"r");
if(NULL==mesh_file)
{
fprintf(stderr,"IOError: %s could not be opened...",mesh_file_name.c_str());
return false;
}
#ifndef LINE_MAX
# define LINE_MAX 2048
#endif
char line[LINE_MAX];
bool still_comments;
V.clear();
T.clear();
F.clear();

// eat comments at beginning of file
still_comments= true;
while(still_comments)
{
fgets(line,LINE_MAX,mesh_file);
still_comments = (line[0] == '#' || line[0] == '\n');
}

char str[LINE_MAX];
sscanf(line," %s",str);
// check that first word is MeshVersionFormatted
if(0!=strcmp(str,"MeshVersionFormatted"))
{
fprintf(stderr,
"Error: first word should be MeshVersionFormatted not %s\n",str);
fclose(mesh_file);
return false;
}
int one = -1;
if(2 != sscanf(line,"%s %d",str,&one))
{
// 1 appears on next line?
fscanf(mesh_file," %d",&one);
}
if(one != 1)
{
fprintf(stderr,"Error: second word should be 1 not %d\n",one);
fclose(mesh_file);
return false;
}

// eat comments
still_comments= true;
while(still_comments)
{
fgets(line,LINE_MAX,mesh_file);
still_comments = (line[0] == '#' || line[0] == '\n');
}

sscanf(line," %s",str);
// check that third word is Dimension
if(0!=strcmp(str,"Dimension"))
{
fprintf(stderr,"Error: third word should be Dimension not %s\n",str);
fclose(mesh_file);
return false;
}
int three = -1;
if(2 != sscanf(line,"%s %d",str,&three))
{
// 1 appears on next line?
fscanf(mesh_file," %d",&three);
}
if(three != 3)
{
fprintf(stderr,"Error: only Dimension 3 supported not %d\n",three);
fclose(mesh_file);
return false;
}

// eat comments
still_comments= true;
while(still_comments)
{
fgets(line,LINE_MAX,mesh_file);
still_comments = (line[0] == '#' || line[0] == '\n');
}

sscanf(line," %s",str);
// check that fifth word is Vertices
if(0!=strcmp(str,"Vertices"))
{
fprintf(stderr,"Error: fifth word should be Vertices not %s\n",str);
fclose(mesh_file);
return false;
}

//fgets(line,LINE_MAX,mesh_file);

#ifdef __APPLE__
size_t number_of_vertices;
#else
int number_of_vertices;
#endif
if(1 != fscanf(mesh_file," %ld",&number_of_vertices) || number_of_vertices > 1000000000)
{
fprintf(stderr,"Error: expecting number of vertices less than 10^9...\n");
fclose(mesh_file);
return false;
}
// allocate space for vertices
V.resize(number_of_vertices,vector(3,0));
#ifdef __APPLE__
size_t extra;
#else
int extra;
#endif
for(size_t i = 0;i {
double x,y,z;
if(4 != fscanf(mesh_file," %lg %lg %lg %ld",&x,&y,&z,&extra))
{
fprintf(stderr,"Error: expecting vertex position...\n");
fclose(mesh_file);
return false;
}
V[i][0] = x;
V[i][1] = y;
V[i][2] = z;
}

// eat comments
still_comments= true;
while(still_comments)
{
fgets(line,LINE_MAX,mesh_file);
still_comments = (line[0] == '#' || line[0] == '\n');
}

sscanf(line," %s",str);
// check that sixth word is Triangles
if(0!=strcmp(str,"Triangles"))
{
fprintf(stderr,"Error: sixth word should be Triangles not %s\n",str);
fclose(mesh_file);
return false;
}
#ifdef __APPLE__
size_t number_of_triangles;
#else
int number_of_triangles;
#endif
if(1 != fscanf(mesh_file," %ld",&number_of_triangles))
{
fprintf(stderr,"Error: expecting number of triangles...\n");
fclose(mesh_file);
return false;
}
// allocate space for triangles
F.resize(number_of_triangles,vector(3));
// triangle indices
#ifdef __APPLE__
size_t tri[3];
#else
int tri[3];
#endif
for(size_t i = 0;i {
if(4 != fscanf(mesh_file," %ld %ld %ld %ld",&tri[0],&tri[1],&tri[2],&extra))
{
printf("Error: expecting triangle indices...\n");
return false;
}
for(size_t j = 0;j<3;j++)
{
F[i][j] = tri[j]-1;
}
}

// eat comments
still_comments= true;
while(still_comments)
{
fgets(line,LINE_MAX,mesh_file);
still_comments = (line[0] == '#' || line[0] == '\n');
}

sscanf(line," %s",str);
// check that sixth word is Triangles
if(0!=strcmp(str,"Tetrahedra"))
{
fprintf(stderr,"Error: seventh word should be Tetrahedra not %s\n",str);
fclose(mesh_file);
return false;
}
#ifdef __APPLE__
size_t number_of_tetrahedra;
#else
int number_of_tetrahedra;
#endif
if(1 != fscanf(mesh_file," %ld",&number_of_tetrahedra))
{
fprintf(stderr,"Error: expecting number of tetrahedra...\n");
fclose(mesh_file);
return false;
}
// allocate space for tetrahedra
T.resize(number_of_tetrahedra,vector(4));
// tet indices
#ifdef __APPLE__
size_t a,b,c,d;
#else
int a,b,c,d;
#endif
for(size_t i = 0;i {
if(5 != fscanf(mesh_file," %ld %ld %ld %ld %ld",&a,&b,&c,&d,&extra))
{
fprintf(stderr,"Error: expecting tetrahedra indices...\n");
fclose(mesh_file);
return false;
}
T[i][0] = a-1;
T[i][1] = b-1;
T[i][2] = c-1;
T[i][3] = d-1;
}
fclose(mesh_file);
return true;
}

#include
#include "list_to_matrix.h"

inline bool igl::readMESH(
const std::string str,
Eigen::MatrixXd& V,
Eigen::MatrixXi& T,
Eigen::MatrixXi& F)
{
std::vector > vV,vT,vF;
bool success = igl::readMESH(str,vV,vT,vF);
if(!success)
{
// readOBJ(str,vV,vTC,vN,vF,vFTC,vFN) should have already printed an error
// message to stderr
return false;
}
bool V_rect = igl::list_to_matrix(vV,V);
if(!V_rect)
{
// igl::list_to_matrix(vV,V) already printed error message to std err
return false;
}
bool T_rect = igl::list_to_matrix(vT,T);
if(!T_rect)
{
// igl::list_to_matrix(vT,T) already printed error message to std err
return false;
}
bool F_rect = igl::list_to_matrix(vF,F);
if(!F_rect)
{
// igl::list_to_matrix(vF,F) already printed error message to std err
return false;
}
assert(V.cols() == 3);
assert(T.cols() == 4);
assert(F.cols() == 3);
return true;
}

#endif