Long/complex explanation sorry: It explains why converting why generating protocol commands with vec3 always leads to exception.
This is the ndarray to buffer converter. It is used to convert vec3/vec4 to buffer, which is required to generate GSP commands from any visual.
|
@register("ndarray", "Buffer") |
|
def ndarray_to_Buffer(obj): |
|
# WARN: Do we need to keep track of obj/Buffer such as not create |
|
# several buffers pointing at the same underlying object? |
|
# In the current implementation, Buffer is created each time |
|
# this convertes is called such that if the obj has been |
|
# mofidied, it shoudl be ok |
|
Z = glm.ndarray.tracked(obj) |
|
return Z._tracker.gsp_buffer |
As it is a converter, the obj in there is a numpy.ndarray. It uses glm.ndarray.tracked(obj) which is supposed to be API compatible with np.ndarray (@rougier correct me if im wrong).
It then goes into the __new__ of https://github.com/vispy/GSP/blob/master/gsp/glm/ndarray/tracked.py.
|
def __new__(cls, *args, **kwargs): |
|
obj = np.ndarray.__new__(cls, *args, **kwargs) |
|
if cls.__tracker_class__ is not None: |
|
obj._tracker = cls.__tracker_class__(obj) |
|
return obj |
And here notice how it call np.ndarray.__new__(cls, *args, **kwargs) which is relatively equivalent to np.ndarray(obj) with the obj from the converter.
Unfortunatly np.ndarray(other_ndarray) is not a valid API. here is the doc https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html which shows that the first argument is a shape . It interprets the other_ndarray as a definition of shape and lead to this error message
Exception has occurred: ValueError
maximum supported dimension for an ndarray is currently 64, found 200000
Long/complex explanation sorry: It explains why converting why generating protocol commands with vec3 always leads to exception.
This is the ndarray to buffer converter. It is used to convert vec3/vec4 to buffer, which is required to generate GSP commands from any visual.
GSP/gsp/matplotlib/__init__.py
Lines 43 to 51 in 6aefaab
As it is a converter, the
objin there is anumpy.ndarray. It usesglm.ndarray.tracked(obj)which is supposed to be API compatible withnp.ndarray(@rougier correct me if im wrong).It then goes into the
__new__of https://github.com/vispy/GSP/blob/master/gsp/glm/ndarray/tracked.py.GSP/gsp/glm/ndarray/tracked.py
Lines 36 to 40 in 3fe4d22
And here notice how it call
np.ndarray.__new__(cls, *args, **kwargs)which is relatively equivalent tonp.ndarray(obj)with theobjfrom the converter.Unfortunatly
np.ndarray(other_ndarray)is not a valid API. here is the doc https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html which shows that the first argument is a shape . It interprets theother_ndarrayas a definition of shape and lead to this error message