Closed robot0321 closed 4 years ago
@robot0321 I'm new. Could you tell me more details? Where can I add this sentence include_dirs=[numpy_include_dir]. It would be better if there were screenshots.
@fashionguy inside the occupancy_network folder there is a setup.py file.
When running python setup.py build_ext --inplace
, some compilations might fail. You might get errors. Try checking which extensions failed, and then adding the above line to it.
My setup.py looks like the following
try:
from setuptools import setup
except ImportError:
from distutils.core import setup
from distutils.extension import Extension
from Cython.Build import cythonize
from torch.utils.cpp_extension import BuildExtension, CppExtension, CUDAExtension
import numpy
# Get the numpy include directory.
numpy_include_dir = numpy.get_include()
# Extensions
# pykdtree (kd tree)
pykdtree = Extension(
'im2mesh.utils.libkdtree.pykdtree.kdtree',
sources=[
'im2mesh/utils/libkdtree/pykdtree/kdtree.c',
'im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c'
],
language='c',
extra_compile_args=['-std=c99', '-O3', '-fopenmp'],
extra_link_args=['-lgomp'],
include_dirs=[numpy_include_dir]
)
# mcubes (marching cubes algorithm)
mcubes_module = Extension(
'im2mesh.utils.libmcubes.mcubes',
sources=[
'im2mesh/utils/libmcubes/mcubes.pyx',
'im2mesh/utils/libmcubes/pywrapper.cpp',
'im2mesh/utils/libmcubes/marchingcubes.cpp'
],
language='c++',
extra_compile_args=['-std=c++11'],
include_dirs=[numpy_include_dir]
)
# triangle hash (efficient mesh intersection)
triangle_hash_module = Extension(
'im2mesh.utils.libmesh.triangle_hash',
sources=[
'im2mesh/utils/libmesh/triangle_hash.pyx'
],
libraries=['m'], # Unix-like specific
include_dirs=[numpy_include_dir]
)
# mise (efficient mesh extraction)
mise_module = Extension(
'im2mesh.utils.libmise.mise',
sources=[
'im2mesh/utils/libmise/mise.pyx'
],
)
# simplify (efficient mesh simplification)
simplify_mesh_module = Extension(
'im2mesh.utils.libsimplify.simplify_mesh',
sources=[
'im2mesh/utils/libsimplify/simplify_mesh.pyx'
],
include_dirs=[numpy_include_dir]
)
# voxelization (efficient mesh voxelization)
voxelize_module = Extension(
'im2mesh.utils.libvoxelize.voxelize',
sources=[
'im2mesh/utils/libvoxelize/voxelize.pyx'
],
libraries=['m'] # Unix-like specific
)
# DMC extensions
dmc_pred2mesh_module = CppExtension(
'im2mesh.dmc.ops.cpp_modules.pred2mesh',
sources=[
'im2mesh/dmc/ops/cpp_modules/pred_to_mesh_.cpp',
]
)
dmc_cuda_module = CUDAExtension(
'im2mesh.dmc.ops._cuda_ext',
sources=[
'im2mesh/dmc/ops/src/extension.cpp',
'im2mesh/dmc/ops/src/curvature_constraint_kernel.cu',
'im2mesh/dmc/ops/src/grid_pooling_kernel.cu',
'im2mesh/dmc/ops/src/occupancy_to_topology_kernel.cu',
'im2mesh/dmc/ops/src/occupancy_connectivity_kernel.cu',
'im2mesh/dmc/ops/src/point_triangle_distance_kernel.cu',
]
)
# Gather all extension modules
ext_modules = [
pykdtree,
mcubes_module,
triangle_hash_module,
mise_module,
simplify_mesh_module,
voxelize_module,
# dmc_pred2mesh_module,
# dmc_cuda_module,
]
setup(
ext_modules=cythonize(ext_modules),
cmdclass={
'build_ext': BuildExtension
}
)
Please notice that I have commented out the "dmc_" modules as they were causing trouble to compile
@EduardoGRocha got it! It's very useful. you are so nice.
For person who don't know how to add include_dirs=[numpy_include_dir]
, this solution in stackoverflow may be helpful.
thankyou verymuch,this solution is helpful.
Hi @EduardoGRocha ,
Were you able to fix the dmc error? It seems that we need to compile those too in order to run the code base.
Thanks!
Best, Mika
When following the guide of README.md, there was an error on setup.py as "numpy/arrayobject.h no such file or directory"
This error is fixed by adding
in Extensions that makes error messages.