Giter VIP home page Giter VIP logo

autonomousvision / differentiable_volumetric_rendering Goto Github PK

View Code? Open in Web Editor NEW
791.0 31.0 92.0 22.65 MB

This repository contains the code for the CVPR 2020 paper "Differentiable Volumetric Rendering: Learning Implicit 3D Representations without 3D Supervision"

Home Page: http://www.cvlibs.net/publications/Niemeyer2020CVPR.pdf

License: MIT License

Python 57.79% C 11.75% Mako 5.43% C++ 17.18% Shell 0.36% Cython 7.48%
implicit-representions dvr 3d-deep-learning cvpr2020 differentiable-rendering 3d-reconstruction mesh-generation novel-view-synthesis cvpr-2020

differentiable_volumetric_rendering's People

Contributors

m-niemeyer avatar mworchel avatar nitish11 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

differentiable_volumetric_rendering's Issues

Why is there padding for unit cube?

Hi @m-niemeyer , according to my understanding, the object has been normalized into the unit cube. But when generating freespace points and performing raymarching, you use a 0.1 padding of the cube. Can you briefly explain the reason for doing this?

Thank you :)

How to obtain world / camera / scale matrix

Thank you for the provided dataset! However, I don't know how to calculate the provided world / camera / scale matrix. The original dataset set camera mode as "look at" which consists of azimuth, elevation and distance.

How to create the depthmap according to given format

Hi! Amazing paper, and very clean code! Thanks so much for releasing this.

I am trying to use multi_view_reconstruction with depth map for 3d reconstruction .I can extract the depth map from the images taken from iphone. i got other necessary informations as well (camera params, images, masks)

depth_map
deptha map from iphone

now i need to convert it(depth map - above image) to .exr format.But When i investigate the current .exr files(using affinity designer) at DTU data set there is a channel called "Y" not RGB or A.see below image,

depthmap

Q-1
Can u guide me how to convert my depth map to the format that need to use for the dvr.

Q-2
Also can u share , if there are any prepossessing code to generate the depth maps.

Q-3
Also can u share , if there are any prepossessing code to generate the masks.

Pre-train / initialization

Hi! Amazing paper, and very clean code! Thanks so much for releasing this.

I have a somewhat practical question. Is it possible to somehow "pre-train" the network, or initialize it so the optimization process just "fine-tunes" the little details? I have the option of having a pretty high-quality triangle mesh output from a different algorithm. Is it possible in principle to come up with a scheme that will allow this?

The motivation is mainly reducing training time, and I can sample the SDF easily from my existing reconstruction output.

Thanks again!

The effect of tau

I recently read NeRF, which is a concurrent work with the similar idea. In their work they use the "expected distance", which is a weighted average of all sampled points on the ray, as the final distance; currently they don't use depth to train, it's just for visualization.
Then I came across your paper whose depth estimation is more "correct" in my intuition, which is to define the depth as the distance at which the ray stops.

So here is my question, did you compare different tau values? Which one performs the best in terms of depth prediction?
And what's your opinion on the "expected depth" (NeRF) and the "thresholded depth" (your work)?

Chamfer distances

Hi! I'd like to ask if it'd be possible to provide the Chamfer distance results in Table 1 (2D supervision section) in the uncombined form, i.e. as the accuracy and completeness metrics separately (described in the Occupancy Networks paper)?

Also, a side question, I'm curious why it's called Chamfer-L1, as to my understanding it's not really measured as an L1 norm but rather an unsquared L2 norm.

Thanks in advance!

Good Results

Hi @autonomousvision

I have used your model and i am having good results but not perfect , like if i am giving simple chair image with horizontal lines so model is generating mesh based on the chair , it is not creating that lines in the mesh.

could you please suggest us to improve the results at best way .

Thanks in advance !!!

multi_view_reconstruction with depth map

Hi! Amazing paper, and very clean code! Thanks so much for releasing this.

I am trying to use multi_view_reconstruction with depth map for 3d reconstruction (ours_depth_mvs.yaml).

So far i can obtain results with multi_view_reconstruction without depth map (ours_rgb.yaml).

When i use the depth map with multi_view_reconstruction(ours_depth_mvs.yaml) , i did not get any output.i.e output in empty.
The depth values are in line with the camera projection matrixes(both are in mms).My dataset is below attached.

scan155.zip

i have refer below issues, when generating the data set.

#3
#16

q-1) Can u help me with this?
q-2) Does the depth map should be too perfect?

CUDA out of memory during training before evaluation

Hi @m-niemeyer , I tried to train with configs/single_view_reconstruction/multi_view_supervision/ours_combined.yaml, I have reduced the batch size of training and testing to 16. However, during training, every time before evaluation, the runtime error occurred:

RuntimeError: CUDA out of memory. Tried to allocate 7.06 GiB (GPU 0; 10.76 GiB total capacity; 7.46 GiB already allocated; 2.06 GiB free; 7.83 GiB reserved in
total by PyTorch)

What could be the problem?

Multi GPU Training

I want to do multi_view_reconstruction for real images. so far i have got good result. But now i want to speed up the training using multi gpu. Because for complex models it take more than 10 hours with my local pc.(6 gb gpu memory pc).

For the multi gpu training i added "multi_gpu: true" for the config.yaml(ours_depth_mvs.yaml) . I used p3.8xlarge(4 gpus ,with each having 16 gb memory) from aws for multi gpu testing.The config file is as follows.

data:
path: data/DTU
ignore_image_idx: []
classes: ['scan244']
dataset_name: DTU
n_views: 51
input_type: null
train_split: null
val_split: null
test_split: null
cache_fields: True
split_model_for_images: true
depth_range: [0., 1400.]
img_extension: png
img_extension_input: jpg
depth_extension: png
mask_extension: png
model:
c_dim: 0
encoder: null
patch_size: 2
lambda_image_gradients: 1.
lambda_depth: 1.
lambda_normal: 0.1
training:
out_dir: out/multi_view_reconstruction/angel/ours_depth_mvs
n_training_points: 2048
n_eval_points: 8000
model_selection_metric: mask_intersection
model_selection_mode: maximize
batch_size: 1
batch_size_val: 1
scheduler_milestones: [3000, 5000]
scheduler_gamma: 0.5
depth_loss_on_world_points: True
validate_every: 5000
visualize_every: 10000
multi_gpu: true
generation:
upsampling_steps: 4
refinement_step: 30

But when i check the usage of the gpus, the result is as follows.

Capture

only the gpu:0 is used.

i have checked #9.

  1. Can u help me with multi gpu training ? Can u provide guidance how can i achieve it?
  2. Can we increase the batch_size, batch_size_val more than one for the multi_view_reconstruction ?

Error when running training scripts

Hi,

I am interested in your amazing work. I downloaded the datasets with your scripts, and tried to run:

python train.py configs/single_view_reconstruction/multi_view_supervision/ours_combined_pretrained.yaml

However, it returns errors whatever "configs" I changed as follows:

.... (many similar lines)
Error occurred when loading field img of model c61fd3dd6eee6465ccaf38f4d3340ec (04090263)
Error occurred when loading field img of model c9ab6dcc7e4606adf00f0216ab99ff30 (04379243)
Error occurred when loading field img of model c541b8c49b5d2d8e99ad3ba13045dc42 (02691156)
Error occurred when loading field img of model b5d5db47b33a9186ffac3d5f2301b75e (04379243)
Error occurred when loading field img of model bc4db3c90716f7ede76bc197b3a3ffc0 (03636649)
Error occurred when loading field img of model ca063ddc2ea653d7b4b55366da3eebd8 (02958343)
Error occurred when loading field img of model c07c9ca0cfbb531359c956f09c934d51 (04379243)
Error occurred when loading field img of model b47e994452b71943bf30e5b4764cebc0 (03001627)
Error occurred when loading field img of model b6210936b5d1be007670e02527d78e8d (03691459)
Error occurred when loading field img of model c10b1973a0d692ef910979f825490a99 (03001627)
Error occurred when loading field img of model bd28567361a3541d97fb366fa4051f4b (04379243)
Error occurred when loading field img of model bdc5360ff3c62ed69aa9d7f676c1fd7e (02691156)
Error occurred when loading field img of model cb6c20669c6d1dea593ebeeedbff73b (04379243)
Error occurred when loading field img of model bb296502226ae23475becd8a4c3f1866 (03001627)
Error occurred when loading field img of model c695408a86062c4d242ea50288b3f64 (03636649)
Error occurred when loading field img of model b4ae95fbb879bed0ee38cd6552dcaadc (02828884)
Error occurred when loading field img of model ba0c32b3feba49b0b40adee184c371d0 (02958343)
Error occurred when loading field img of model b661b93b67d0ca908cc8e5a741a7e8bd (04379243)
Error occurred when loading field img of model c04d0cf81d9d870a7aa0699f5d30fdef (03001627)
Error occurred when loading field img of model c9b36427b66414de42ca7cc070f21ed3 (04090263)
Error occurred when loading field img of model b431161712ea348cdbbc9440457e303e (03001627)
Traceback (most recent call last):
  File "train.py", line 68, in <module>
    data_viz = next(iter(val_loader))
  File "/private/home/jgu/anaconda3/envs/dvr/lib/python3.8/site-packages/torch/utils/data/dataloader.py", line 345, in __next__
    data = self._next_data()
  File "/private/home/jgu/anaconda3/envs/dvr/lib/python3.8/site-packages/torch/utils/data/dataloader.py", line 856, in _next_data
    return self._process_data(data)
  File "/private/home/jgu/anaconda3/envs/dvr/lib/python3.8/site-packages/torch/utils/data/dataloader.py", line 881, in _process_data
    data.reraise()
  File "/private/home/jgu/anaconda3/envs/dvr/lib/python3.8/site-packages/torch/_utils.py", line 394, in reraise
    raise self.exc_type(msg)
