zhan-xu / RigNet

Code for SIGGRAPH 2020 paper "RigNet: Neural Rigging for Articulated Characters"
GNU General Public License v3.0
1.34k stars 181 forks source link

List index out of range in gen_dataset #51

Closed dhorka closed 2 years ago

dhorka commented 3 years ago

Hi,

I am trying to run the script python gen_dataset.py and I'm getting this error:

python gen_dataset.py 
process ID 0
process ID 1
process ID 2
process ID 3
process ID 4
process ID 5
process ID 6
process ID 7
surface geodesic calculation: 6.02768874168396 seconds
surface geodesic calculation: 6.660515546798706 seconds
surface geodesic calculation: 6.463137149810791 seconds
surface geodesic calculation: 6.739922046661377 seconds
surface geodesic calculation: 7.609318971633911 seconds
surface geodesic calculation: 8.185250043869019 seconds
surface geodesic calculation: 9.591989040374756 seconds
surface geodesic calculation: 9.440694570541382 seconds
multiprocessing.pool.RemoteTraceback: 
"""
Traceback (most recent call last):
  File "/home/dhorka/miniconda3/envs/rignet/lib/python3.8/multiprocessing/pool.py", line 125, in worker
    result = (True, func(*args, **kwds))
  File "/home/dhorka/miniconda3/envs/rignet/lib/python3.8/multiprocessing/pool.py", line 48, in mapstar
    return list(map(*args))
  File "gen_dataset.py", line 121, in genDataset
    skin = rig_info.joint_skin[vert_remesh_id]
IndexError: list index out of range
"""

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "gen_dataset.py", line 166, in <module>
    p.map(genDataset, [0, 1, 2, 3, 4, 5, 6, 7])
  File "/home/dhorka/miniconda3/envs/rignet/lib/python3.8/multiprocessing/pool.py", line 364, in map
    return self._map_async(func, iterable, mapstar, chunksize).get()
  File "/home/dhorka/miniconda3/envs/rignet/lib/python3.8/multiprocessing/pool.py", line 771, in get
    raise self._value
IndexError: list index out of range

I have been following your instructions.

Thanks

zhan-xu commented 2 years ago

Hi, it is a bit hard to see the problem. Could you print out the maximum of vert_remesh_id, and the length of rig_info.joint_skin? Maybe the problem comes from mismatching here (for example, are u using rig_info for the remeshed OBJ but the original meshes?).

For debugging, you can use a single process instead of multi-processing here.

dhorka commented 2 years ago

Hi,

I have been using the same configuration that its provided in the code. However, I found that the error it was related to the python version that I was using, python 3.8. I downgraded the python version to 3.7 and the error had been solved. It seems that there is something that is not working well with python3.8.

zhan-xu commented 2 years ago

Yeah, please use python 3.6 or 3.7. Another reason is I used open3d==0.9.0, which is not compatible with higher version of python. Open3D also changed a bit after this version.

dhorka commented 2 years ago

I have found that the issue was related to open3d. It seems like open3d==0.13 is returning a different number of vertices than version 0.9.0 when reading an .obj file. In version 0.11.2 that is working fine.