python-fu/ Map to Object: неправильный тип параметра

копаясь в моем коде снова и снова, я достаточно отчаянно спрашиваю онлайн, надеясь, что кто-то может мне помочь. я пытаюсь разработать скрипт python-fu, и одной из его основных частей является сопоставление изображения с объектом. Но всякий раз, когда я пытаюсь вызвать pdb.plug_in_map_object(), консоль говорит File "<input>", line 29, in <module> TypeError: wrong parameter type. Мой текущий код выглядит так:

pdb.plug_in_map_object(
#image, drawable, maptype=sphere
gimp.Image,gimp.Layer,1,
#viewpoint x, y, z
0.5,0.5,1,
#position x, y, z
0.5,0.5,0,
#first-axis x, y, z
1,0,0,
#second-axis x, y, z
0,1,0,
#rotation-angle x, y, z
0,0,0,
#lighttype=none
2,
#light color (r,g,b)
(0,0,0),
#light position x, y, z
-0.5,-0.5,2,
#light direction x, y, z
-1,-1,1,
#ambientintesity, diffuseintesity, dissufereflectivity, specularreflectivity
0.3,1,0.5,0.5,
#highlight, antialiasing, tiled, newimage, traparentbackground, radius
27,1,0,0,1,0.25,
#scale x, y, z
0.5,0.5,0.5,
#cylinderlegth, 8 drawables for cylinders & boxes
0,gimp.Layer,gimp.Layer,gimp.Layer,gimp.Layer,gimp.Layer,gimp.Layer,gimp.Layer,gimp.Layer
);

(обратите внимание, что это не тот код, который я использую в своем скрипте, я использую эти уродливые и бессмысленные gimp.Layer, чтобы консоль Python приняла его. Я хочу иметь возможность правильно вызывать функцию, прежде чем заполнять правильные значения.)

строка 29, упомянутая в ошибке, является последней и не содержит ничего, кроме одного PF_INT32 и восьми PF_DRAWABLE. именно так эти параметры упоминаются в старейшем, а также в последний (GIMP git) исходный код, который я нашел (если вы не хотите загружать последний код GIMP, я загрузил соответствующий файл здесь).

может кто-нибудь, пожалуйста, скажите мне, что я делаю неправильно?


person MCO    schedule 03.03.2017    source источник
comment
Пробовали ли вы сопоставление в пользовательском интерфейсе, чтобы понять, для чего используются параметры?   -  person Michael Schumacher    schedule 05.03.2017
comment
Возможно, что некоторые параметры, которые вы передаете как целые числа, должны быть переданы как числа с плавающей запятой (в частности, позиции и углы).   -  person xenoid    schedule 06.03.2017
comment
я проверил пользовательский интерфейс и поплавки, все типы параметров были правильными.   -  person MCO    schedule 10.03.2017


Ответы (1)


теперь это работает, и единственное, что изменилось, это то, что я использовал случайный (существующий) слой вместо вызова gimp.Layer. поэтому в моем случае я просто использую текущий активный слой через image.activelayer. при отображении на сферу в любом случае не имеет значения, эти слои используются только при отображении на куб или сферу

person MCO    schedule 10.03.2017