IndexError: Caught IndexError in DataLoader worker process 0.
Original Traceback (most recent call last):
  File "/private/home/jgu/anaconda3/envs/dvr/lib/python3.8/site-packages/torch/utils/data/_utils/worker.py", line 178, in _worker_loop
    data = fetcher.fetch(index)
  File "/private/home/jgu/anaconda3/envs/dvr/lib/python3.8/site-packages/torch/utils/data/_utils/fetch.py", line 47, in fetch
    return self.collate_fn(data)
  File "/private/home/jgu/data/shapenet/differentiable_volumetric_rendering/im2mesh/data/core.py", line 217, in collate_remove_none
    return data.dataloader.default_collate(batch)
  File "/private/home/jgu/anaconda3/envs/dvr/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py", line 45, in default_collate
    elem = batch[0]
IndexError: list index out of range

Error occurred when loading field img of model c2d6eb0899e5d10dff531859cd52e4b5 (04530566)
Error occurred when loading field img of model bf659a08301f20f2ac94db38cec7b356 (03636649)

Have you encountered similar problems before?
Thanks

Training for a single class , single image reconstruction

Hi
Thanks for the nice repo !!

I have prepared a dataset for a single class , also written a script to render its views in blender from its corresponding 3d object so I have image-object pair (approx 900).

Now next can you please tell how to prepare the data to load to the model and train on custom data ?

Thanks

error in setting up

Hi i am facing this error when trying to setup for demo.

(dvr) C:\Users\duanj\Desktop\differentiable_volumetric_rendering-master>python setup.py build_ext --inplace
INFO: Could not find files for the given pattern(s).
running build_ext
C:\Users\duanj\Anaconda3\envs\dvr\lib\site-packages\torch\utils\cpp_extension.py:209: UserWarning: Error checking compiler version for cl: [WinError 2] The system cannot find the file specified
warnings.warn('Error checking compiler version for {}: {}'.format(compiler, error))
building 'im2mesh.utils.libkdtree.pykdtree.kdtree' extension
creating build\temp.win-amd64-3.8
creating build\temp.win-amd64-3.8\Release
creating build\temp.win-amd64-3.8\Release\im2mesh
creating build\temp.win-amd64-3.8\Release\im2mesh\utils
creating build\temp.win-amd64-3.8\Release\im2mesh\utils\libkdtree
creating build\temp.win-amd64-3.8\Release\im2mesh\utils\libkdtree\pykdtree
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\x86_amd64\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -IC:\Users\duanj\Anaconda3\envs\dvr\lib\site-packages\numpy\core\include -IC:\Users\duanj\Anaconda3\envs\dvr\include -IC:\Users\duanj\Anaconda3\envs\dvr\include "-IC:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE" "-IC:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\ATLMFC\INCLUDE" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\ucrt" /Tcim2mesh/utils/libkdtree/pykdtree/kdtree.c /Fobuild\temp.win-amd64-3.8\Release\im2mesh/utils/libkdtree/pykdtree/kdtree.obj /MD /wd4819 /EHsc -std=c99 -O3 -fopenmp -DTORCH_API_INCLUDE_EXTENSION_H -DTORCH_EXTENSION_NAME=kdtree -D_GLIBCXX_USE_CXX11_ABI=0
cl : Command line warning D9002 : ignoring unknown option '-std=c99'
cl : Command line warning D9002 : ignoring unknown option '-O3'
cl : Command line warning D9002 : ignoring unknown option '-fopenmp'
kdtree.c
c:\users\duanj\anaconda3\envs\dvr\include\pyconfig.h(206): fatal error C1083: Cannot open include file: 'basetsd.h': No such file or directory
error: command 'C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\x86_amd64\cl.exe' failed with exit status 2

Is it possible to advise me?

Training and test set split.

Hi @m-niemeyer , Thanks for your great work and clean code. I noticed that you uploaded a pre-trained model on all categories. But the dataset split for this pre-trained model is unavailable. Just wondering whether you may release it?

Dataset!

Hello, Is there someone have download the dataset and upload the dataset to Baidu or google cloud disk, it is hard for me to download the dataset, Is there someone could help me.

question on equation 8

Hey,
On eq 8 in the paper (or the equation in fig1), why it is 1/(df/dpw) instead of (df/dpw)?
Just imagine the case where df/dp is perpendicular to w, the gradient should be 0(as the case df/dp*w) instead infinite(according to eq8), right?

how to create `pointcloud.npz` file?

Hi,

I am trying to created pointcloud.npz for my own data. I load it & can see there are points, normals, loc & scale.

point_cloud_data = np.load("pointcloud.npz", allow_pickle=True)
for point_cloud_data_content in point_cloud_data_files:
    print(point_cloud_data_content, np.shape(point_cloud_data[point_cloud_data_content]))

output -

points (100000, 3)
normals (100000, 3)
loc (3,)
scale ()

Could you please explain these & how to create pointcloud.npz file.

Thanks,
Jay

Implementation questions

Thanks for sharing the great work! I have a silly question regarding the implementation of depth gradient. It seems that the forward procedure of DepthFunction(torch.autograd.Function) is explicitly executed by calling DepthFunction.apply. However, I wonder how the backward procedure is called in the codebase. Any help is appreciated! Thanks.

Visualization of the birds scan

Which code do you use to visualize the 3d bird scan in the readme? I notice that there is specularity and it changes according to the angle. Is it the effect of the rendering program? Because I didn't see any method that deals with specularity prediction or rendering in the paper.

How to train a new model

Hi, first of all I want to thank you for sharing your work 😃 on the other hand, after several attempts, I was wondering what I was missing/misinterpreting on the default.yaml file to train a new model.

The structure of my dataset looked like this:

  • DataSetX/
    • ModelCad/
      • info.yml
      • obj_Model01.ply
      • ...
      • obj_ModelXX.ply
    • TrainSet/
      • Model01/
        • rgb/
          • img00.jpg
          • ...
          • imgXX.jpg
        • info.yml
      • ...
      • ModelXX/
    • TestSet/

The config.yaml:
data:
dataset_name: DataSetX
path: data/DataSetX
...
input_type: image
...
n_views: 0
n_views_input: 0
pointcloud_chamfer_file: pointcloud.npz
...
img_folder: image
img_folder_input: img_choy2016
...
img_extension: png
img_extension_input: jpg
...
train_split: train
val_split: val
test_split: test
...

Questions:

  1. What are the differences btw. img_folder and img_folder_input?
    After modifying both values independently I still got the following error:
    "Error occurred when loading field img of model rgb (05)"

  2. Would you recommend to change the number of views value? or it is not strictly necessary?

  3. Since my training set, validation set and cad models are separated in folders, do you consider it easier to change the structure to the structure presented by shapenet?

Thank you for your help,
Lizeth

Depth in your paper and code

Hi, thanks for this great work and your other inspiring work in reconstruction!

I was checking your code and found that there is a use_ray_length_as_depth argument for the intersect_camera_rays_with_unit_cube function. If this is set to be true, the depths are set to the length of the ray, which does not seem to be correct to me when there is a non-zero angle between the camera z-axis and the ray.

Also in the paper, the ray is denoted as r(d) = r0 + dw, where d is surface depth as defined in your paper. If w here is a unit direction vector, again this is the length of the ray instead of the depth, right? It will be really helpful if you can elaborate a bit on this.

I guess it's my misunderstanding somewhere but I really don't know where I went wrong (sorry if this is stupid). Because when I check the real value of d, no matter whether I set "use_ray_length_as_depth argument" to be true or not I get very close values. Also, considering that you normalize the coordinates to a unit cube, is it normal to see ray length (or depth) ranging from 500~900 on DTU?

How to get 2D locations?

Hi, thanks for this great work and your other inspiring work in reconstruction!

I want to add more local information to condition code c. Thus the projection from 3D point in world space to 2D location in input image is needed.

I found the function transform_to_camera_space could transfer the p_world to p_cam by providing three camera mat. I want to confirm that if the p_cam[:, :, :2] is the projected 2D location(in input image) of p_world given input_camera_mat.

Thanks!

Configuration files

Hello,
Thank you for sharing your great work.
I wonder whether you can share configuration files of ShapeNet and NMR for
single_view_reconstruction/single(multi)_view_supervision and multi_view_reconstruction.

There are some configurations but I am not sure it can be applied for other datasets and supervision.
Thank you,

ValueError: Buffer dtype mismatch, expected 'long' but got 'long long'

Hi,

I am trying to run this on Windows CPU Machine.

Executed python generate.py configs/demo/demo_combined.yaml but getting below error -

=> Loading checkpoint from url...
  0%|                                                                                                                                                | 0/7 [00:00<?, ?it/s]
Traceback (most recent call last):
  File "generate.py", line 207, in <module>
    main()  # execute this only when run directly, not when imported!
  File "generate.py", line 128, in main
    out = generator.generate_mesh(data)
  File "C:\Users\jay\differentiable_volumetric_rendering\im2mesh\dvr\generation.py", line 70, in generate_mesh
    mesh = self.generate_from_latent(c, stats_dict=stats_dict,
  File "C:\Users\jay\differentiable_volumetric_rendering\im2mesh\dvr\generation.py", line 145, in generate_from_latent
    points = mesh_extractor.query()
  File "im2mesh\utils\libmise\mise.pyx", line 122, in im2mesh.utils.libmise.mise.MISE.query
    cdef long[:, :] points_view = points_np
ValueError: Buffer dtype mismatch, expected 'long' but got 'long long'

I tried changing

points_np = np.zeros((points.size(), 3), dtype=np.int64)

to

points_np = np.zeros((points.size(), 3), dtype=np.int32)

and

points_np = np.zeros((points.size(), 3), dtype=np.int32_t)

But no luck.

Could you please help me.

wrong related paper?

it's very minor but, in other relevant works in ReadMe, should the softras be
Liu et al. - Learning to Infer Implicit Surfaces without 3d Supervision (NeurIPS 2019) instead?

reconstruction from natural images

Hello,
Thank you for making your code available for public use. I tried your pretrained combined model with some online images from the car and chair categories (I picked these categories since they were included in the demo categories). Each image has a single object and white background as mentioned in the github site. I have attached some of the test images and corresponding reconstructed 3d output. Is there any other image preprocessing that can be done to improve the visual quality and level of detail of the output or is this the expected output of the pretrained model?
test.zip

thank you

Data format of the processed DTU scenes

Thanks for sharing your source code! I'm trying to understand the coordinate system used in the provided DTU scenes. However, I'm a bit lost. To transform a 3d point (x, y, z) to a pixel (u, v), three matrices are used: K, Rt and scale. I checked the values of K, Rt and scale; they looked quite different from the usual opencv definition of K, Rt, e.g., the R matrix in the code is not orthonormal. Would appreciate it a lot if some hints about the coordinate system are provided.

clear on depth back propagation

Hi!
I try to understand these words from section 3.3 but get very confused:
"In practice, however, we would like to
implement the backward pass not only for a single surface
depth ˆd but for a whole batch of depth values."

Could you please explain why the backward pass not tackle for a single depth value but for multiple?

Thank you!

Building extension error: 'isnan' is not declared in this scope

Hi,

I installed the dependencies as required and tried to build the extensions via python setup.py build_ext --inplace. But I get the error:
im2mesh/utils/libmise/mise.cpp: In function ‘PyObject* __pyx_pf_7im2mesh_5utils_7libmise_4mise_4MISE_6to_dense(__pyx_obj_7im2mesh_5utils_7libmise_4mise_MISE*)’: im2mesh/utils/libmise/mise.cpp:4126:249: error: ‘isnan’ was not declared in this scope */ (( /* dim=0 */ (__pyx_v_out_view.data + __pyx_t_24 * __pyx_v_out_view.strides[0]) ) + __pyx_t_25 * __pyx_v_out_view.strides[1]) ) + __pyx_t_26 * __pyx_v_out_view.strides[2]) )))) != 0);

and many other subsequent errors taht all said "‘isnan’ was not declared in this scope."

Any idea why this is happening?

Thanks a lot!

Generate own dataset

hello,

I'd like to test your great project with my 3D models like shapenet data you provide
I try to make same structured data with blender but maybe there's something wrong with my codes

how did you generate your training dataset with shapenet models?
can you provide some functions or project to do this?

thank you

Error in setting up

(base) C:\Users\duanj\Desktop\differentiable_volumetric_rendering-master>python setup.py build_ext --inplace
running build_ext
C:\Users\duanj\Anaconda3\lib\site-packages\torch\utils\cpp_extension.py:238: UserWarning: Error checking compiler version for cl: [WinError 2] The system cannot find the file specified
warnings.warn('Error checking compiler version for {}: {}'.format(compiler, error))
building 'im2mesh.utils.libkdtree.pykdtree.kdtree' extension
Emitting ninja build file C:\Users\duanj\Desktop\differentiable_volumetric_rendering-master\build\temp.win-amd64-3.7\Release\build.ninja...
Compiling objects...
Allowing ninja to set a default number of workers... (overridable by setting the environment variable MAX_JOBS=N)
[1/2] cl /showIncludes /nologo /Ox /W3 /GL /DNDEBUG /MD /MD /wd4819 /EHsc -IC:\Users\duanj\Anaconda3\lib\site-packages\numpy\core\include -IC:\Users\duanj\Anaconda3\include -IC:\Users\duanj\Anaconda3\include "-IC:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE" "-IC:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\ATLMFC\INCLUDE" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\ucrt" -c C:\Users\duanj\Desktop\differentiable_volumetric_rendering-master\im2mesh\utils\libkdtree\pykdtree\kdtree.c /FoC:\Users\duanj\Desktop\differentiable_volumetric_rendering-master\build\temp.win-amd64-3.7\Release\im2mesh/utils/libkdtree/pykdtree/kdtree.obj -std=c99 -O3 -fopenmp -DTORCH_API_INCLUDE_EXTENSION_H -DTORCH_EXTENSION_NAME=kdtree -D_GLIBCXX_USE_CXX11_ABI=0 /std:c++14
FAILED: C:/Users/duanj/Desktop/differentiable_volumetric_rendering-master/build/temp.win-amd64-3.7/Release/im2mesh/utils/libkdtree/pykdtree/kdtree.obj
cl /showIncludes /nologo /Ox /W3 /GL /DNDEBUG /MD /MD /wd4819 /EHsc -IC:\Users\duanj\Anaconda3\lib\site-packages\numpy\core\include -IC:\Users\duanj\Anaconda3\include -IC:\Users\duanj\Anaconda3\include "-IC:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE" "-IC:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\ATLMFC\INCLUDE" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\ucrt" -c C:\Users\duanj\Desktop\differentiable_volumetric_rendering-master\im2mesh\utils\libkdtree\pykdtree\kdtree.c /FoC:\Users\duanj\Desktop\differentiable_volumetric_rendering-master\build\temp.win-amd64-3.7\Release\im2mesh/utils/libkdtree/pykdtree/kdtree.obj -std=c99 -O3 -fopenmp -DTORCH_API_INCLUDE_EXTENSION_H -DTORCH_EXTENSION_NAME=kdtree -D_GLIBCXX_USE_CXX11_ABI=0 /std:c++14
CreateProcess failed: The system cannot find the file specified.
[2/2] cl /showIncludes /nologo /Ox /W3 /GL /DNDEBUG /MD /MD /wd4819 /EHsc -IC:\Users\duanj\Anaconda3\lib\site-packages\numpy\core\include -IC:\Users\duanj\Anaconda3\include -IC:\Users\duanj\Anaconda3\include "-IC:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE" "-IC:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\ATLMFC\INCLUDE" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\ucrt" -c C:\Users\duanj\Desktop\differentiable_volumetric_rendering-master\im2mesh\utils\libkdtree\pykdtree_kdtree_core.c /FoC:\Users\duanj\Desktop\differentiable_volumetric_rendering-master\build\temp.win-amd64-3.7\Release\im2mesh/utils/libkdtree/pykdtree/_kdtree_core.obj -std=c99 -O3 -fopenmp -DTORCH_API_INCLUDE_EXTENSION_H -DTORCH_EXTENSION_NAME=kdtree -D_GLIBCXX_USE_CXX11_ABI=0 /std:c++14
FAILED: C:/Users/duanj/Desktop/differentiable_volumetric_rendering-master/build/temp.win-amd64-3.7/Release/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.obj
cl /showIncludes /nologo /Ox /W3 /GL /DNDEBUG /MD /MD /wd4819 /EHsc -IC:\Users\duanj\Anaconda3\lib\site-packages\numpy\core\include -IC:\Users\duanj\Anaconda3\include -IC:\Users\duanj\Anaconda3\include "-IC:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE" "-IC:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\ATLMFC\INCLUDE" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\ucrt" -c C:\Users\duanj\Desktop\differentiable_volumetric_rendering-master\im2mesh\utils\libkdtree\pykdtree_kdtree_core.c /FoC:\Users\duanj\Desktop\differentiable_volumetric_rendering-master\build\temp.win-amd64-3.7\Release\im2mesh/utils/libkdtree/pykdtree/_kdtree_core.obj -std=c99 -O3 -fopenmp -DTORCH_API_INCLUDE_EXTENSION_H -DTORCH_EXTENSION_NAME=kdtree -D_GLIBCXX_USE_CXX11_ABI=0 /std:c++14
CreateProcess failed: The system cannot find the file specified.
ninja: build stopped: subcommand failed.
Traceback (most recent call last):
File "C:\Users\duanj\Anaconda3\lib\site-packages\torch\utils\cpp_extension.py", line 1423, in _run_ninja_build
check=True)
File "C:\Users\duanj\Anaconda3\lib\subprocess.py", line 512, in run
output=stdout, stderr=stderr)
subprocess.CalledProcessError: Command '['ninja', '-v']' returned non-zero exit status 1.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "setup.py", line 93, in
'build_ext': BuildExtension
File "C:\Users\duanj\Anaconda3\lib\site-packages\setuptools_init_.py", line 144, in setup
return distutils.core.setup(**attrs)
File "C:\Users\duanj\Anaconda3\lib\distutils\core.py", line 148, in setup
dist.run_commands()
File "C:\Users\duanj\Anaconda3\lib\distutils\dist.py", line 966, in run_commands
self.run_command(cmd)
File "C:\Users\duanj\Anaconda3\lib\distutils\dist.py", line 985, in run_command
cmd_obj.run()
File "C:\Users\duanj\Anaconda3\lib\site-packages\setuptools\command\build_ext.py", line 87, in run
_build_ext.run(self)
File "C:\Users\duanj\Anaconda3\lib\distutils\command\build_ext.py", line 340, in run
self.build_extensions()
File "C:\Users\duanj\Anaconda3\lib\site-packages\torch\utils\cpp_extension.py", line 603, in build_extensions
build_ext.build_extensions(self)
File "C:\Users\duanj\Anaconda3\lib\distutils\command\build_ext.py", line 449, in build_extensions
self._build_extensions_serial()
File "C:\Users\duanj\Anaconda3\lib\distutils\command\build_ext.py", line 474, in _build_extensions_serial
self.build_extension(ext)
File "C:\Users\duanj\Anaconda3\lib\site-packages\setuptools\command\build_ext.py", line 208, in build_extension
_build_ext.build_extension(self, ext)
File "C:\Users\duanj\Anaconda3\lib\distutils\command\build_ext.py", line 534, in build_extension
depends=ext.depends)
File "C:\Users\duanj\Anaconda3\lib\site-packages\torch\utils\cpp_extension.py", line 585, in win_wrap_ninja_compile
with_cuda=with_cuda)
File "C:\Users\duanj\Anaconda3\lib\site-packages\torch\utils\cpp_extension.py", line 1163, in _write_ninja_file_and_compile_objects
error_prefix='Error compiling objects for extension')
File "C:\Users\duanj\Anaconda3\lib\site-packages\torch\utils\cpp_extension.py", line 1436, in _run_ninja_build
raise RuntimeError(message)
RuntimeError: Error compiling objects for extension

Please advice?

key error "loss_depth_eval"

When I train the single_view_reconstruction with multi-view supervision model, during the evaluation, there is a key error: loss_depth_eval. I found that it was due to the predicted mask was zero. What could be the problem?

Output camera projection matrix?

Hello,

Thanks for your great work on this problem! I am wondering whether it is also possible to get the projection matrix that can map the output mesh back to the 2D image?

Thanks!

All the scenes of DTU dataset are "object-centric" in world space?

Hello,

I have a question about your experiment with DTU dataset. Are the provided DTU scenes in an "object-centric" space or do you have to pre-process to get this object-centric space?
I checked the DTU dataset. It is not in object-centric space, right?
Thank you and looking forward to hearing your response.

Best,
Khang.

How to generate visual_hull_depth ?

Hi,

I have downloaded NMR dataset. i have below image & respective .exr file (visual_hull_depth)
0000

I am working on my own custom dataset. here is a sample
0

Could you please guide me how to create visual_hull_depth (.exr file).

Thanks,
Jay

Training Batch-size and time

Hi,
Exciting works and fast open-source!
A little question: The batch-size is set to 64 in code, and in publication, it's 8. So I want to make sure that is the model trained with 8 x V100 GPU? Also, could you please tell me about how much time it takes during the whole training?
Looking forward to your reply. :)

Error in setup.py

Thank you for your great working.
I get this error messge when i run setup.py

running build_ext
building 'im2mesh.utils.libkdtree.pykdtree.kdtree' extension
Emitting ninja build file /home/hongza/lab/differentiable_volumetric_rendering/build/temp.linux-x86_64-3.8/build.ninja...
Compiling objects...
Allowing ninja to set a default number of workers... (overridable by setting the environment variable MAX_JOBS=N)
[1/1] c++ -MMD -MF /home/hongza/lab/differentiable_volumetric_rendering/build/temp.linux-x86_64-3.8/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.o.d -pthread -B /home/hongza/.conda/envs/dvr/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/home/hongza/.conda/envs/dvr/lib/python3.8/site-packages/numpy/core/include -I/home/hongza/.conda/envs/dvr/include/python3.8 -c -c /home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c -o /home/hongza/lab/differentiable_volumetric_rendering/build/temp.linux-x86_64-3.8/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.o -std=c99 -O3 -fopenmp -DTORCH_API_INCLUDE_EXTENSION_H -DTORCH_EXTENSION_NAME=kdtree -D_GLIBCXX_USE_CXX11_ABI=0
FAILED: /home/hongza/lab/differentiable_volumetric_rendering/build/temp.linux-x86_64-3.8/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.o 
c++ -MMD -MF /home/hongza/lab/differentiable_volumetric_rendering/build/temp.linux-x86_64-3.8/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.o.d -pthread -B /home/hongza/.conda/envs/dvr/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/home/hongza/.conda/envs/dvr/lib/python3.8/site-packages/numpy/core/include -I/home/hongza/.conda/envs/dvr/include/python3.8 -c -c /home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c -o /home/hongza/lab/differentiable_volumetric_rendering/build/temp.linux-x86_64-3.8/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.o -std=c99 -O3 -fopenmp -DTORCH_API_INCLUDE_EXTENSION_H -DTORCH_EXTENSION_NAME=kdtree -D_GLIBCXX_USE_CXX11_ABI=0
cc1plus: warning: command line option ‘-Wstrict-prototypes’ is valid for C/ObjC but not for C++
cc1plus: warning: command line option ‘-std=c99’ is valid for C/ObjC but not for C++
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:49:3: error: conflicting declaration ‘typedef struct Node_float Node_float’
 } Node_float;
   ^~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:47:12: note: previous declaration as ‘struct Node_float’
     struct Node_float *left_child;
            ^~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:70:3: error: conflicting declaration ‘typedef struct Node_double Node_double’
 } Node_double;
   ^~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:68:12: note: previous declaration as ‘struct Node_double’
     struct Node_double *left_child;
            ^~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:95:40: error: expected ‘,’ or ‘...’ before ‘pa’
 void search_leaf_float(float *restrict pa, uint32_t *restrict pidx, int8_t no_dims, uint32_t start_idx, uint32_t n, float *restrict point_coord,
                                        ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:97:45: error: expected ‘,’ or ‘...’ before ‘pa’
 void search_leaf_float_mask(float *restrict pa, uint32_t *restrict pidx, int8_t no_dims, uint32_t start_idx, uint32_t n, float *restrict point_coord,
                                             ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:119:42: error: expected ‘,’ or ‘...’ before ‘pa’
 void search_leaf_double(double *restrict pa, uint32_t *restrict pidx, int8_t no_dims, uint32_t start_idx, uint32_t n, double *restrict point_coord,
                                          ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:121:47: error: expected ‘,’ or ‘...’ before ‘pa’
 void search_leaf_double_mask(double *restrict pa, uint32_t *restrict pidx, int8_t no_dims, uint32_t start_idx, uint32_t n, double *restrict point_coord,
                                               ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c: In function ‘Node_float* construct_subtree_float(float*, uint32_t*, int8_t, uint32_t, uint32_t, uint32_t, float*)’:
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:346:13: error: invalid use of incomplete type ‘struct Node_float’
         root->cut_dim = -1;
             ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:47:12: note: forward declaration of ‘struct Node_float’
     struct Node_float *left_child;
            ^~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:355:17: error: invalid use of incomplete type ‘struct Node_float’
             root->cut_dim = -1;
                 ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:47:12: note: forward declaration of ‘struct Node_float’
     struct Node_float *left_child;
            ^~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:358:13: error: invalid use of incomplete type ‘struct Node_float’
         root->cut_val = cut_val;
             ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:47:12: note: forward declaration of ‘struct Node_float’
     struct Node_float *left_child;
            ^~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:359:13: error: invalid use of incomplete type ‘struct Node_float’
         root->cut_dim = cut_dim;
             ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:47:12: note: forward declaration of ‘struct Node_float’
     struct Node_float *left_child;
            ^~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:366:13: error: invalid use of incomplete type ‘struct Node_float’
         root->cut_bounds_lv = lv;
             ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:47:12: note: forward declaration of ‘struct Node_float’
     struct Node_float *left_child;
            ^~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:367:13: error: invalid use of incomplete type ‘struct Node_float’
         root->cut_bounds_hv = hv;
             ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:47:12: note: forward declaration of ‘struct Node_float’
     struct Node_float *left_child;
            ^~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:371:13: error: invalid use of incomplete type ‘struct Node_float’
         root->left_child = (struct Node_float *)construct_subtree_float(pa, pidx, no_dims, start_idx, n_lo, bsp, bbox);
             ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:47:12: note: forward declaration of ‘struct Node_float’
     struct Node_float *left_child;
            ^~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:376:13: error: invalid use of incomplete type ‘struct Node_float’
         root->right_child = (struct Node_float *)construct_subtree_float(pa, pidx, no_dims, start_idx + n_lo, n - n_lo, bsp, bbox);
             ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:47:12: note: forward declaration of ‘struct Node_float’
     struct Node_float *left_child;
            ^~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c: In function ‘Node_float* create_node_float(uint32_t, uint32_t, int)’:
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:433:58: error: invalid application of ‘sizeof’ to incomplete type ‘Node_float’
         new_node = (Node_float *)malloc(sizeof(Node_float) - 2 * sizeof(Node_float *));
                                                          ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:437:58: error: invalid application of ‘sizeof’ to incomplete type ‘Node_float’
         new_node = (Node_float *)malloc(sizeof(Node_float));
                                                          ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:439:13: error: invalid use of incomplete type ‘struct Node_float’
     new_node->n = n;
             ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:47:12: note: forward declaration of ‘struct Node_float’
     struct Node_float *left_child;
            ^~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:440:13: error: invalid use of incomplete type ‘struct Node_float’
     new_node->start_idx = start_idx;
             ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:47:12: note: forward declaration of ‘struct Node_float’
     struct Node_float *left_child;
            ^~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c: In function ‘void delete_subtree_float(Node_float*)’:
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:451:13: error: invalid use of incomplete type ‘struct Node_float’
     if (root->cut_dim != -1)
             ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:47:12: note: forward declaration of ‘struct Node_float’
     struct Node_float *left_child;
            ^~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:453:48: error: invalid use of incomplete type ‘struct Node_float’
         delete_subtree_float((Node_float *)root->left_child);
                                                ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:47:12: note: forward declaration of ‘struct Node_float’
     struct Node_float *left_child;
            ^~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:454:48: error: invalid use of incomplete type ‘struct Node_float’
         delete_subtree_float((Node_float *)root->right_child);
                                                ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:47:12: note: forward declaration of ‘struct Node_float’
     struct Node_float *left_child;
            ^~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c: In function ‘void print_tree_float(Node_float*, int)’:
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:482:48: error: invalid use of incomplete type ‘struct Node_float’
     printf("(cut_val: %f, cut_dim: %i)\n", root->cut_val, root->cut_dim);
                                                ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:47:12: note: forward declaration of ‘struct Node_float’
     struct Node_float *left_child;
            ^~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:482:63: error: invalid use of incomplete type ‘struct Node_float’
     printf("(cut_val: %f, cut_dim: %i)\n", root->cut_val, root->cut_dim);
                                                               ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:47:12: note: forward declaration of ‘struct Node_float’
     struct Node_float *left_child;
            ^~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:483:13: error: invalid use of incomplete type ‘struct Node_float’
     if (root->cut_dim != -1)
             ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:47:12: note: forward declaration of ‘struct Node_float’
     struct Node_float *left_child;
            ^~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:484:44: error: invalid use of incomplete type ‘struct Node_float’
         print_tree_float((Node_float *)root->left_child, level + 1);
                                            ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:47:12: note: forward declaration of ‘struct Node_float’
     struct Node_float *left_child;
            ^~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:485:13: error: invalid use of incomplete type ‘struct Node_float’
     if (root->cut_dim != -1)
             ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:47:12: note: forward declaration of ‘struct Node_float’
     struct Node_float *left_child;
            ^~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:486:44: error: invalid use of incomplete type ‘struct Node_float’
         print_tree_float((Node_float *)root->right_child, level + 1);
                                            ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:47:12: note: forward declaration of ‘struct Node_float’
     struct Node_float *left_child;
            ^~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c: At global scope:
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:569:40: error: expected ‘,’ or ‘...’ before ‘pa’
 void search_leaf_float(float *restrict pa, uint32_t *restrict pidx, int8_t no_dims, uint32_t start_idx, uint32_t n, float *restrict point_coord,
                                        ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c: In function ‘void search_leaf_float(float*)’:
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:575:21: error: ‘n’ was not declared in this scope
     for (i = 0; i < n; i++)
                     ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:31:20: error: ‘pa’ was not declared in this scope
 #define PA(i,d)   (pa[no_dims * pidx[i] + d])
                    ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:578:37: note: in expansion of macro ‘PA’
         cur_dist = calc_dist_float(&PA(start_idx + i, 0), point_coord, no_dims);
                                     ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:31:23: error: ‘no_dims’ was not declared in this scope
 #define PA(i,d)   (pa[no_dims * pidx[i] + d])
                       ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:578:37: note: in expansion of macro ‘PA’
         cur_dist = calc_dist_float(&PA(start_idx + i, 0), point_coord, no_dims);
                                     ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:31:33: error: ‘pidx’ was not declared in this scope
 #define PA(i,d)   (pa[no_dims * pidx[i] + d])
                                 ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:578:37: note: in expansion of macro ‘PA’
         cur_dist = calc_dist_float(&PA(start_idx + i, 0), point_coord, no_dims);
                                     ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:31:33: note: suggested alternative: ‘pid_t’
 #define PA(i,d)   (pa[no_dims * pidx[i] + d])
                                 ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:578:37: note: in expansion of macro ‘PA’
         cur_dist = calc_dist_float(&PA(start_idx + i, 0), point_coord, no_dims);
                                     ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:578:40: error: ‘start_idx’ was not declared in this scope
         cur_dist = calc_dist_float(&PA(start_idx + i, 0), point_coord, no_dims);
                                        ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:31:38: note: in definition of macro ‘PA’
 #define PA(i,d)   (pa[no_dims * pidx[i] + d])
                                      ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:578:40: note: suggested alternative: ‘strtold’
         cur_dist = calc_dist_float(&PA(start_idx + i, 0), point_coord, no_dims);
                                        ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:31:38: note: in definition of macro ‘PA’
 #define PA(i,d)   (pa[no_dims * pidx[i] + d])
                                      ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:578:59: error: ‘point_coord’ was not declared in this scope
         cur_dist = calc_dist_float(&PA(start_idx + i, 0), point_coord, no_dims);
                                                           ^~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:580:24: error: ‘closest_dist’ was not declared in this scope
         if (cur_dist < closest_dist[k - 1])
                        ^~~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:580:24: note: suggested alternative: ‘cur_dist’
         if (cur_dist < closest_dist[k - 1])
                        ^~~~~~~~~~~~
                        cur_dist
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:580:37: error: ‘k’ was not declared in this scope
         if (cur_dist < closest_dist[k - 1])
                                     ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:582:32: error: ‘closest_idx’ was not declared in this scope
             insert_point_float(closest_idx, closest_dist, pidx[start_idx + i], cur_dist, k);
                                ^~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c: At global scope:
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:601:45: error: expected ‘,’ or ‘...’ before ‘pa’
 void search_leaf_float_mask(float *restrict pa, uint32_t *restrict pidx, int8_t no_dims, uint32_t start_idx, uint32_t n, float *restrict point_coord,
                                             ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c: In function ‘void search_leaf_float_mask(float*)’:
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:607:21: error: ‘n’ was not declared in this scope
     for (i = 0; i < n; i++)
                     ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:610:13: error: ‘mask’ was not declared in this scope
         if (mask[pidx[start_idx + i]])
             ^~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:610:18: error: ‘pidx’ was not declared in this scope
         if (mask[pidx[start_idx + i]])
                  ^~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:610:18: note: suggested alternative: ‘pid_t’
         if (mask[pidx[start_idx + i]])
                  ^~~~
                  pid_t
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:610:23: error: ‘start_idx’ was not declared in this scope
         if (mask[pidx[start_idx + i]])
                       ^~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:610:23: note: suggested alternative: ‘strtold’
         if (mask[pidx[start_idx + i]])
                       ^~~~~~~~~
                       strtold
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:31:20: error: ‘pa’ was not declared in this scope
 #define PA(i,d)   (pa[no_dims * pidx[i] + d])
                    ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:615:37: note: in expansion of macro ‘PA’
         cur_dist = calc_dist_float(&PA(start_idx + i, 0), point_coord, no_dims);
                                     ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:31:23: error: ‘no_dims’ was not declared in this scope
 #define PA(i,d)   (pa[no_dims * pidx[i] + d])
                       ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:615:37: note: in expansion of macro ‘PA’
         cur_dist = calc_dist_float(&PA(start_idx + i, 0), point_coord, no_dims);
                                     ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:31:33: error: ‘pidx’ was not declared in this scope
 #define PA(i,d)   (pa[no_dims * pidx[i] + d])
                                 ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:615:37: note: in expansion of macro ‘PA’
         cur_dist = calc_dist_float(&PA(start_idx + i, 0), point_coord, no_dims);
                                     ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:31:33: note: suggested alternative: ‘pid_t’
 #define PA(i,d)   (pa[no_dims * pidx[i] + d])
                                 ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:615:37: note: in expansion of macro ‘PA’
         cur_dist = calc_dist_float(&PA(start_idx + i, 0), point_coord, no_dims);
                                     ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:615:40: error: ‘start_idx’ was not declared in this scope
         cur_dist = calc_dist_float(&PA(start_idx + i, 0), point_coord, no_dims);
                                        ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:31:38: note: in definition of macro ‘PA’
 #define PA(i,d)   (pa[no_dims * pidx[i] + d])
                                      ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:615:40: note: suggested alternative: ‘strtold’
         cur_dist = calc_dist_float(&PA(start_idx + i, 0), point_coord, no_dims);
                                        ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:31:38: note: in definition of macro ‘PA’
 #define PA(i,d)   (pa[no_dims * pidx[i] + d])
                                      ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:615:59: error: ‘point_coord’ was not declared in this scope
         cur_dist = calc_dist_float(&PA(start_idx + i, 0), point_coord, no_dims);
                                                           ^~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:617:24: error: ‘closest_dist’ was not declared in this scope
         if (cur_dist < closest_dist[k - 1])
                        ^~~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:617:24: note: suggested alternative: ‘cur_dist’
         if (cur_dist < closest_dist[k - 1])
                        ^~~~~~~~~~~~
                        cur_dist
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:617:37: error: ‘k’ was not declared in this scope
         if (cur_dist < closest_dist[k - 1])
                                     ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:619:32: error: ‘closest_idx’ was not declared in this scope
             insert_point_float(closest_idx, closest_dist, pidx[start_idx + i], cur_dist, k);
                                ^~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c: In function ‘void search_splitnode_float(Node_float*, float*, uint32_t*, int8_t, float*, float, uint32_t, float, float, uint8_t*, uint32_t*, float*)’:
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:652:15: error: invalid use of incomplete type ‘struct Node_float’
     dim = root->cut_dim;
               ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:47:12: note: forward declaration of ‘struct Node_float’
     struct Node_float *left_child;
            ^~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:659:59: error: invalid use of incomplete type ‘struct Node_float’
             search_leaf_float_mask(pa, pidx, no_dims, root->start_idx, root->n, point_coord, k, mask, closest_idx, closest_dist);
                                                           ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:47:12: note: forward declaration of ‘struct Node_float’
     struct Node_float *left_child;
            ^~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:659:76: error: invalid use of incomplete type ‘struct Node_float’
             search_leaf_float_mask(pa, pidx, no_dims, root->start_idx, root->n, point_coord, k, mask, closest_idx, closest_dist);
                                                                            ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:47:12: note: forward declaration of ‘struct Node_float’
     struct Node_float *left_child;
            ^~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:663:54: error: invalid use of incomplete type ‘struct Node_float’
             search_leaf_float(pa, pidx, no_dims, root->start_idx, root->n, point_coord, k, closest_idx, closest_dist);
                                                      ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:47:12: note: forward declaration of ‘struct Node_float’
     struct Node_float *left_child;
            ^~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:663:71: error: invalid use of incomplete type ‘struct Node_float’
             search_leaf_float(pa, pidx, no_dims, root->start_idx, root->n, point_coord, k, closest_idx, closest_dist);
                                                                       ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:47:12: note: forward declaration of ‘struct Node_float’
     struct Node_float *left_child;
            ^~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:669:41: error: invalid use of incomplete type ‘struct Node_float’
     new_offset = point_coord[dim] - root->cut_val;
                                         ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:47:12: note: forward declaration of ‘struct Node_float’
     struct Node_float *left_child;
            ^~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:678:54: error: invalid use of incomplete type ‘struct Node_float’
             search_splitnode_float((Node_float *)root->left_child, pa, pidx, no_dims, point_coord, dist_left, k, distance_upper_bound, eps_fac, mask, closest_idx, closest_dist);
                                                      ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:47:12: note: forward declaration of ‘struct Node_float’
     struct Node_float *left_child;
            ^~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:684:24: error: invalid use of incomplete type ‘struct Node_float’
         box_diff = root->cut_bounds_lv - point_coord[dim];
                        ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:47:12: note: forward declaration of ‘struct Node_float’
     struct Node_float *left_child;
            ^~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:693:54: error: invalid use of incomplete type ‘struct Node_float’
             search_splitnode_float((Node_float *)root->right_child, pa, pidx, no_dims, point_coord, dist_right, k, distance_upper_bound, eps_fac, mask, closest_idx, closest_dist);
                                                      ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:47:12: note: forward declaration of ‘struct Node_float’
     struct Node_float *left_child;
            ^~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:703:54: error: invalid use of incomplete type ‘struct Node_float’
             search_splitnode_float((Node_float *)root->right_child, pa, pidx, no_dims, point_coord, dist_right, k, distance_upper_bound, eps_fac, mask, closest_idx, closest_dist);
                                                      ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:47:12: note: forward declaration of ‘struct Node_float’
     struct Node_float *left_child;
            ^~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:709:43: error: invalid use of incomplete type ‘struct Node_float’
         box_diff = point_coord[dim] - root->cut_bounds_hv;
                                           ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:47:12: note: forward declaration of ‘struct Node_float’
     struct Node_float *left_child;
            ^~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:718:54: error: invalid use of incomplete type ‘struct Node_float’
             search_splitnode_float((Node_float *)root->left_child, pa, pidx, no_dims, point_coord, dist_left, k, distance_upper_bound, eps_fac, mask, closest_idx, closest_dist);
                                                      ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:47:12: note: forward declaration of ‘struct Node_float’
     struct Node_float *left_child;
            ^~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c: In function ‘Node_double* construct_subtree_double(double*, uint32_t*, int8_t, uint32_t, uint32_t, uint32_t, double*)’:
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:990:13: error: invalid use of incomplete type ‘struct Node_double’
         root->cut_dim = -1;
             ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:68:12: note: forward declaration of ‘struct Node_double’
     struct Node_double *left_child;
            ^~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:999:17: error: invalid use of incomplete type ‘struct Node_double’
             root->cut_dim = -1;
                 ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:68:12: note: forward declaration of ‘struct Node_double’
     struct Node_double *left_child;
            ^~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1002:13: error: invalid use of incomplete type ‘struct Node_double’
         root->cut_val = cut_val;
             ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:68:12: note: forward declaration of ‘struct Node_double’
     struct Node_double *left_child;
            ^~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1003:13: error: invalid use of incomplete type ‘struct Node_double’
         root->cut_dim = cut_dim;
             ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:68:12: note: forward declaration of ‘struct Node_double’
     struct Node_double *left_child;
            ^~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1010:13: error: invalid use of incomplete type ‘struct Node_double’
         root->cut_bounds_lv = lv;
             ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:68:12: note: forward declaration of ‘struct Node_double’
     struct Node_double *left_child;
            ^~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1011:13: error: invalid use of incomplete type ‘struct Node_double’
         root->cut_bounds_hv = hv;
             ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:68:12: note: forward declaration of ‘struct Node_double’
     struct Node_double *left_child;
            ^~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1015:13: error: invalid use of incomplete type ‘struct Node_double’
         root->left_child = (struct Node_double *)construct_subtree_double(pa, pidx, no_dims, start_idx, n_lo, bsp, bbox);
             ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:68:12: note: forward declaration of ‘struct Node_double’
     struct Node_double *left_child;
            ^~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1020:13: error: invalid use of incomplete type ‘struct Node_double’
         root->right_child = (struct Node_double *)construct_subtree_double(pa, pidx, no_dims, start_idx + n_lo, n - n_lo, bsp, bbox);
             ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:68:12: note: forward declaration of ‘struct Node_double’
     struct Node_double *left_child;
            ^~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c: In function ‘Node_double* create_node_double(uint32_t, uint32_t, int)’:
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1077:60: error: invalid application of ‘sizeof’ to incomplete type ‘Node_double’
         new_node = (Node_double *)malloc(sizeof(Node_double) - 2 * sizeof(Node_double *));
                                                            ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1081:60: error: invalid application of ‘sizeof’ to incomplete type ‘Node_double’
         new_node = (Node_double *)malloc(sizeof(Node_double));
                                                            ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1083:13: error: invalid use of incomplete type ‘struct Node_double’
     new_node->n = n;
             ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:68:12: note: forward declaration of ‘struct Node_double’
     struct Node_double *left_child;
            ^~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1084:13: error: invalid use of incomplete type ‘struct Node_double’
     new_node->start_idx = start_idx;
             ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:68:12: note: forward declaration of ‘struct Node_double’
     struct Node_double *left_child;
            ^~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c: In function ‘void delete_subtree_double(Node_double*)’:
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1095:13: error: invalid use of incomplete type ‘struct Node_double’
     if (root->cut_dim != -1)
             ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:68:12: note: forward declaration of ‘struct Node_double’
     struct Node_double *left_child;
            ^~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1097:50: error: invalid use of incomplete type ‘struct Node_double’
         delete_subtree_double((Node_double *)root->left_child);
                                                  ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:68:12: note: forward declaration of ‘struct Node_double’
     struct Node_double *left_child;
            ^~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1098:50: error: invalid use of incomplete type ‘struct Node_double’
         delete_subtree_double((Node_double *)root->right_child);
                                                  ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:68:12: note: forward declaration of ‘struct Node_double’
     struct Node_double *left_child;
            ^~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c: In function ‘void print_tree_double(Node_double*, int)’:
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1126:48: error: invalid use of incomplete type ‘struct Node_double’
     printf("(cut_val: %f, cut_dim: %i)\n", root->cut_val, root->cut_dim);
                                                ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:68:12: note: forward declaration of ‘struct Node_double’
     struct Node_double *left_child;
            ^~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1126:63: error: invalid use of incomplete type ‘struct Node_double’
     printf("(cut_val: %f, cut_dim: %i)\n", root->cut_val, root->cut_dim);
                                                               ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:68:12: note: forward declaration of ‘struct Node_double’
     struct Node_double *left_child;
            ^~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1127:13: error: invalid use of incomplete type ‘struct Node_double’
     if (root->cut_dim != -1)
             ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:68:12: note: forward declaration of ‘struct Node_double’
     struct Node_double *left_child;
            ^~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1128:46: error: invalid use of incomplete type ‘struct Node_double’
         print_tree_double((Node_double *)root->left_child, level + 1);
                                              ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:68:12: note: forward declaration of ‘struct Node_double’
     struct Node_double *left_child;
            ^~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1129:13: error: invalid use of incomplete type ‘struct Node_double’
     if (root->cut_dim != -1)
             ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:68:12: note: forward declaration of ‘struct Node_double’
     struct Node_double *left_child;
            ^~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1130:46: error: invalid use of incomplete type ‘struct Node_double’
         print_tree_double((Node_double *)root->right_child, level + 1);
                                              ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:68:12: note: forward declaration of ‘struct Node_double’
     struct Node_double *left_child;
            ^~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c: At global scope:
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1213:42: error: expected ‘,’ or ‘...’ before ‘pa’
 void search_leaf_double(double *restrict pa, uint32_t *restrict pidx, int8_t no_dims, uint32_t start_idx, uint32_t n, double *restrict point_coord,
                                          ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c: In function ‘void search_leaf_double(double*)’:
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1219:21: error: ‘n’ was not declared in this scope
     for (i = 0; i < n; i++)
                     ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:31:20: error: ‘pa’ was not declared in this scope
 #define PA(i,d)   (pa[no_dims * pidx[i] + d])
                    ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1222:38: note: in expansion of macro ‘PA’
         cur_dist = calc_dist_double(&PA(start_idx + i, 0), point_coord, no_dims);
                                      ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:31:23: error: ‘no_dims’ was not declared in this scope
 #define PA(i,d)   (pa[no_dims * pidx[i] + d])
                       ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1222:38: note: in expansion of macro ‘PA’
         cur_dist = calc_dist_double(&PA(start_idx + i, 0), point_coord, no_dims);
                                      ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:31:33: error: ‘pidx’ was not declared in this scope
 #define PA(i,d)   (pa[no_dims * pidx[i] + d])
                                 ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1222:38: note: in expansion of macro ‘PA’
         cur_dist = calc_dist_double(&PA(start_idx + i, 0), point_coord, no_dims);
                                      ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:31:33: note: suggested alternative: ‘pid_t’
 #define PA(i,d)   (pa[no_dims * pidx[i] + d])
                                 ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1222:38: note: in expansion of macro ‘PA’
         cur_dist = calc_dist_double(&PA(start_idx + i, 0), point_coord, no_dims);
                                      ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1222:41: error: ‘start_idx’ was not declared in this scope
         cur_dist = calc_dist_double(&PA(start_idx + i, 0), point_coord, no_dims);
                                         ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:31:38: note: in definition of macro ‘PA’
 #define PA(i,d)   (pa[no_dims * pidx[i] + d])
                                      ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1222:41: note: suggested alternative: ‘strtold’
         cur_dist = calc_dist_double(&PA(start_idx + i, 0), point_coord, no_dims);
                                         ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:31:38: note: in definition of macro ‘PA’
 #define PA(i,d)   (pa[no_dims * pidx[i] + d])
                                      ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1222:60: error: ‘point_coord’ was not declared in this scope
         cur_dist = calc_dist_double(&PA(start_idx + i, 0), point_coord, no_dims);
                                                            ^~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1224:24: error: ‘closest_dist’ was not declared in this scope
         if (cur_dist < closest_dist[k - 1])
                        ^~~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1224:24: note: suggested alternative: ‘cur_dist’
         if (cur_dist < closest_dist[k - 1])
                        ^~~~~~~~~~~~
                        cur_dist
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1224:37: error: ‘k’ was not declared in this scope
         if (cur_dist < closest_dist[k - 1])
                                     ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1226:33: error: ‘closest_idx’ was not declared in this scope
             insert_point_double(closest_idx, closest_dist, pidx[start_idx + i], cur_dist, k);
                                 ^~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c: At global scope:
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1245:47: error: expected ‘,’ or ‘...’ before ‘pa’
 void search_leaf_double_mask(double *restrict pa, uint32_t *restrict pidx, int8_t no_dims, uint32_t start_idx, uint32_t n, double *restrict point_coord,
                                               ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c: In function ‘void search_leaf_double_mask(double*)’:
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1251:21: error: ‘n’ was not declared in this scope
     for (i = 0; i < n; i++)
                     ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1254:13: error: ‘mask’ was not declared in this scope
         if (mask[pidx[start_idx + i]])
             ^~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1254:18: error: ‘pidx’ was not declared in this scope
         if (mask[pidx[start_idx + i]])
                  ^~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1254:18: note: suggested alternative: ‘pid_t’
         if (mask[pidx[start_idx + i]])
                  ^~~~
                  pid_t
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1254:23: error: ‘start_idx’ was not declared in this scope
         if (mask[pidx[start_idx + i]])
                       ^~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1254:23: note: suggested alternative: ‘strtold’
         if (mask[pidx[start_idx + i]])
                       ^~~~~~~~~
                       strtold
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:31:20: error: ‘pa’ was not declared in this scope
 #define PA(i,d)   (pa[no_dims * pidx[i] + d])
                    ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1259:38: note: in expansion of macro ‘PA’
         cur_dist = calc_dist_double(&PA(start_idx + i, 0), point_coord, no_dims);
                                      ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:31:23: error: ‘no_dims’ was not declared in this scope
 #define PA(i,d)   (pa[no_dims * pidx[i] + d])
                       ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1259:38: note: in expansion of macro ‘PA’
         cur_dist = calc_dist_double(&PA(start_idx + i, 0), point_coord, no_dims);
                                      ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:31:33: error: ‘pidx’ was not declared in this scope
 #define PA(i,d)   (pa[no_dims * pidx[i] + d])
                                 ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1259:38: note: in expansion of macro ‘PA’
         cur_dist = calc_dist_double(&PA(start_idx + i, 0), point_coord, no_dims);
                                      ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:31:33: note: suggested alternative: ‘pid_t’
 #define PA(i,d)   (pa[no_dims * pidx[i] + d])
                                 ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1259:38: note: in expansion of macro ‘PA’
         cur_dist = calc_dist_double(&PA(start_idx + i, 0), point_coord, no_dims);
                                      ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1259:41: error: ‘start_idx’ was not declared in this scope
         cur_dist = calc_dist_double(&PA(start_idx + i, 0), point_coord, no_dims);
                                         ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:31:38: note: in definition of macro ‘PA’
 #define PA(i,d)   (pa[no_dims * pidx[i] + d])
                                      ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1259:41: note: suggested alternative: ‘strtold’
         cur_dist = calc_dist_double(&PA(start_idx + i, 0), point_coord, no_dims);
                                         ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:31:38: note: in definition of macro ‘PA’
 #define PA(i,d)   (pa[no_dims * pidx[i] + d])
                                      ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1259:60: error: ‘point_coord’ was not declared in this scope
         cur_dist = calc_dist_double(&PA(start_idx + i, 0), point_coord, no_dims);
                                                            ^~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1261:24: error: ‘closest_dist’ was not declared in this scope
         if (cur_dist < closest_dist[k - 1])
                        ^~~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1261:24: note: suggested alternative: ‘cur_dist’
         if (cur_dist < closest_dist[k - 1])
                        ^~~~~~~~~~~~
                        cur_dist
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1261:37: error: ‘k’ was not declared in this scope
         if (cur_dist < closest_dist[k - 1])
                                     ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1263:33: error: ‘closest_idx’ was not declared in this scope
             insert_point_double(closest_idx, closest_dist, pidx[start_idx + i], cur_dist, k);
                                 ^~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c: In function ‘void search_splitnode_double(Node_double*, double*, uint32_t*, int8_t, double*, double, uint32_t, double, double, uint8_t*, uint32_t*, double*)’:
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1296:15: error: invalid use of incomplete type ‘struct Node_double’
     dim = root->cut_dim;
               ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:68:12: note: forward declaration of ‘struct Node_double’
     struct Node_double *left_child;
            ^~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1303:60: error: invalid use of incomplete type ‘struct Node_double’
             search_leaf_double_mask(pa, pidx, no_dims, root->start_idx, root->n, point_coord, k, mask, closest_idx, closest_dist);
                                                            ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:68:12: note: forward declaration of ‘struct Node_double’
     struct Node_double *left_child;
            ^~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1303:77: error: invalid use of incomplete type ‘struct Node_double’
             search_leaf_double_mask(pa, pidx, no_dims, root->start_idx, root->n, point_coord, k, mask, closest_idx, closest_dist);
                                                                             ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:68:12: note: forward declaration of ‘struct Node_double’
     struct Node_double *left_child;
            ^~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1307:55: error: invalid use of incomplete type ‘struct Node_double’
             search_leaf_double(pa, pidx, no_dims, root->start_idx, root->n, point_coord, k, closest_idx, closest_dist);
                                                       ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:68:12: note: forward declaration of ‘struct Node_double’
     struct Node_double *left_child;
            ^~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1307:72: error: invalid use of incomplete type ‘struct Node_double’
             search_leaf_double(pa, pidx, no_dims, root->start_idx, root->n, point_coord, k, closest_idx, closest_dist);
                                                                        ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:68:12: note: forward declaration of ‘struct Node_double’
     struct Node_double *left_child;
            ^~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1313:41: error: invalid use of incomplete type ‘struct Node_double’
     new_offset = point_coord[dim] - root->cut_val;
                                         ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:68:12: note: forward declaration of ‘struct Node_double’
     struct Node_double *left_child;
            ^~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1322:56: error: invalid use of incomplete type ‘struct Node_double’
             search_splitnode_double((Node_double *)root->left_child, pa, pidx, no_dims, point_coord, dist_left, k, distance_upper_bound, eps_fac, mask, closest_idx, closest_dist);
                                                        ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:68:12: note: forward declaration of ‘struct Node_double’
     struct Node_double *left_child;
            ^~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1328:24: error: invalid use of incomplete type ‘struct Node_double’
         box_diff = root->cut_bounds_lv - point_coord[dim];
                        ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:68:12: note: forward declaration of ‘struct Node_double’
     struct Node_double *left_child;
            ^~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1337:56: error: invalid use of incomplete type ‘struct Node_double’
             search_splitnode_double((Node_double *)root->right_child, pa, pidx, no_dims, point_coord, dist_right, k, distance_upper_bound, eps_fac, mask, closest_idx, closest_dist);
                                                        ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:68:12: note: forward declaration of ‘struct Node_double’
     struct Node_double *left_child;
            ^~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1347:56: error: invalid use of incomplete type ‘struct Node_double’
             search_splitnode_double((Node_double *)root->right_child, pa, pidx, no_dims, point_coord, dist_right, k, distance_upper_bound, eps_fac, mask, closest_idx, closest_dist);
                                                        ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:68:12: note: forward declaration of ‘struct Node_double’
     struct Node_double *left_child;
            ^~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1353:43: error: invalid use of incomplete type ‘struct Node_double’
         box_diff = point_coord[dim] - root->cut_bounds_hv;
                                           ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:68:12: note: forward declaration of ‘struct Node_double’
     struct Node_double *left_child;
            ^~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1362:56: error: invalid use of incomplete type ‘struct Node_double’
             search_splitnode_double((Node_double *)root->left_child, pa, pidx, no_dims, point_coord, dist_left, k, distance_upper_bound, eps_fac, mask, closest_idx, closest_dist);
                                                        ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:68:12: note: forward declaration of ‘struct Node_double’
     struct Node_double *left_child;
            ^~~~~~~~~~~
ninja: build stopped: subcommand failed.

I use conda and my envirnment is below.

OS: ubuntu 18.04
GPU: RTX2080
CUDA: 10.0

supplementary material

Hi, where can I find the supplementary material for the paper? I can only find the 12-page version main paper.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.