#1.はじめに
GIMP Python-Fuでイラストを描く その5 水着追加編 - Qiitaの続きです。バニーガールを追加しました。
GIMP 2.10で動作確認をしています。
#2.実行結果
50%縮小表示です。4倍で描画して1/4に縮小した画像(等倍そのままより若干綺麗)をpixivに載せています。
レイヤーグループ表示切り替えで前の水着2種類に戻せます。
#3.変更部分・主要部分
- add_child_layer_transparent()にopacity(不透明度)引数を追加し、デフォルト100(不透明)としました。タイツの不透明度を70にするのに使用しています。
- 肩にハイライトを追加しました。
- 頬を斜線からブラシ一点に変更しました。
- はみ出しや塗り残し等の細部を修正しました。
- バニーガールの蝶ネクタイを体と顔の間に入れるために、体グループに追加しています。(これだけバニーガールグループにないのがイマイチですが)
バニーガールの腹部分はグラデーションを多用しています。中央部分はGRADIENT_BILINEAR(双線形)で上下を暗く、左右はGRADIENT_LINEAR(線形)で横が暗い斜めグラデーションにしています。
set_color(240, 21, 21, 1.0)
set_bg_color(196, 36, 36, 1.0)
fuzzy_select(bunny_waist_layer, 420, 780, 30, 2, TRUE, 0, 0, 0)
edit_blend(bunny_waist_layer, FG_BG_RGB_MODE, NORMAL_MODE, GRADIENT_BILINEAR, 100, 0, REPEAT_NONE, FALSE, FALSE, 0, 0, TRUE, 420, 780, 420, 660)
fuzzy_select(bunny_waist_layer, 380, 780, 30, 2, TRUE, 0, 0, 0)
edit_blend(bunny_waist_layer, FG_BG_RGB_MODE, NORMAL_MODE, GRADIENT_BILINEAR, 100, 0, REPEAT_NONE, FALSE, FALSE, 0, 0, TRUE, 380, 780, 380, 660)
fuzzy_select(bunny_waist_layer, 460, 820, 30, 2, TRUE, 0, 0, 0)
edit_blend(bunny_waist_layer, FG_BG_RGB_MODE, NORMAL_MODE, GRADIENT_LINEAR, 100, 0, REPEAT_NONE, FALSE, FALSE, 0, 0, TRUE, 444, 810, 476, 778)
fuzzy_select(bunny_waist_layer, 340, 820, 30, 2, TRUE, 0, 0, 0)
edit_blend(bunny_waist_layer, FG_BG_RGB_MODE, NORMAL_MODE, GRADIENT_LINEAR, 100, 0, REPEAT_NONE, FALSE, FALSE, 0, 0, TRUE, 356, 810, 324, 778)
#4.スクリプト全体
# Python-Fu のスクリプト
# GIMP の Python-Fu コンソールにコピペして実行してください
#
# 事前に「ブラシで描画」を選択して下さい。「鉛筆で描画」だと実行結果が若干異なります。
# グローバル変数:倍率(正の整数) ※2で数倍、4で数十倍遅くなります
global_scale = 1
# 画像データの作成
## 指定したサイズで画像データを作成する
### width : 画像データの幅 (px)
### height : 画像データの高さ (px)
def create_image(width, height):
# 画像データを生成
return gimp.Image(width * global_scale, height * global_scale, RGB)
# レイヤーの追加
## 指定した名前のレイヤーを新規に作成し、画像データに挿入する
### image : レイヤーを追加する画像データ
### name : 新規に作成するレイヤーの名前(文字列)
def add_layer(image, name):
# レイヤーの作成に必要なパラメータ
width = image.width * global_scale
height = image.height * global_scale
type = RGB_IMAGE
opacity = 100
mode = NORMAL_MODE
#
# パラメータをもとにレイヤーを作成
layer = gimp.Layer(image, name, width, height, type, opacity, mode)
#
# レイヤーを背景色で塗りつぶす(GIMP のデフォルトの挙動に合わせています)
layer.fill(1)
#
# 画像データの 0 番目の位置にレイヤーを挿入する
position = 0
image.add_layer(layer, position)
#
return layer
def add_layer_transparent(image, name):
# レイヤーの作成に必要なパラメータ
width = image.width * global_scale
height = image.height * global_scale
type = RGBA_IMAGE
opacity = 100
mode = NORMAL_MODE
#
# パラメータをもとにレイヤーを作成
layer = gimp.Layer(image, name, width, height, type, opacity, mode)
#
# レイヤーを透明色で塗りつぶす
layer.fill(TRANSPARENT_FILL)
#
# 画像データの 0 番目の位置にレイヤーを挿入する
position = 0
image.add_layer(layer, position)
#
return layer
# レイヤーグループを画像に追加する
def add_layer_group(image, name):
layer_group = pdb.gimp_layer_group_new(image)
image.add_layer(layer_group, 0)
layer_group.name = name
return layer_group
# 子レイヤーをレイヤーグループに追加する
def add_child_layer_transparent(image, parent_group, name, opacity=100):
# レイヤーの作成に必要なパラメータ
width = image.width * global_scale
height = image.height * global_scale
type = RGBA_IMAGE
mode = NORMAL_MODE
#
# パラメータをもとにレイヤーを作成
layer = gimp.Layer(image, name, width, height, type, opacity, mode)
#
# レイヤーを透明色で塗りつぶす
layer.fill(TRANSPARENT_FILL)
#
# 親レイヤーグループの 0 番目の位置にレイヤーを挿入する
position = 0
pdb.gimp_image_insert_layer(image, layer, parent_group, position)
#
return layer
# 描画する色を変更する
## パレットの前景色を変更して描画色を設定する
### r : 赤要素 (0-255)
### g : 緑要素 (0-255)
### b : 青要素 (0-255)
### a : 透明度 (0-1.0)
def set_color(r, g, b, a):
color = (r, g, b, a)
pdb.gimp_context_set_foreground(color)
def set_bg_color(r, g, b, a):
color = (r, g, b, a)
pdb.gimp_context_set_background(color)
# 描画する線の太さを変える
## ブラシのサイズを変更して線の太さを設定する
### width : 線の太さ
def set_line_width(width):
pdb.gimp_context_set_brush_size(width * global_scale)
# アンチエイリアスを設定する
## アンチエイリアスを設定する
### antialias : TRUE:有効、FALSE:無効
def set_antialias(antialias):
pdb.gimp_context_set_antialias(antialias)
# 画像の表示
## 新しいウィンドウを作成し、画像データを表示する
### image : 表示する画像データ
def display_image(image):
gimp.Display(image)
# パス作成
## パスを作成
### image : レイヤーを追加する画像データ
### points : パス座標
### mode : 0:描画しない、1:閉じないストローク(初期値)、2:閉じるストローク、3:塗りつぶし
### delete_path : TRUE:パスを削除する(初期値)、FALSE:パスを残す
def make_path(
image,
points,
mode=1,
delete_path=TRUE,
):
""" パスを作成する。 """
#
# フラグ設定
#
is_draw = FALSE
is_closed = FALSE
is_fill = FALSE
is_stroke = FALSE
if mode == 1: # 閉じないストローク
is_draw = TRUE
is_closed = FALSE
is_fill = FALSE
is_stroke = FALSE
elif mode == 2: # 閉じるストローク
is_draw = TRUE
is_closed = TRUE
is_fill = FALSE
is_stroke = FALSE
elif mode == 3: # 塗りつぶし
is_draw = TRUE
is_closed = TRUE # TRUE/FALSEどちらでも変わらない
is_fill = TRUE
is_stroke = FALSE
elif mode == 4: # 閉じないストローク(アンチエイリアスが効かない)
is_draw = TRUE
is_closed = FALSE # 効かない
is_fill = FALSE
is_stroke = TRUE
elif mode == 5: # 閉じるストローク(アンチエイリアスが効かない)
is_draw = TRUE
is_closed = TRUE
is_fill = FALSE
is_stroke = TRUE
#
vectors = pdb.gimp_vectors_new(image, 'path') # パス新規作成
pdb.gimp_image_add_vectors(image, vectors, 0) # パスを画像に追加
#
# パスとしてストロークを追加
#
stroke_id = pdb.gimp_vectors_stroke_new_from_points(vectors, 0,
len(points), points, is_closed)
#
# パスを表示
#
pdb.gimp_vectors_set_visible(vectors, TRUE)
#
# 描画するよう指定されてたら、パスから選択範囲を作って描画する。
#
if is_draw:
#
# 選択範囲解除
#
pdb.gimp_selection_none(image)
#
# パスから選択範囲作成
#
pdb.gimp_vectors_to_selection(
vectors,
CHANNEL_OP_REPLACE,
TRUE,
FALSE,
0,
0,
)
#
# 前景色で描画
#
drawable = pdb.gimp_image_active_drawable(image)
if is_fill:
pdb.gimp_edit_fill(drawable, FOREGROUND_FILL)
elif is_stroke:
pdb.gimp_edit_stroke(drawable)
else:
pdb.gimp_drawable_edit_stroke_item(drawable, vectors)
#
# 選択範囲解除
#
pdb.gimp_selection_none(image)
#
# パス削除が指定されていたらパスを削除する。
#
if delete_path:
# パス削除
#
pdb.gimp_image_remove_vectors(image, vectors)
#
return
def get_absolute_point(list):
""" """
rlist = []
for pos in list:
if len(pos) == 6:
(x, y, rx1, ry1, rx2, ry2) = pos
x1 = x + rx1
y1 = y + ry1
x2 = x + rx2
y2 = y + ry2
else:
(x, y) = pos
x1 = x
y1 = y
x2 = x
y2 = y
x1 = x1 * global_scale
y1 = y1 * global_scale
x = x * global_scale
y = y * global_scale
x2 = x2 * global_scale
y2 = y2 * global_scale
rlist.extend([
x1,
y1,
x,
y,
x2,
y2,
])
return rlist
# パス作成(相対座標指定)
## パスを作成
### image : レイヤーを追加する画像データ
### points : パス座標
### mode : 0:描画しない、1:最後を閉じないストローク(初期値)、2:最後を閉じるストローク、3:塗りつぶし
### delete_path : TRUE:パスを削除する(初期値)、FALSE:パスを残す
def make_path_relative(
image,
points,
mode=1,
delete_path=TRUE,
):
""" パスを作成する。 """
new_points = get_absolute_point(points)
make_path(image, new_points, mode, delete_path)
def fuzzy_select(drawable, x, y, threshold, operation, antialias, feather, feather_radius, sample_merged):
pdb.gimp_fuzzy_select(drawable, x * global_scale, y * global_scale, threshold, operation, antialias, feather, feather_radius, sample_merged)
def edit_blend(drawable_ID, blend_mode, paint_mode, gradient_type, opacity, offset, repeat, reverse, supersample, max_depth, threshold, dither, x1, y1, x2, y2):
return pdb.gimp_edit_blend(drawable_ID, blend_mode, paint_mode, gradient_type, opacity, offset, repeat, reverse, supersample, max_depth, threshold, dither, x1 * global_scale, y1 * global_scale, x2 * global_scale, y2 * global_scale)
# 補助線を描画
def draw_auxiliary_line(image, auxiliary_line_layer):
pdb.gimp_image_set_active_layer(image, auxiliary_line_layer)
set_line_width(1)
set_color(127, 127, 127, 1.0)
make_path_relative(image, [(200, 300), (600, 300)], 1, TRUE)
make_path_relative(image, [(200, 500), (600, 500)], 1, TRUE)
make_path_relative(image, [(200, 700), (600, 700)], 1, TRUE)
make_path_relative(image, [(200, 900), (600, 900)], 1, TRUE)
make_path_relative(image, [(200, 1100), (600, 1100)], 1, TRUE)
make_path_relative(image, [(200, 1300), (600, 1300)], 1, TRUE)
make_path_relative(image, [(200, 1500), (600, 1500)], 1, TRUE)
# 目を描画
def draw_eyes(image, eyes_layer):
pdb.gimp_image_set_active_layer(image, eyes_layer)
#
# 値は(アンカーX, Y[, 制御開始点増分X, Y, 制御終了点増分X, Y])
#
set_line_width(6)
set_color(255, 255, 255, 1.0)
# 右白目
points7 = [
(425, 418, 0, 0, +8, -7),
(440, 408, -7, +3, +10, +4),
(460, 434, -10, -22, 0, 0),
(440, 450, +8, 0, -12, 0),
(432, 450, 0, 0, 0, 0),
]
make_path_relative(image, points7, 3, TRUE)
# 右目 ※透明だとgimp_fuzzy_select()が効かないので内側を白で塗りつぶす(白目で描いているけど念のため)
points2 = [
(452, 430, 0, -10, 0, +10),
(440, 450, +8, 0, -8, 0),
(428, 430, 0, +10, 0, -10),
(440, 410, -8, 0, +8, 0),
]
set_color(255, 255, 255, 1.0)
make_path_relative(image, points2, 3, TRUE)
set_color(0, 0, 0, 1.0)
make_path_relative(image, points2, 2, TRUE)
fuzzy_select(eyes_layer, 440, 430, 150, 2, TRUE, 0, 0, 0)
set_color(0, 0, 63, 1.0)
set_bg_color(127, 223, 223, 1.0)
edit_blend(eyes_layer, FG_BG_RGB_MODE, NORMAL_MODE, GRADIENT_LINEAR, 100, 0, REPEAT_NONE, FALSE, FALSE, 0, 0, TRUE, 440, 420, 440, 430)
pdb.gimp_selection_clear(image)
set_color(0, 0, 0, 1.0)
# 右瞳孔
points2_2 = [
(445, 430, 0, -5, 0, +5),
(440, 438, +3 , 0, -3, 0),
(435, 430, 0, +5, 0, -5),
(440, 422, -3, 0, +3, 0),
]
make_path_relative(image, points2_2, 3, TRUE)
set_color(255, 255, 255, 1.0)
# 左白目
points8 = [
(375, 418, 0, 0, -8, -7),
(360, 408, +7, +3, -10, +4),
(340, 434, +10, -22, 0, 0),
(360, 450, -8, 0, +12, 0),
(368, 450, 0, 0, 0, 0),
]
make_path_relative(image, points8, 3, TRUE)
# 左目 ※透明だとgimp_fuzzy_select()が効かないので内側を白で塗りつぶす(白目で描いているけど念のため)
points3 = [
(372, 430, 0, -10, 0, +10),
(360, 450, +8, 0, -8, 0),
(348, 430, 0, +10, 0, -10),
(360, 410, -8, 0, +8, 0),
]
set_color(255, 255, 255, 1.0)
make_path_relative(image, points3, 3, TRUE)
set_color(0, 0, 0, 1.0)
make_path_relative(image, points3, 2, TRUE)
fuzzy_select(eyes_layer, 360, 430, 150, 2, TRUE, 0, 0, 0)
set_color(0, 0, 63, 1.0)
set_bg_color(127, 223, 223, 1.0)
edit_blend(eyes_layer, FG_BG_RGB_MODE, NORMAL_MODE, GRADIENT_LINEAR, 100, 0, REPEAT_NONE, FALSE, FALSE, 0, 0, TRUE, 360, 420, 360, 430)
pdb.gimp_selection_clear(image)
set_color(0, 0, 0, 1.0)
# 左瞳孔
points3_2 = [
(365, 430, 0, -5, 0, +5),
(360, 438, +3 , 0, -3, 0),
(355, 430, 0, +5, 0, -5),
(360, 422, -3, 0, +3, 0),
]
make_path_relative(image, points3_2, 3, TRUE)
set_line_width(6)
# 右眉毛
points5 = [
(420, 400, 0, 0, +10, -12),
(440, 385, -10, +3, +15, +8),
(470, 415, -15, -22, 0, 0),
]
make_path_relative(image, points5, 1, TRUE)
# 左眉毛
points6 = [
(380, 400, 0, 0, -10, -12),
(360, 385, +10, +3, -15, +8),
(330, 415, +15, -22, 0, 0),
]
make_path_relative(image, points6, 1, TRUE)
set_line_width(6)
# 右目上
points7 = [
(425, 418, 0, 0, +8, -7),
(440, 408, -7, +3, +10, +4),
(460, 434, -10, -22, 0, 0),
]
make_path_relative(image, points7, 1, TRUE)
# 左目上
points8 = [
(375, 418, 0, 0, -8, -7),
(360, 408, +7, +3, -10, +4),
(340, 434, +10, -22, 0, 0),
]
make_path_relative(image, points8, 1, TRUE)
#
set_line_width(4)
#
# 右目光
points2_3 = [
(439, 420, 0, -2, 0, +2),
(436, 423, +2 , 0, -2, 0),
(433, 420, 0, +2, 0, -2),
(436, 417, -2, 0, +2, 0),
]
set_color(255, 255, 255, 1.0)
make_path_relative(image, points2_3, 3, TRUE)
#set_color(0, 0, 0, 1.0)
#make_path_relative(image, points2_3, 2, TRUE)
# 左目光
points2_4 = [
(359, 420, 0, -2, 0, +2),
(356, 423, +2 , 0, -2, 0),
(353, 420, 0, +2, 0, -2),
(356, 417, -2, 0, +2, 0),
]
set_color(255, 255, 255, 1.0)
make_path_relative(image, points2_4, 3, TRUE)
#set_color(0, 0, 0, 1.0)
#make_path_relative(image, points2_4, 2, TRUE)
# 短い線を引くと太くぼやけるので、線幅を小さくする
set_line_width(1.5)
#
# 右目尻
points7_2 = [
(460, 434, 0, 0, 0, 0),
(458, 437, 0, 0, 0, 0),
]
make_path_relative(image, points7_2, 1, TRUE)
# 左目尻
points8_2 = [
(340, 434, 0, 0, 0, 0),
(342, 437, 0, 0, 0, 0),
]
make_path_relative(image, points8_2, 1, TRUE)
# 後髪を描画
def draw_back_hair(image, back_hair_layer):
pdb.gimp_image_set_active_layer(image, back_hair_layer)
#
set_line_width(6)
set_color(115, 66, 41, 1.0)
points1 = [
# 髪(右外側)
(400, 270, 0, 0, 0, 0),
(450, 280, -10, -8, 0, 0),
(470, 290, 0, 0, +15, +8),
(500, 330, -5, -10, +10, +15),
(510, 370, 0, 0, 0, 0),
(509, 430, 0, 0, 0, 0),
(504, 500, 0, 0, 0, 0),
(499, 570, 0, 0, 0, 0),
# 髪(左外側)
(301, 570, 0, 0, 0, 0),
(296, 500, 0, 0, 0, 0),
(291, 430, 0, 0, 0, 0),
(290, 370, 0, 0, 0, 0),
(300, 330, -10, +15, +5, -10),
(330, 290, -15, +8, 0, 0),
(350, 280, 0, 0, +10, -8),
(400, 270, 0, 0, 0, 0),
]
make_path_relative(image, points1, 3, TRUE)
#
set_line_width(6)
set_color(0, 0, 0, 1.0)
# 髪(右外側)
points12 = [
(400, 270, 0, 0, 0, 0),
(450, 280, -10, -8, 0, 0),
(470, 290, 0, 0, +15, +8),
(500, 330, -5, -10, +10, +15),
(510, 370, 0, 0, 0, 0),
(509, 430, 0, 0, 0, 0),
(504, 500, 0, 0, 0, 0),
(499, 570, 0, 0, 0, 0),
]
make_path_relative(image, points12, 1, TRUE)
#
#
# 髪(左外側)
points13 = [
(400, 270, 0, 0, 0, 0),
(350, 280, +10, -8, 0, 0),
(330, 290, 0, 0, -15, +8),
(300, 330, +5, -10, -10, +15),
(290, 370, 0, 0, 0, 0),
(291, 430, 0, 0, 0, 0),
(296, 500, 0, 0, 0, 0),
(301, 570, 0, 0, 0, 0),
]
make_path_relative(image, points13, 1, TRUE)
# 体を描画
def draw_body(image, body_layer):
pdb.gimp_image_set_active_layer(image, body_layer)
set_line_width(6)
set_color(240, 221, 195, 1.0)
# 首塗り
points10 = [
(425, 491, 0, 0, 0, 0),
(424, 500, 0, 0, 0, 0),
(376, 500, 0, 0, 0, 0),
(375, 491, 0, 0, 0, 0),
]
make_path_relative(image, points10, 3, TRUE)
# 右腕塗り
points10 = [
(424, 500, -1, -5, +10, +20),
#(520, 524, -60, -15, +10, +20),
(520, 524, -20, -7, +10, +10),
(535, 680, -5, -20, +5, +20),
(555, 730, -3, -10, +3, +15),
(555, 870, +5, -20, -2, +10),
(550, 920, +3, -5, -5, +10),
(510, 980, 0, 0, 0, 0),
(505, 980, 0, 0, 0, 0),
(526, 860, 0, 0, 0, 0),
(530, 850, 0, 0, 0, 0),
(500, 760, 0, 0, 0, 0),
(495, 700, 0, 0, 0, 0),
(490, 675, 0, 0, 0, 0),
]
make_path_relative(image, points10, 3, TRUE)
# 左腕塗り
points11 = [
(376, 500, +1, -5, -10, +20),
#(280, 524, +60, -15, -10, +20),
(280, 524, +20, -7, -10, +10),
(265, 680, +5, -20, -5, +20),
(245, 730, +3, -10, -3, +15),
(245, 870, -5, -20, +2, +10),
(250, 920, -3, -5, +5, +10),
(290, 980, 0, 0, 0, 0),
(295, 980, 0, 0, 0, 0),
(274, 860, 0, 0, 0, 0),
(270, 850, 0, 0, 0, 0),
(300, 760, 0, 0, 0, 0),
(305, 700, 0, 0, 0, 0),
(310, 675, 0, 0, 0, 0),
]
make_path_relative(image, points11, 3, TRUE)
set_color(247, 195, 156, 1.0)
# 右腕影
points10 = [
#(424, 500, -1, -5, +10, +20),
#(520, 524, -60, -15, +10, +20),
#(520, 524, -20, -7, +10, +10),
(520, 524, 0, 0, +10, +10),
(535, 680, -5, -20, +5, +20),
(555, 730, -3, -10, +3, +15),
(555, 870, +5, -20, -2, +10),
(550, 920, +3, -5, -5, +10),
(510, 980, 0, 0, 0, 0),
(505, 980, 0, 0, 0, 0),
(510, 962, 0, 0, 0, 0),
(540, 920, -5, +10, +3, -5),
(545, 870, -2, +10, +5, -20),
(545, 730, +3, +15, -3, -10),
(525, 680, +5, +20, -5, -20),
#(510, 524, +10, +10, -20, -7),
#(510, 524, +10, +10, 0, 0),
]
make_path_relative(image, points10, 3, TRUE)
# 左腕影
points11 = [
(300, 671, 0, 0, 0, 0),
(295, 700, 0, 0, 0, 0),
(290, 760, 0, 0, 0, 0),
(268, 838, 0, 0, 0, 0),
(270, 850, 0, 0, 0, 0),
(300, 760, 0, 0, 0, 0),
(305, 700, 0, 0, 0, 0),
(310, 675, 0, 0, 0, 0),
]
make_path_relative(image, points11, 3, TRUE)
set_color(240, 221, 195, 1.0)
# 胸真ん中少し上、ウエスト右から股右
points10 = [
(400, 630, 0, 0, 0, 0),
(484, 676, 0, 0, 0, 0),
(470, 740, 0, -30, 0, +30),
(496, 796, -10, -10, 0, +20),
(440, 880, 0, 0, -15, +15),
(400, 900, +10, 0, 0, 0),
]
make_path_relative(image, points10, 3, TRUE)
# 胸真ん中少し上、ウエスト左から股左
points11 = [
(400, 630, 0, 0, 0, 0),
(316, 676, 0, 0, 0, 0),
(330, 740, 0, -30, 0, +30),
(304, 796, +10, -10, 0, +20),
(360, 880, 0, 0, +15, +15),
(400, 900, -10, 0, 0, 0),
]
make_path_relative(image, points11, 3, TRUE)
# 不透明部分を選択する
pdb.gimp_image_select_item(image, 0, body_layer)
# 選択範囲からマスクを作成する
mask = pdb.gimp_layer_create_mask(body_layer, ADD_SELECTION_MASK)
# マスクをレイヤーに追加する
pdb.gimp_layer_add_mask(body_layer, mask)
# マスク編集を無効にする(マスクでない部分を編集する)
pdb.gimp_layer_set_edit_mask(body_layer, FALSE)
set_color(255, 255, 255, 1.0)
# ブラシ「2. Hardness 050」(51x51)を選択
pdb.gimp_context_set_brush("2. Hardness 050")
set_line_width(25)
# 肩ハイライト右
points10 = [
(510, 532, 0, 0, 0, 0),
]
make_path_relative(image, points10, 2, TRUE)
# 肩ハイライト左
points11 = [
(290, 532, 0, 0, 0, 0),
]
make_path_relative(image, points11, 2, TRUE)
# ブラシ「1. Pixel」(3x3)を選択
pdb.gimp_context_set_brush("1. Pixel")
set_line_width(6)
# マスクをレイヤーから削除する
pdb.gimp_layer_remove_mask(body_layer, MASK_APPLY)
set_color(240, 221, 195, 1.0)
# ウエスト右から右足塗り
points10 = [
#(496, 796, 0, 0, 0, 0),
(496, 796, 0, 0, +5, -3),
(530, 880, 0, -30, 0, +20),
(470, 1150, 0, -50, 0, +20),
(480, 1250, 0, -20, 0, +20),
(450, 1460, 0, 0, 0, 0),
(485, 1510, 0, -20, 0, +20),
(450, 1530, 0, 0, 0, 0),
(440, 1520, 0, 0, -5, 0),
(420, 1500, 0, 0, 0, 0),
(420, 1500, -10, 0, 0, 0),
(400, 1490, 0, 0, 0, 0),
(400, 1485, 0, 0, 0, 0),
(405, 1470, 0, 0, 0, 0),
(403, 1450, 0, 0, 0, 0),
(410, 1430, 0, -10, 0, 0),
(410, 1400, 0, -20, 0, +10),
(400, 1320, 0, -10, 0, +20),
(400, 1270, 0, -10, 0, +10),
(410, 1220, 0, -10, 0, +10),
(400, 1180, 0, -10, 0, +10),
(400, 1130, 0, -15, 0, +10),
(405, 1070, 0, -15, 0, +15),
(405, 1000, 0, -10, 0, +15),
(400, 950, 0, +10, 0, -15),
(420, 895, 0, 0, +3, 0),
(440, 880, 0, 0, 0, 0),
]
make_path_relative(image, points10, 3, TRUE)
# ウエスト左から左足塗り
points11 = [
#(304, 796, 0, 0, 0, 0),
(304, 796, 0, 0, -5, -3),
(270, 880, 0, -30, 0, +20),
(330, 1150, 0, -50, 0, +20),
(320, 1250, 0, -20, 0, +20),
(350, 1460, 0, 0, 0, 0),
(315, 1510, 0, -20, 0, +20),
(350, 1530, 0, 0, 0, 0),
(360, 1520, 0, 0, +5, 0),
(380, 1500, 0, 0, 0, 0),
(380, 1500, +10, 0, 0, 0),
(400, 1490, 0, 0, 0, 0),
(400, 1485, 0, 0, 0, 0),
(395, 1470, 0, 0, 0, 0),
(397, 1450, 0, 0, 0, 0),
(390, 1430, 0, -10, 0, 0),
(390, 1400, 0, -20, 0, +10),
(400, 1320, 0, -10, 0, +20),
(400, 1270, 0, -10, 0, +10),
(390, 1220, 0, -10, 0, +10),
(400, 1180, 0, -10, 0, +10),
(400, 1130, 0, -15, 0, +10),
(395, 1070, 0, -15, 0, +15),
(395, 1000, 0, -10, 0, +15),
(400, 950, 0, +10, 0, -15),
(380, 895, 0, 0, -3, 0),
(360, 880, 0, 0, 0, 0),
]
make_path_relative(image, points11, 3, TRUE)
set_line_width(6)
set_color(255, 255, 255, 1.0)
# 右太ももハイライト
points10 = [
(464, 900, 0, 0, 0, 0),
(446, 985, 0, 0, 0, 0),
(434, 1070, 0, 0, 0, 0),
(452, 985, 0, 0, 0, 0),
]
make_path_relative(image, points10, 3, TRUE)
# 左太ももハイライト
points11 = [
(322, 900, 0, 0, 0, 0),
(333, 985, 0, 0, 0, 0),
(350, 1070, 0, 0, 0, 0),
(339, 985, 0, 0, 0, 0),
]
make_path_relative(image, points11, 3, TRUE)
set_line_width(6)
set_color(247, 195, 156, 1.0)
# ウエスト右から右足影
points10 = [
#(400, 630, 0, 0, 0, 0),
(484, 676, 0, 0, 0, 0),
#(470, 740, 0, -30, 0, +30),
(471, 740, 0, -30, 0, +30),
#(496, 796, -10, -10, 0, +20),
#(496, 794, -10, -10, 0, +20),
(496, 794, -10, -10, 0, 0),
#(496, 796, 0, 0, 0, 0),
(530, 880, 0, -30, 0, +20),
(470, 1150, 0, -50, 0, +20),
(480, 1250, 0, -20, 0, +20),
(450, 1460, 0, 0, 0, 0),
(440, 1458, 0, 0, 0, 0),
(460, 1250, 0, +20, 0, -20),
(450, 1150, 0, +20, 0, -50),
(510, 880, 0, +20, 0, -30),
(488, 813, 0, 0, 0, 0),
(458, 740, 0, +30, 0, -30),
(475, 676, 0, 0, 0, 0),
]
make_path_relative(image, points10, 3, TRUE)
# 左足影
points11 = [
(350, 1530, 0, 0, 0, 0),
(360, 1520, 0, 0, +5, 0),
(380, 1500, 0, 0, 0, 0),
(380, 1500, +10, 0, 0, 0),
(400, 1490, 0, 0, 0, 0),
(400, 1485, 0, 0, 0, 0),
(395, 1470, 0, 0, 0, 0),
(397, 1450, 0, 0, 0, 0),
(390, 1430, 0, -10, 0, 0),
(390, 1400, 0, -20, 0, +10),
(400, 1320, 0, -10, 0, +20),
(400, 1270, 0, -10, 0, +10),
(390, 1220, 0, -10, 0, +10),
(400, 1180, 0, -10, 0, +10),
(400, 1130, 0, -15, 0, +10),
(395, 1070, 0, -15, 0, +15),
(395, 1000, 0, -10, 0, +15),
(400, 950, 0, -15, 0, +10),
(380, 895, 0, 0, +5, +10),
(360, 880, 0, 0, 0, 0),
#(340, 880, 0, 0, 0, 0),
#(360, 895, 0, 0, +5, -10),
(380, 950, 0, +10, 0, -15),
(375, 1000, 0, +15, 0, -10),
(375, 1070, 0, +15, 0, -15),
(380, 1130, 0, +10, 0, -15),
(380, 1180, 0, +10, 0, -10),
(370, 1220, 0, +10, 0, -10),
(380, 1270, 0, +10, 0, -10),
(380, 1320, 0, +20, 0, -10),
(370, 1400, 0, +10, 0, -20),
#(370, 1430, 0, +10, 0, 0),
(377, 1450, 0, 0, 0, 0),
#(375, 1470, 0, 0, 0, 0),
(380, 1485, 0, 0, 0, 0),
#(380, 1490, 0, 0, 0, 0),
#(360, 1500, +10, 0, 0, 0),
(351, 1516, +10, 0, 0, 0),
]
make_path_relative(image, points11, 3, TRUE)
set_line_width(6)
# 尻右
points10 = [
(423, 890, 0, 0, -5, +10),
(400, 898, +10, 0, 0, 0),
(400, 900, 0, 0, 0, 0),
(412, 912, 0, 0, 0, 0),
]
make_path_relative(image, points10, 3, TRUE)
# 尻左
points11 = [
(377, 890, 0, 0, +5, +10),
(400, 898, -10, 0, 0, 0),
(400, 900, 0, 0, 0, 0),
(388, 912, 0, 0, 0, 0),
]
make_path_relative(image, points11, 3, TRUE)
set_color(0, 0, 0, 1.0)
# 首(右)から右腕外側
points10 = [
(425, 491, 0, 0, 0, 0),
(424, 500, -1, -5, +10, +20),
#(520, 524, -60, -15, +10, +20),
(520, 524, -20, -7, +10, +10),
(535, 680, -5, -20, +5, +20),
(555, 730, -3, -10, +3, +15),
(555, 870, +5, -20, -2, +10),
(550, 920, +3, -5, -5, +10),
(510, 980, 0, 0, 0, 0),
(505, 980, 0, 0, 0, 0),
]
make_path_relative(image, points10, 1, TRUE)
# 首(左)から左腕外側
points11 = [
(375, 491, 0, 0, 0, 0),
(376, 500, +1, -5, -10, +20),
#(280, 524, +60, -15, -10, +20),
(280, 524, +20, -7, -10, +10),
(265, 680, +5, -20, -5, +20),
(245, 730, +3, -10, -3, +15),
(245, 870, -5, -20, +2, +10),
(250, 920, -3, -5, +5, +10),
(290, 980, 0, 0, 0, 0),
(295, 980, 0, 0, 0, 0),
]
make_path_relative(image, points11, 1, TRUE)
# 首(右) 欠けるのでもう一度描く
points10 = [
(425, 491, 0, 0, 0, 0),
(424, 500, -1, -5, +10, +20),
(428, 508, 0, 0, 0, 0),
]
make_path_relative(image, points10, 1, TRUE)
# 首(左)
points11 = [
(375, 491, 0, 0, 0, 0),
(376, 500, +1, -5, -10, +20),
(372, 508, 0, 0, 0, 0),
]
make_path_relative(image, points11, 1, TRUE)
set_line_width(2)
# 右鎖骨
points10 = [
(455, 518, 0, 0, 0, 0),
(420, 518, 0, 0, -10, 0),
(400, 530, +10, 0, 0, 0),
]
make_path_relative(image, points10, 1, TRUE)
# 左鎖骨
points11 = [
(345, 518, 0, 0, 0, 0),
(380, 518, 0, 0, +10, 0),
(400, 530, -10, 0, 0, 0),
]
make_path_relative(image, points11, 1, TRUE)
set_line_width(6)
# 右腕内側
points10 = [
(490, 675, 0, 0, 0, 0),
(495, 700, 0, 0, 0, 0),
(500, 760, 0, 0, 0, 0),
(530, 850, 0, 0, 0, 0),
]
make_path_relative(image, points10, 1, TRUE)
# 左腕内側
points11 = [
(310, 675, 0, 0, 0, 0),
(305, 700, 0, 0, 0, 0),
(300, 760, 0, 0, 0, 0),
(270, 850, 0, 0, 0, 0),
]
make_path_relative(image, points11, 1, TRUE)
set_line_width(3)
# 右手内側
points10 = [
(535, 830, 0, 0, 0, 0),
(526, 860, 0, 0, 0, 0),
]
make_path_relative(image, points10, 1, TRUE)
# 左手内側
points11 = [
(265, 830, 0, 0, 0, 0),
(274, 860, 0, 0, 0, 0),
]
make_path_relative(image, points11, 1, TRUE)
set_line_width(2)
# 右肘裏
points10 = [
(515, 700, 0, 0, 0, 0),
(513, 715, 0, 0, 0, 0),
]
make_path_relative(image, points10, 1, TRUE)
# 左肘裏
points11 = [
(285, 700, 0, 0, 0, 0),
(287, 715, 0, 0, 0, 0),
]
make_path_relative(image, points11, 1, TRUE)
set_line_width(6)
# 短い線を引くと太くぼやけるので、線幅を小さくする
set_line_width(2)
# 右脇
points10 = [
(505, 560, 0, 0, 0, 0),
(499, 578, 0, 0, 0, 0),
]
make_path_relative(image, points10, 1, TRUE)
# 左脇
points11 = [
(295, 560, 0, 0, 0, 0),
(301, 578, 0, 0, 0, 0),
]
make_path_relative(image, points11, 1, TRUE)
set_line_width(6)
# ウエスト右から右足外側
points10 = [
(484, 676, 0, 0, 0, 0),
(470, 740, 0, -30, 0, +30),
(490, 785, -10, -10, +20, +20),
(530, 880, 0, -30, 0, +20),
(470, 1150, 0, -50, 0, +20),
(480, 1250, 0, -20, 0, +20),
(450, 1460, 0, 0, 0, 0),
(485, 1510, 0, -20, 0, +20),
(450, 1530, 0, 0, 0, 0),
(440, 1520, 0, 0, -5, 0),
(420, 1500, 0, 0, 0, 0),
]
make_path_relative(image, points10, 1, TRUE)
# ウエスト左から左足外側
points11 = [
(316, 676, 0, 0, 0, 0),
(330, 740, 0, -30, 0, +30),
(310, 785, +10, -10, -20, +20),
(270, 880, 0, -30, 0, +20),
(330, 1150, 0, -50, 0, +20),
(320, 1250, 0, -20, 0, +20),
(350, 1460, 0, 0, 0, 0),
(315, 1510, 0, -20, 0, +20),
(350, 1530, 0, 0, 0, 0),
(360, 1520, 0, 0, +5, 0),
(380, 1500, 0, 0, 0, 0),
]
make_path_relative(image, points11, 1, TRUE)
set_line_width(4)
# 右足指
points10 = [
(460, 1526, 0, 0, 0, 0),
(460, 1520, 0, 0, 0, 0),
(455, 1510, 0, 0, 0, 0),
]
make_path_relative(image, points10, 1, TRUE)
points10 = [
(469, 1524, 0, 0, 0, 0),
(469, 1518, 0, 0, 0, 0),
(464, 1508, 0, 0, 0, 0),
]
make_path_relative(image, points10, 1, TRUE)
points10 = [
(477, 1520, 0, 0, 0, 0),
(477, 1514, 0, 0, 0, 0),
(472, 1504, 0, 0, 0, 0),
]
make_path_relative(image, points10, 1, TRUE)
points10 = [
(481, 1514, 0, 0, 0, 0),
(481, 1508, 0, 0, 0, 0),
(476, 1498, 0, 0, 0, 0),
]
make_path_relative(image, points10, 1, TRUE)
# 左足指
points10 = [
(340, 1526, 0, 0, 0, 0),
(340, 1520, 0, 0, 0, 0),
(345, 1510, 0, 0, 0, 0),
]
make_path_relative(image, points10, 1, TRUE)
points10 = [
(331, 1524, 0, 0, 0, 0),
(331, 1518, 0, 0, 0, 0),
(336, 1508, 0, 0, 0, 0),
]
make_path_relative(image, points10, 1, TRUE)
points10 = [
(323, 1520, 0, 0, 0, 0),
(323, 1514, 0, 0, 0, 0),
(328, 1504, 0, 0, 0, 0),
]
make_path_relative(image, points10, 1, TRUE)
points10 = [
(319, 1514, 0, 0, 0, 0),
(319, 1508, 0, 0, 0, 0),
(324, 1498, 0, 0, 0, 0),
]
make_path_relative(image, points10, 1, TRUE)
set_line_width(4)
# 右足内側付け根 途切れるので重ねて描く
points10 = [
(430, 888, 0, 0, 0, 0),
(420, 895, 0, 0, -5, +10),
(400, 950, 0, -15, 0, +10),
]
make_path_relative(image, points10, 1, TRUE)
# 左足内側付け根
points11 = [
(370, 888, 0, 0, 0, 0),
(380, 895, 0, 0, +5, +10),
(400, 950, 0, -15, 0, +10),
]
make_path_relative(image, points11, 1, TRUE)
set_line_width(6)
# 右足内側
points10 = [
#(440, 880, 0, 0, 0, 0),
(420, 895, 0, 0, -5, +10),
(400, 950, 0, -15, 0, +10),
(405, 1000, 0, -10, 0, +15),
(405, 1070, 0, -15, 0, +15),
(400, 1130, 0, -15, 0, +10),
(400, 1180, 0, -10, 0, +10),
(410, 1220, 0, -10, 0, +10),
(400, 1270, 0, -10, 0, +10),
(400, 1320, 0, -10, 0, +20),
(410, 1400, 0, -20, 0, +10),
(410, 1430, 0, -10, 0, 0),
(403, 1450, 0, 0, 0, 0),
(405, 1470, 0, 0, 0, 0),
(400, 1485, 0, 0, 0, 0),
(400, 1490, 0, 0, 0, 0),
(420, 1500, -10, 0, 0, 0),
]
make_path_relative(image, points10, 1, TRUE)
# 左足内側
points11 = [
#(360, 880, 0, 0, 0, 0),
(370, 888, 0, 0, 0, 0),
(380, 895, 0, 0, +5, +10),
(400, 950, 0, -15, 0, +10),
(395, 1000, 0, -10, 0, +15),
(395, 1070, 0, -15, 0, +15),
(400, 1130, 0, -15, 0, +10),
(400, 1180, 0, -10, 0, +10),
(390, 1220, 0, -10, 0, +10),
(400, 1270, 0, -10, 0, +10),
(400, 1320, 0, -10, 0, +20),
(390, 1400, 0, -20, 0, +10),
(390, 1430, 0, -10, 0, 0),
(397, 1450, 0, 0, 0, 0),
(395, 1470, 0, 0, 0, 0),
(400, 1485, 0, 0, 0, 0),
(400, 1490, 0, 0, 0, 0),
(380, 1500, +10, 0, 0, 0),
]
make_path_relative(image, points11, 1, TRUE)
set_line_width(3)
# 右膝外側
points10 = [
(455, 1140, 0, 0, 0, +5),
(450, 1160, 0, 0, 0, -5),
]
make_path_relative(image, points10, 1, TRUE)
# 左膝外側
points11 = [
(345, 1140, 0, 0, 0, +5),
(350, 1160, 0, 0, 0, -5),
]
make_path_relative(image, points11, 1, TRUE)
# 右膝内側
points10 = [
(420, 1130, 0, 0, 0, +20),
(430, 1170, 0, 0, 0, -20),
]
make_path_relative(image, points10, 1, TRUE)
# 左膝内側
points11 = [
(380, 1130, 0, 0, 0, +20),
(370, 1170, 0, 0, 0, -20),
]
make_path_relative(image, points11, 1, TRUE)
set_line_width(4)
# 股右
points10 = [
(440, 880, 0, 0, -15, +15),
(400, 900, +10, 0, 0, 0),
]
make_path_relative(image, points10, 1, TRUE)
# 股左
points11 = [
(360, 880, 0, 0, +15, +15),
(400, 900, -10, 0, 0, 0),
]
make_path_relative(image, points11, 1, TRUE)
set_line_width(3)
# 尻右
points10 = [
(400, 900, 0, 0, 0, 0),
(410, 910, 0, 0, 0, 0),
]
make_path_relative(image, points10, 1, TRUE)
# 尻左
points11 = [
(400, 900, 0, 0, 0, 0),
(390, 910, 0, 0, 0, 0),
]
make_path_relative(image, points11, 1, TRUE)
# 胸を描画(胸の影がはみ出さないようにレイヤーを分けている)
def draw_bust(image, bust_layer):
pdb.gimp_image_set_active_layer(image, bust_layer)
set_line_width(6)
set_color(240, 221, 195, 1.0)
# 首左下から右胸塗り
points10 = [
(376, 500, 0, 0, 0, 0),
(424, 500, -1, -5, +10, +20),
#(475, 516, 0, 0, 0, 0),
(475, 520, 0, 0, 0, 0),
(485, 560, -5, -10, +5, +10),
(505, 590, -10, -20, +10, +20),
(515, 640, 0, -20, -5, +20),
(475, 680, +30, -5, -30, 0),
#(415, 650, +20, +30, -10, -15),
(415, 652, +22, +27, 0, 0),
#(400, 635, 0, 0, 0, 0),
#(400, 635, 0, 0, +31, -36),
(400, 635, 0, 0, 0, 0),
]
make_path_relative(image, points10, 3, TRUE)
# 首右下から左胸塗り
points11 = [
(424, 500, 0, 0, 0, 0),
(376, 500, +1, -5, -10, +20),
#(325, 516, 0, 0, 0, 0),
(325, 520, 0, 0, 0, 0),
(315, 560, +5, -10, -5, +10),
(295, 590, +10, -20, -10, +20),
(285, 640, 0, -20, +5, +20),
(325, 680, -30, -5, +30, 0),
#(385, 650, -20, +30, +10, -15),
(385, 652, -22, +27, 0, 0),
#(400, 635, 0, 0, 0, 0),
#(400, 635, 0, 0, -31, -36),
(400, 635, 0, 0, 0, 0),
]
make_path_relative(image, points11, 3, TRUE)
# 不透明部分を選択する
pdb.gimp_image_select_item(image, 0, bust_layer)
# 選択範囲からマスクを作成する
mask = pdb.gimp_layer_create_mask(bust_layer, ADD_SELECTION_MASK)
# マスクをレイヤーに追加する
pdb.gimp_layer_add_mask(bust_layer, mask)
# マスク編集を無効にする(マスクでない部分を編集する)
pdb.gimp_layer_set_edit_mask(bust_layer, FALSE)
set_color(247, 195, 156, 1.0)
# 胸影右
points10 = [
(538, 680, 0, 0, 0, -30),
(468, 624, +30, 0, -30, 0),
(400, 680, 0, -30, 0, 0),
]
make_path_relative(image, points10, 3, TRUE)
# 胸影左
points11 = [
(262, 680, 0, 0, 0, -30),
(332, 624, -30, 0, +30, 0),
(400, 680, 0, -30, 0, 0),
]
make_path_relative(image, points11, 3, TRUE)
set_color(255, 255, 255, 1.0)
# ブラシ「2. Hardness 050」(51x51)を選択
pdb.gimp_context_set_brush("2. Hardness 050")
set_line_width(51)
# 胸ハイライト右
points10 = [
(440, 600, 0, 0, 0, 0),
]
make_path_relative(image, points10, 2, TRUE)
# 胸ハイライト左
points11 = [
(312, 600, 0, 0, 0, 0),
]
make_path_relative(image, points11, 2, TRUE)
# ブラシ「1. Pixel」(3x3)を選択
pdb.gimp_context_set_brush("1. Pixel")
set_line_width(6)
# マスクをレイヤーから削除する
pdb.gimp_layer_remove_mask(bust_layer, MASK_APPLY)
#
set_color(0, 0, 0, 1.0)
# 右胸
points10 = [
#(475, 516, 0, 0, 0, 0),
(485, 560, -5, -10, +5, +10),
(505, 590, -10, -20, +10, +20),
(515, 640, 0, -20, -5, +20),
(475, 680, +30, -5, -30, 0),
(415, 650, +20, +30, -10, -15),
(400, 635, 0, 0, 0, 0),
]
make_path_relative(image, points10, 1, TRUE)
# 左胸
points11 = [
#(325, 516, 0, 0, 0, 0),
(315, 560, +5, -10, -5, +10),
(295, 590, +10, -20, -10, +20),
(285, 640, 0, -20, +5, +20),
(325, 680, -30, -5, +30, 0),
(385, 650, -20, +30, +10, -15),
(400, 635, 0, 0, 0, 0),
]
make_path_relative(image, points11, 1, TRUE)
set_line_width(2)
# 右鎖骨
points10 = [
(455, 518, 0, 0, 0, 0),
(420, 518, 0, 0, -10, 0),
(400, 530, +10, 0, 0, 0),
]
make_path_relative(image, points10, 1, TRUE)
# 左鎖骨
points11 = [
(345, 518, 0, 0, 0, 0),
(380, 518, 0, 0, +10, 0),
(400, 530, -10, 0, 0, 0),
]
make_path_relative(image, points11, 1, TRUE)
set_line_width(6)
# 首の影を描画
def draw_body_after_merge(image, body_layer):
pdb.gimp_image_set_active_layer(image, body_layer)
set_line_width(6)
set_color(247, 195, 156, 1.0)
# 首塗り
points10 = [
(425, 491, 0, 0, 0, 0),
(424, 500, 0, 0, +3, +35),
(376, 500, 0, 0, 0, 0),
(375, 491, 0, 0, 0, 0),
]
make_path_relative(image, points10, 3, TRUE)
# 顔を描画
def draw_face(image, face_layer):
pdb.gimp_image_set_active_layer(image, face_layer)
set_line_width(6)
#
# 輪郭
points1 = [
(400, 300),
(410, 301),
(420, 303),
(430, 306),
(440, 310),
(450, 315),
(460, 320),
(470, 328),
(480, 339),
(485, 345),
(491, 360),
(491, 370),
(490, 380),
(488, 390, 0, 0, 0, 0),
(485, 400, 0, 0, 0, 0),
(482, 410, 0, 0, 0, 0),
(479, 420, 0, 0, 0, 0),
(475, 430, 0, 0, 0, 0),
(470, 440, 0, 0, 0, 0),
(465, 458, 0, 0, 0, 0),
(460, 470, 0, 0, 0, 0),
(450, 480, +5, -5, -5, +5),
(400, 500, +5, 0, -5, 0),
(350, 480, +5, +5, -5, -5),
(340, 470, 0, 0, 0, 0),
(335, 458, 0, 0, 0, 0),
(330, 440, 0, 0, 0, 0),
(325, 430, 0, 0, 0, 0),
(321, 420, 0, 0, 0, 0),
(318, 410, 0, 0, 0, 0),
(315, 400, 0, 0, 0, 0),
(312, 390, 0, 0, 0, 0),
(310, 380),
(309, 370),
(309, 360),
(315, 345),
(320, 339),
(330, 328),
(340, 320),
(350, 315),
(360, 310),
(370, 306),
(380, 303),
(390, 301),
(400, 300),
]
set_color(240, 221, 195, 1.0)
make_path_relative(image, points1, 3, TRUE)
set_color(0, 0, 0, 1.0)
make_path_relative(image, points1, 1, TRUE)
#
# 右耳
points16 = [
(475, 430, 0, 0, 0, 0),
(480, 434, 0, 0, 0, 0),
(478, 440, 0, 0, 0, 0),
(475, 447, 0, 0, 0, 0),
(467, 450, 0, 0, 0, 0),
]
set_color(240, 221, 195, 1.0)
make_path_relative(image, points16, 3, TRUE)
set_color(0, 0, 0, 1.0)
make_path_relative(image, points16, 1, TRUE)
#
# 左耳
points17 = [
(325, 430, 0, 0, 0, 0),
(320, 434, 0, 0, 0, 0),
(322, 440, 0, 0, 0, 0),
(325, 447, 0, 0, 0, 0),
(333, 450, 0, 0, 0, 0),
]
set_color(240, 221, 195, 1.0)
make_path_relative(image, points17, 3, TRUE)
set_color(0, 0, 0, 1.0)
make_path_relative(image, points17, 1, TRUE)
#
# 鼻
points9 = [
(401, 448, 0, 0, 0, 0),
(399, 450, 0, 0, 0, 0),
(401, 452, 0, 0, 0, 0),
]
make_path_relative(image, points9, 1, TRUE)
# 口
points4 = [
(380, 470, 0, 0, 0, 0),
(385, 473, 0, 0, 0, 0),
(400, 475, 0, 0, 0, 0),
(415, 473, 0, 0, 0, 0),
(420, 470, 0, 0, 0, 0),
]
make_path_relative(image, points4, 1, TRUE)
#
#
set_line_width(4)
#
# ブラシ「2. Block 02」(51x21)を選択
pdb.gimp_context_set_brush("2. Block 02")
set_line_width(30)
set_color(234, 145, 152, 1.0)
#set_color(234, 183, 174, 1.0)
# 右頬
#make_path_relative(image, [(430, 460), (435, 455)], 1, TRUE)
#make_path_relative(image, [(434, 460), (439, 455)], 1, TRUE)
#make_path_relative(image, [(438, 460), (443, 455)], 1, TRUE)
#make_path_relative(image, [(442, 460), (447, 455)], 1, TRUE)
#make_path_relative(image, [(446, 460), (451, 455)], 1, TRUE)
points10 = [
(442, 456, 0, 0, 0, 0),
]
make_path_relative(image, points10, 2, TRUE)
#
# 左頬
#make_path_relative(image, [(350, 460), (355, 455)], 1, TRUE)
#make_path_relative(image, [(354, 460), (359, 455)], 1, TRUE)
#make_path_relative(image, [(358, 460), (363, 455)], 1, TRUE)
#make_path_relative(image, [(362, 460), (367, 455)], 1, TRUE)
#make_path_relative(image, [(366, 460), (371, 455)], 1, TRUE)
points11 = [
(358, 456, 0, 0, 0, 0),
]
make_path_relative(image, points11, 2, TRUE)
# ブラシ「1. Pixel」(3x3)を選択
pdb.gimp_context_set_brush("1. Pixel")
set_line_width(3)
# 前髪を描画
def draw_bangs(image, bangs_layer):
pdb.gimp_image_set_active_layer(image, bangs_layer)
#
set_line_width(6)
set_color(115, 66, 41, 1.0)
# 髪塗りつぶし
points1_2 = [
# 頭頂
(400, 270),
# 髪(右内側)1
(400, 305, 0, 0, +4, +30),
(405, 370, -1, -35, +25, +1),
(450, 376, -20, -5, -2, -31),
(440, 315, +8, +30, 0, 0),
(440, 315),
]
make_path_relative(image, points1_2, 3, TRUE)
# 髪塗りつぶし
points1_4 = [
# 頭頂
(400, 270),
# 髪(右内側)1
(400, 305, 0, 0, -4, +30),
(395, 370, +1, -35, -25, +1),
(350, 376, +20, -5, +2, -31),
(360, 315, -8, +30, 0, 0),
(360, 315),
]
make_path_relative(image, points1_4, 3, TRUE)
#
# 髪(右内側)2塗りつぶし
points14_2 = [
(440, 315, 0, 0, +10, +30),
(456, 378, -6, -33, +16, +4),
(488, 390, -16, -8, 0, 0),
(495, 380), # 輪郭線を消すために一番下以外輪郭より少し大きめ(X+5)
(496, 370),
(496, 360),
(490, 345),
(485, 339),
(475, 328),
(465, 320),
(455, 315),
(445, 310),
(435, 306),
(425, 303),
(415, 301),
(400, 300),
]
make_path_relative(image, points14_2, 3, TRUE)
# 髪(左内側)2塗りつぶし
points15_2 = [
(360, 315, 0, 0, -10, +30),
(344, 378, +6, -33, -16, +4),
(312, 390, +16, -8, 0, 0),
(305, 380), # 輪郭線を消すために一番下以外輪郭より少し大きめ(X-5)
(304, 370),
(304, 360),
(310, 345),
(315, 339),
(325, 328),
(335, 320),
(345, 315),
(355, 310),
(365, 306),
(375, 303),
(385, 301),
(400, 300),
]
make_path_relative(image, points15_2, 3, TRUE)
# 髪(右内側)3塗りつぶし ハイライトと重なる部分を透明にしないために塗る
points14_3 = [
(489, 316),
(503, 343),
(503, 360),
(460, 360),
(460, 316),
]
make_path_relative(image, points14_3, 3, TRUE)
# 髪(左内側)3塗りつぶし ハイライトと重なる部分を透明にしないために塗る
points15_3 = [
(311, 316),
(297, 343),
(297, 360),
(340, 360),
(340, 316),
]
make_path_relative(image, points15_3, 3, TRUE)
#
# 不透明部分を選択する
pdb.gimp_image_select_item(image, 0, bangs_layer)
# 選択範囲からマスクを作成する
mask = pdb.gimp_layer_create_mask(bangs_layer, ADD_SELECTION_MASK)
# マスクをレイヤーに追加する
pdb.gimp_layer_add_mask(bangs_layer, mask)
# マスク編集を無効にする(マスクでない部分を編集する)
pdb.gimp_layer_set_edit_mask(bangs_layer, FALSE)
set_color(204, 146, 117, 1.0)
# 髪ハイライト右
points1 = [
(500, 320, 0, 0, -30, +30),
(400, 345, +20, -3, 0, 0),
(400, 355, 0, 0, +30, -3),
(500, 330, -10, +30, 0, 0),
]
make_path_relative(image, points1, 3, TRUE)
# 髪ハイライト左
points1 = [
(300, 320, 0, 0, +30, +30),
(400, 345, -20, -3, 0, 0),
(400, 355, 0, 0, -30, -3),
(300, 330, +10, +30, 0, 0),
]
make_path_relative(image, points1, 3, TRUE)
# マスクをレイヤーから削除する
pdb.gimp_layer_remove_mask(bangs_layer, MASK_APPLY)
#
set_color(0, 0, 0, 1.0)
#
# 髪(右内側)1
points14_1 = [
(400, 305, 0, 0, +4, +30),
(405, 370, -1, -35, +25, +1),
(450, 376, -20, -5, -2, -31),
(440, 315, +8, +30, 0, 0),
]
make_path_relative(image, points14_1, 1, TRUE)
#
# 髪(右内側)2
points14_2 = [
(440, 315, 0, 0, +10, +30),
(456, 378, -6, -33, +16, +4),
(488, 390, -16, -8, 0, 0),
]
make_path_relative(image, points14_2, 1, TRUE)
#
# 髪(左内側)1
points15_1 = [
(400, 305, 0, 0, -4, +30),
(395, 370, +1, -35, -25, +1),
(350, 376, +20, -5, +2, -31),
(360, 315, -8, +30, 0, 0),
]
make_path_relative(image, points15_1, 1, TRUE)
#
# 髪(左内側)2
points15_2 = [
(360, 315, 0, 0, -10, +30),
(344, 378, +6, -33, -16, +4),
(312, 390, +16, -8, 0, 0),
]
make_path_relative(image, points15_2, 1, TRUE)
# 旧スクウエストを描画
def draw_kyusuku_waist(image, kyusuku_waist_layer):
pdb.gimp_image_set_active_layer(image, kyusuku_waist_layer)
set_line_width(3)
# 尻影右
points10 = [
#(423, 890, 0, 0, -5, +10),
(426, 889, 0, 0, -6, +5),
(400, 898, +10, 0, 0, 0),
(400, 900, 0, 0, 0, 0),
(412, 912, 0, 0, 0, 0),
]
set_color(16, 39, 75, 1.0)
make_path_relative(image, points10, 3, TRUE)
set_color(0, 0, 0, 1.0)
make_path_relative(image, points10, 1, TRUE)
# 尻影左
points11 = [
#(377, 890, 0, 0, +5, +10),
(374, 889, 0, 0, +6, +5),
(400, 898, -10, 0, 0, 0),
(400, 900, 0, 0, 0, 0),
(388, 912, 0, 0, 0, 0),
]
set_color(16, 39, 75, 1.0)
make_path_relative(image, points11, 3, TRUE)
set_color(0, 0, 0, 1.0)
make_path_relative(image, points11, 1, TRUE)
set_color(29, 49, 86, 1.0)
# 胸真ん中少し上、ウエスト右から股右塗り
points10 = [
(400, 630, 0, 0, 0, 0),
(484, 676, 0, 0, 0, 0),
#(470, 740, 0, -30, 0, +30),
(471, 740, 0, -30, 0, +30),
#(496, 796, -10, -10, 0, +20),
(496, 794, -10, -10, 0, +20),
#(440, 880, 0, 0, -15, +15),
(440, 880, 0, 0, -10, +10),
(400, 900, +10, 0, 0, 0),
]
make_path_relative(image, points10, 3, TRUE)
# 胸真ん中少し上、ウエスト左から股左塗り
points11 = [
(400, 630, 0, 0, 0, 0),
(316, 676, 0, 0, 0, 0),
#(330, 740, 0, -30, 0, +30),
(329, 740, 0, -30, 0, +30),
#(304, 796, +10, -10, 0, +20),
(304, 794, +10, -10, 0, +20),
#(360, 880, 0, 0, +15, +15),
(360, 880, 0, 0, +10, +10),
(400, 900, -10, 0, 0, 0),
]
make_path_relative(image, points11, 3, TRUE)
set_color(16, 39, 75, 1.0)
# ウエスト右影
points10 = [
#(400, 630, 0, 0, 0, 0),
(484, 676, 0, 0, 0, 0),
#(470, 740, 0, -30, 0, +30),
(471, 740, 0, -30, 0, +30),
#(496, 796, -10, -10, 0, +20),
#(496, 794, -10, -10, 0, +20),
(496, 794, -10, -10, 0, 0),
(488, 813, 0, 0, 0, 0),
(458, 740, 0, +30, 0, -30),
(475, 676, 0, 0, 0, 0),
]
make_path_relative(image, points10, 3, TRUE)
set_color(51, 69, 108, 1.0)
# ウエスト左光
points11 = [
#(400, 630, 0, 0, 0, 0),
(316, 676, 0, 0, 0, 0),
#(330, 740, 0, -30, 0, +30),
(329, 740, 0, -30, 0, +30),
#(304, 796, +10, -10, 0, +20),
#(304, 794, +10, -10, 0, +20),
(304, 794, +10, -10, 0, 0),
(312, 813, 0, 0, 0, 0),
(342, 740, 0, +30, 0, -30),
(325, 676, 0, 0, 0, 0),
]
make_path_relative(image, points11, 3, TRUE)
set_color(0, 0, 0, 1.0)
# ウエスト右から股右外側線
points10 = [
#(400, 630, 0, 0, 0, 0),
(484, 676, 0, 0, 0, 0),
#(470, 740, 0, -30, 0, +30),
(471, 740, 0, -30, 0, +30),
#(496, 796, -10, -10, 0, +20),
(496, 794, -10, -10, 0, +20),
#(440, 880, 0, 0, -15, +15),
(440, 880, 0, 0, -10, +10),
(400, 900, +10, 0, 0, 0),
]
make_path_relative(image, points10, 1, TRUE)
# 胸真ん中少し上、ウエスト左から股左外側線
points11 = [
#(400, 630, 0, 0, 0, 0),
(316, 676, 0, 0, 0, 0),
#(330, 740, 0, -30, 0, +30),
(329, 740, 0, -30, 0, +30),
#(304, 796, +10, -10, 0, +20),
(304, 794, +10, -10, 0, +20),
#(360, 880, 0, 0, +15, +15),
(360, 880, 0, 0, +10, +10),
(400, 900, -10, 0, 0, 0),
]
make_path_relative(image, points11, 1, TRUE)
# ウエストライン右
points10 = [
(454, 676, 0, 0, 0, 0),
(440, 740, 0, -30, 0, +30),
(449, 868, -10, -10, 0, 0),
]
make_path_relative(image, points10, 1, TRUE)
# ウエストライン左
points10 = [
(346, 676, 0, 0, 0, 0),
(360, 740, 0, -30, 0, +30),
(351, 868, +10, -10, 0, 0),
]
make_path_relative(image, points10, 1, TRUE)
set_line_width(2)
# 股布ライン
points1 = [
(449, 868, 0, 0, 0, 0),
(351, 868, 0, 0, 0, 0),
]
make_path_relative(image, points1, 1, TRUE)
# 旧スクバストを描画(胸の影がはみ出さないようにレイヤーを分けている)
def draw_kyusuku_bust(image, kyusuku_bust_layer):
pdb.gimp_image_set_active_layer(image, kyusuku_bust_layer)
set_line_width(3)
set_color(29, 49, 86, 1.0)
# 右胸塗り
points10 = [
(400, 570, 0, 0, +25, 0),
(455, 514, 0, +30, 0, 0),
(475, 516, 0, 0, 0, 0),
(485, 560, -5, -10, +5, +10),
(505, 590, -10, -20, +10, +20),
(515, 640, 0, -20, -5, +20),
(475, 680, +30, -5, -30, 0),
#(415, 650, +20, +30, -10, -15),
(415, 652, +22, +27, 0, 0),
#(400, 635, 0, 0, 0, 0),
#(400, 635, 0, 0, +31, -36),
(400, 635, 0, 0, 0, 0),
]
make_path_relative(image, points10, 3, TRUE)
# 左胸塗り
points11 = [
(400, 570, 0, 0, -25, 0),
(345, 514, 0, +30, 0, 0),
(325, 516, 0, 0, 0, 0),
(315, 560, +5, -10, -5, +10),
(295, 590, +10, -20, -10, +20),
(285, 640, 0, -20, +5, +20),
(325, 680, -30, -5, +30, 0),
#(385, 650, -20, +30, +10, -15),
(385, 652, -22, +27, 0, 0),
#(400, 635, 0, 0, 0, 0),
#(400, 635, 0, 0, -31, -36),
(400, 635, 0, 0, 0, 0),
]
make_path_relative(image, points11, 3, TRUE)
#
# 不透明部分を選択する
pdb.gimp_image_select_item(image, 0, kyusuku_bust_layer)
# 選択範囲からマスクを作成する
mask = pdb.gimp_layer_create_mask(kyusuku_bust_layer, ADD_SELECTION_MASK)
# マスクをレイヤーに追加する
pdb.gimp_layer_add_mask(kyusuku_bust_layer, mask)
# マスク編集を無効にする(マスクでない部分を編集する)
pdb.gimp_layer_set_edit_mask(kyusuku_bust_layer, FALSE)
set_color(16, 39, 75, 1.0)
# 胸影右
points10 = [
(538, 680, 0, 0, 0, -30),
(468, 624, +30, 0, -30, 0),
(400, 680, 0, -30, 0, 0),
]
make_path_relative(image, points10, 3, TRUE)
# 胸影左
points11 = [
(262, 680, 0, 0, 0, -30),
(332, 624, -30, 0, +30, 0),
(400, 680, 0, -30, 0, 0),
]
make_path_relative(image, points11, 3, TRUE)
set_color(182, 197, 245, 1.0)
# ブラシ「2. Hardness 050」(51x51)を選択
pdb.gimp_context_set_brush("2. Hardness 050")
set_line_width(51)
# 胸ハイライト右
points10 = [
(440, 600, 0, 0, 0, 0),
]
make_path_relative(image, points10, 2, TRUE)
# 胸ハイライト左
points11 = [
(312, 600, 0, 0, 0, 0),
]
make_path_relative(image, points11, 2, TRUE)
# ブラシ「1. Pixel」(3x3)を選択
pdb.gimp_context_set_brush("1. Pixel")
set_line_width(3)
# マスクをレイヤーから削除する
pdb.gimp_layer_remove_mask(kyusuku_bust_layer, MASK_APPLY)
#
set_color(0, 0, 0, 1.0)
# 右胸外側線
points10 = [
(400, 570, 0, 0, +25, 0),
(455, 514, 0, +30, 0, 0),
(475, 516, 0, 0, 0, 0),
(485, 560, -5, -10, +5, +10),
(505, 590, -10, -20, +10, +20),
(515, 640, 0, -20, -5, +20),
(475, 680, +30, -5, -30, 0),
#(415, 650, +20, +30, -10, -15),
(415, 652, +22, +27, 0, 0),
#(400, 635, 0, 0, 0, 0),
(400, 635, 0, 0, +31, -36),
]
make_path_relative(image, points10, 1, TRUE)
# 左胸外側線
points11 = [
(400, 570, 0, 0, -25, 0),
(345, 514, 0, +30, 0, 0),
(325, 516, 0, 0, 0, 0),
(315, 560, +5, -10, -5, +10),
(295, 590, +10, -20, -10, +20),
(285, 640, 0, -20, +5, +20),
(325, 680, -30, -5, +30, 0),
#(385, 650, -20, +30, +10, -15),
(385, 652, -22, +27, 0, 0),
#(400, 635, 0, 0, 0, 0),
(400, 635, 0, 0, -31, -36),
]
make_path_relative(image, points11, 1, TRUE)
# 胸ライン右
points10 = [
(509, 602, 0, 0, 0, 0),
(492, 648, +20, 0, -5, +20),
(458, 679, 0, 0, 0, 0),
]
make_path_relative(image, points10, 1, TRUE)
# 胸ライン左
points11 = [
(291, 602, 0, 0, 0, 0),
(308, 648, -20, 0, +5, +20),
(342, 679, 0, 0, 0, 0),
]
make_path_relative(image, points11, 1, TRUE)
# 競スクウエストを描画
def draw_kyosuku_waist(image, kyosuku_waist_layer):
pdb.gimp_image_set_active_layer(image, kyosuku_waist_layer)
set_line_width(3)
# 尻影右
points10 = [
#(423, 890, 0, 0, -5, +10),
(426, 889, 0, 0, -6, +5),
(400, 898, +10, 0, 0, 0),
(400, 900, 0, 0, 0, 0),
(412, 912, 0, 0, 0, 0),
]
set_color(14, 68, 143, 1.0)
make_path_relative(image, points10, 3, TRUE)
set_color(0, 0, 0, 1.0)
make_path_relative(image, points10, 1, TRUE)
# 尻影左
points11 = [
#(377, 890, 0, 0, +5, +10),
(374, 889, 0, 0, +6, +5),
(400, 898, -10, 0, 0, 0),
(400, 900, 0, 0, 0, 0),
(388, 912, 0, 0, 0, 0),
]
set_color(14, 68, 143, 1.0)
make_path_relative(image, points11, 3, TRUE)
set_color(0, 0, 0, 1.0)
make_path_relative(image, points11, 1, TRUE)
set_color(24, 79, 180, 1.0)
# 胸真ん中少し上、ウエスト右から股右塗り
points10 = [
(400, 630, 0, 0, 0, 0),
(484, 676, 0, 0, 0, 0),
#(470, 740, 0, -30, 0, +30),
(471, 740, 0, -30, 0, +30),
#(496, 796, -10, -10, 0, +20),
(496, 794, -10, -10, 0, +20),
#(440, 880, 0, 0, -15, +15),
(440, 880, 0, 0, -10, +10),
(400, 900, +10, 0, 0, 0),
]
make_path_relative(image, points10, 3, TRUE)
# 胸真ん中少し上、ウエスト左から股左塗り
points11 = [
(400, 630, 0, 0, 0, 0),
(316, 676, 0, 0, 0, 0),
#(330, 740, 0, -30, 0, +30),
(329, 740, 0, -30, 0, +30),
#(304, 796, +10, -10, 0, +20),
(304, 794, +10, -10, 0, +20),
#(360, 880, 0, 0, +15, +15),
(360, 880, 0, 0, +10, +10),
(400, 900, -10, 0, 0, 0),
]
make_path_relative(image, points11, 3, TRUE)
fuzzy_select(kyosuku_waist_layer, 400, 750, 50, 2, TRUE, 0, 0, 0)
set_color(60, 100, 204, 1.0)
set_bg_color(14, 68, 143, 1.0)
edit_blend(kyosuku_waist_layer, FG_BG_RGB_MODE, NORMAL_MODE, GRADIENT_LINEAR, 100, 0, REPEAT_NONE, FALSE, FALSE, 0, 0, TRUE, 350, 750, 450, 750)
pdb.gimp_selection_clear(image)
set_color(14, 68, 143, 1.0)
# ウエスト右影
points10 = [
#(400, 630, 0, 0, 0, 0),
(484, 676, 0, 0, 0, 0),
#(470, 740, 0, -30, 0, +30),
(471, 740, 0, -30, 0, +30),
#(496, 796, -10, -10, 0, +20),
#(496, 794, -10, -10, 0, +20),
(496, 794, -10, -10, 0, 0),
(488, 813, 0, 0, 0, 0),
(458, 740, 0, +30, 0, -30),
(475, 676, 0, 0, 0, 0),
]
make_path_relative(image, points10, 3, TRUE)
set_color(60, 100, 204, 1.0)
# ウエスト左光
points11 = [
#(400, 630, 0, 0, 0, 0),
(316, 676, 0, 0, 0, 0),
#(330, 740, 0, -30, 0, +30),
(329, 740, 0, -30, 0, +30),
#(304, 796, +10, -10, 0, +20),
#(304, 794, +10, -10, 0, +20),
(304, 794, +10, -10, 0, 0),
(312, 813, 0, 0, 0, 0),
(342, 740, 0, +30, 0, -30),
(325, 676, 0, 0, 0, 0),
]
make_path_relative(image, points11, 3, TRUE)
set_color(0, 0, 0, 1.0)
# ウエスト右から股右外側線
points10 = [
#(400, 630, 0, 0, 0, 0),
(484, 676, 0, 0, 0, 0),
#(470, 740, 0, -30, 0, +30),
(471, 740, 0, -30, 0, +30),
#(496, 796, -10, -10, 0, +20),
(496, 794, -10, -10, 0, +20),
#(440, 880, 0, 0, -15, +15),
(440, 880, 0, 0, -10, +10),
(400, 900, +10, 0, 0, 0),
]
make_path_relative(image, points10, 1, TRUE)
# ウエスト左から股左外側線
points11 = [
#(400, 630, 0, 0, 0, 0),
(316, 676, 0, 0, 0, 0),
#(330, 740, 0, -30, 0, +30),
(329, 740, 0, -30, 0, +30),
#(304, 796, +10, -10, 0, +20),
(304, 794, +10, -10, 0, +20),
#(360, 880, 0, 0, +15, +15),
(360, 880, 0, 0, +10, +10),
(400, 900, -10, 0, 0, 0),
]
make_path_relative(image, points11, 1, TRUE)
# 競スクバストを描画(胸の影がはみ出さないようにレイヤーを分けている)
def draw_kyosuku_bust(image, kyosuku_bust_layer):
pdb.gimp_image_set_active_layer(image, kyosuku_bust_layer)
set_line_width(3)
set_color(24, 79, 180, 1.0)
# 右胸塗り
points10 = [
(400, 570, 0, 0, +25, 0),
(455, 533, 0, +20, 0, +12),
#(459, 535, 0, 0, 0, +0),
#(459, 535, 0, 0, 0, -10),
(485, 560, 0, 0, +5, +10),
(505, 590, -10, -20, +10, +20),
(515, 640, 0, -20, -5, +20),
(475, 680, +30, -5, -30, 0),
#(415, 650, +20, +30, -10, -15),
(415, 652, +22, +27, 0, 0),
#(400, 635, 0, 0, 0, 0),
#(400, 635, 0, 0, +31, -36),
(400, 635, 0, 0, 0, 0),
]
make_path_relative(image, points10, 3, TRUE)
# 左胸塗り
points11 = [
(400, 570, 0, 0, -25, 0),
(345, 533, 0, +20, 0, +12),
#(341, 535, 0, 0, 0, 5),
#(341, 535, 0, 0, 0, +10),
(315, 560, 0, 0, -5, +10),
(295, 590, +10, -20, -10, +20),
(285, 640, 0, -20, +5, +20),
(325, 680, -30, -5, +30, 0),
#(385, 650, -20, +30, +10, -15),
(385, 652, -22, +27, 0, 0),
#(400, 635, 0, 0, 0, 0),
#(400, 635, 0, 0, -31, -36),
(400, 635, 0, 0, 0, 0),
]
make_path_relative(image, points11, 3, TRUE)
#
# 不透明部分を選択する
pdb.gimp_image_select_item(image, 0, kyosuku_bust_layer)
# 選択範囲からマスクを作成する
mask = pdb.gimp_layer_create_mask(kyosuku_bust_layer, ADD_SELECTION_MASK)
# マスクをレイヤーに追加する
pdb.gimp_layer_add_mask(kyosuku_bust_layer, mask)
# マスク編集を無効にする(マスクでない部分を編集する)
pdb.gimp_layer_set_edit_mask(kyosuku_bust_layer, FALSE)
set_color(14, 68, 143, 1.0)
# 胸影右
points10 = [
(538, 680, 0, 0, 0, -30),
(468, 624, +30, 0, -30, 0),
(400, 680, 0, -30, 0, 0),
]
make_path_relative(image, points10, 3, TRUE)
# 胸影左
points11 = [
(262, 680, 0, 0, 0, -30),
(332, 624, -30, 0, +30, 0),
(400, 680, 0, -30, 0, 0),
]
make_path_relative(image, points11, 3, TRUE)
set_color(182, 197, 245, 1.0)
# ブラシ「2. Hardness 050」(51x51)を選択
pdb.gimp_context_set_brush("2. Hardness 050")
set_line_width(51)
# 胸ハイライト右
points10 = [
(440, 600, 0, 0, 0, 0),
]
make_path_relative(image, points10, 2, TRUE)
# 胸ハイライト左
points11 = [
(312, 600, 0, 0, 0, 0),
]
make_path_relative(image, points11, 2, TRUE)
# ブラシ「1. Pixel」(3x3)を選択
pdb.gimp_context_set_brush("1. Pixel")
set_line_width(3)
# マスクをレイヤーから削除する
pdb.gimp_layer_remove_mask(kyosuku_bust_layer, MASK_APPLY)
#
set_color(0, 0, 0, 1.0)
# 右胸外側線
points10 = [
(468, 552, 0, 0, 0, 0),
#(485, 560, -5, -10, +5, +10),
(485, 560, -3, -3, +10, +10),
(505, 590, -10, -20, +10, +20),
(515, 640, 0, -20, -5, +20),
(475, 680, +30, -5, -30, 0),
#(415, 650, +20, +30, -10, -15),
(415, 652, +22, +27, 0, 0),
#(400, 635, 0, 0, 0, 0),
(400, 635, 0, 0, +31, -36),
]
make_path_relative(image, points10, 1, TRUE)
# 左胸外側線
points11 = [
(332, 552, 0, 0, 0, 0),
#(315, 560, +5, -10, -5, +10),
(315, 560, +3, -3, -10, +10),
(295, 590, +10, -20, -10, +20),
(285, 640, 0, -20, +5, +20),
(325, 680, -30, -5, +30, 0),
#(385, 650, -20, +30, +10, -15),
(385, 652, -22, +27, 0, 0),
#(400, 635, 0, 0, 0, 0),
(400, 635, 0, 0, -31, -36),
]
make_path_relative(image, points11, 1, TRUE)
# 右胸肩紐内側
points10 = [
(400, 570, 0, 0, +25, 0),
(455, 533, 0, +20, 0, 0),
(459, 535, 0, 0, 0, +20),
(400, 576, +25, 0, 0, 0),
]
set_color(255, 255, 255, 1.0)
make_path_relative(image, points10, 3, TRUE)
set_color(0, 0, 0, 1.0)
make_path_relative(image, points10, 1, TRUE)
# 左胸肩紐内側
points11 = [
(400, 570, 0, 0, -25, 0),
(345, 533, 0, +20, 0, 0),
(341, 535, 0, 0, 0, +20),
(400, 576, -25, 0, 0, 0),
]
set_color(255, 255, 255, 1.0)
make_path_relative(image, points11, 3, TRUE)
set_color(0, 0, 0, 1.0)
make_path_relative(image, points11, 1, TRUE)
# 右胸肩紐外側
points10 = [
(485, 560, 0, 0, -20, -10),
#(490, 566, 0, 0, -10, 0),
(444, 513, 0, 0, 0, 0),
(434, 508, 0, 0, 0, 0),
#(476, 558, -10, 0, 0, 0),
(468, 552, -20, -10, 0, 0),
]
set_color(255, 255, 255, 1.0)
make_path_relative(image, points10, 3, TRUE)
set_color(0, 0, 0, 1.0)
make_path_relative(image, points10, 2, TRUE)
# 左胸肩紐外側
points11 = [
(315, 560, 0, 0, +20, -10),
#(310, 566, 0, 0, +10, 0),
(356, 513, 0, 0, 0, 0),
(366, 508, 0, 0, 0, 0),
#(324, 558, +10, 0, 0, 0),
(332, 552, +20, -10, 0, 0),
]
set_color(255, 255, 255, 1.0)
make_path_relative(image, points11, 3, TRUE)
set_color(0, 0, 0, 1.0)
make_path_relative(image, points11, 2, TRUE)
def draw_bunny_tights(image, bunny_tights_layer):
pdb.gimp_image_set_active_layer(image, bunny_tights_layer)
set_line_width(6)
set_color(0, 0, 0, 1.0)
# ウエスト右から右足塗り
points10 = [
#(496, 796, 0, 0, 0, 0),
(496, 796, 0, 0, +5, -3),
(530, 880, 0, -30, 0, +20),
(470, 1150, 0, -50, 0, +20),
(480, 1250, 0, -20, 0, +20),
(450, 1460, 0, 0, 0, 0),
(485, 1510, 0, -20, 0, +20),
(450, 1530, 0, 0, 0, 0),
(440, 1520, 0, 0, -5, 0),
(420, 1500, 0, 0, 0, 0),
(420, 1500, -10, 0, 0, 0),
(400, 1490, 0, 0, 0, 0),
(400, 1485, 0, 0, 0, 0),
(405, 1470, 0, 0, 0, 0),
(403, 1450, 0, 0, 0, 0),
(410, 1430, 0, -10, 0, 0),
(410, 1400, 0, -20, 0, +10),
(400, 1320, 0, -10, 0, +20),
(400, 1270, 0, -10, 0, +10),
(410, 1220, 0, -10, 0, +10),
(400, 1180, 0, -10, 0, +10),
(400, 1130, 0, -15, 0, +10),
(405, 1070, 0, -15, 0, +15),
(405, 1000, 0, -10, 0, +15),
(400, 950, 0, +10, 0, -15),
(420, 895, 0, 0, +3, 0),
(440, 880, 0, 0, 0, 0),
]
make_path_relative(image, points10, 3, TRUE)
# ウエスト左から左足塗り
points11 = [
#(304, 796, 0, 0, 0, 0),
(304, 796, 0, 0, -5, -3),
(270, 880, 0, -30, 0, +20),
(330, 1150, 0, -50, 0, +20),
(320, 1250, 0, -20, 0, +20),
(350, 1460, 0, 0, 0, 0),
(315, 1510, 0, -20, 0, +20),
(350, 1530, 0, 0, 0, 0),
(360, 1520, 0, 0, +5, 0),
(380, 1500, 0, 0, 0, 0),
(380, 1500, +10, 0, 0, 0),
(400, 1490, 0, 0, 0, 0),
(400, 1485, 0, 0, 0, 0),
(395, 1470, 0, 0, 0, 0),
(397, 1450, 0, 0, 0, 0),
(390, 1430, 0, -10, 0, 0),
(390, 1400, 0, -20, 0, +10),
(400, 1320, 0, -10, 0, +20),
(400, 1270, 0, -10, 0, +10),
(390, 1220, 0, -10, 0, +10),
(400, 1180, 0, -10, 0, +10),
(400, 1130, 0, -15, 0, +10),
(395, 1070, 0, -15, 0, +15),
(395, 1000, 0, -10, 0, +15),
(400, 950, 0, +10, 0, -15),
(380, 895, 0, 0, -3, 0),
(360, 880, 0, 0, 0, 0),
]
make_path_relative(image, points11, 3, TRUE)
set_line_width(6)
set_color(127, 127, 127, 1.0)
# 右太ももハイライト
points10 = [
(464, 900, 0, 0, 0, 0),
(446, 985, 0, 0, 0, 0),
(434, 1070, 0, 0, 0, 0),
(452, 985, 0, 0, 0, 0),
]
make_path_relative(image, points10, 3, TRUE)
# 左太ももハイライト
points11 = [
(322, 900, 0, 0, 0, 0),
(333, 985, 0, 0, 0, 0),
(350, 1070, 0, 0, 0, 0),
(339, 985, 0, 0, 0, 0),
]
make_path_relative(image, points11, 3, TRUE)
# バニーガールウエストを描画
def draw_bunny_waist(image, bunny_waist_layer):
pdb.gimp_image_set_active_layer(image, bunny_waist_layer)
set_line_width(3)
# 尻影右
points10 = [
#(423, 890, 0, 0, -5, +10),
(426, 889, 0, 0, -6, +5),
(400, 898, +10, 0, 0, 0),
(400, 900, 0, 0, 0, 0),
(412, 912, 0, 0, 0, 0),
]
set_color(196, 36, 36, 1.0)
make_path_relative(image, points10, 3, TRUE)
set_color(0, 0, 0, 1.0)
make_path_relative(image, points10, 1, TRUE)
# 尻影左
points11 = [
#(377, 890, 0, 0, +5, +10),
(374, 889, 0, 0, +6, +5),
(400, 898, -10, 0, 0, 0),
(400, 900, 0, 0, 0, 0),
(388, 912, 0, 0, 0, 0),
]
set_color(196, 36, 36, 1.0)
make_path_relative(image, points11, 3, TRUE)
set_color(0, 0, 0, 1.0)
make_path_relative(image, points11, 1, TRUE)
set_color(240, 21, 21, 1.0)
# 胸真ん中、ウエスト右から股右塗り
points10 = [
(400, 635, 0, 0, 0, 0),
(484, 676, 0, 0, 0, 0),
#(470, 740, 0, -30, 0, +30),
(471, 740, 0, -30, 0, +30),
#(496, 796, -10, -10, 0, +20),
(496, 794, -10, -10, 0, +20),
#(440, 880, 0, 0, -15, +15),
(440, 880, 0, 0, -10, +10),
(400, 900, +10, 0, 0, 0),
]
make_path_relative(image, points10, 3, TRUE)
# 胸真ん中、ウエスト左から股左塗り
points11 = [
(400, 635, 0, 0, 0, 0),
(316, 676, 0, 0, 0, 0),
#(330, 740, 0, -30, 0, +30),
(329, 740, 0, -30, 0, +30),
#(304, 796, +10, -10, 0, +20),
(304, 794, +10, -10, 0, +20),
#(360, 880, 0, 0, +15, +15),
(360, 880, 0, 0, +10, +10),
(400, 900, -10, 0, 0, 0),
]
make_path_relative(image, points11, 3, TRUE)
set_color(0, 0, 0, 1.0)
# 右胸外側線
points10 = [
(474, 580, 0, 0, 0, 0),
(515, 640, 0, -20, -5, +20),
#(512, 650, 0, -20, -4, +10),
(475, 680, +30, -5, -30, 0),
#(415, 650, +20, +30, -20, -30),
(415, 652, +22, +27, 0, 0),
#(400, 635, 0, 0, 0, -10),
(400, 635, 0, 0, +31, -36),
]
make_path_relative(image, points10, 2, TRUE)
# 左胸外側線
points11 = [
(326, 580, 0, 0, 0, 0),
(285, 640, 0, -20, +5, +20),
#(288, 650, 0, -20, +4, +10),
(325, 680, -30, -5, +30, 0),
#(385, 650, -20, +30, +20, -30),
(385, 652, -22, +27, 0, 0),
#(400, 635, 0, 0, 0, -10),
(400, 635, 0, 0, -31, -36),
]
make_path_relative(image, points11, 2, TRUE)
set_color(196, 36, 36, 1.0)
# ウエスト右影
points10 = [
#(400, 630, 0, 0, 0, 0),
(484, 676, 0, 0, 0, 0),
#(470, 740, 0, -30, 0, +30),
(471, 740, 0, -30, 0, +30),
#(496, 796, -10, -10, 0, +20),
#(496, 794, -10, -10, 0, +20),
(496, 794, -10, -10, 0, 0),
(488, 813, 0, 0, 0, 0),
(458, 740, 0, +30, 0, -30),
(475, 676, 0, 0, 0, 0),
]
make_path_relative(image, points10, 3, TRUE)
set_color(196, 36, 36, 1.0)
# ウエスト左影
points11 = [
#(400, 630, 0, 0, 0, 0),
(316, 676, 0, 0, 0, 0),
#(330, 740, 0, -30, 0, +30),
(329, 740, 0, -30, 0, +30),
#(304, 796, +10, -10, 0, +20),
#(304, 794, +10, -10, 0, +20),
(304, 794, +10, -10, 0, 0),
(312, 813, 0, 0, 0, 0),
(342, 740, 0, +30, 0, -30),
(325, 676, 0, 0, 0, 0),
]
make_path_relative(image, points11, 3, TRUE)
set_color(0, 0, 0, 1.0)
# ウエスト右から股右外側線
points10 = [
#(400, 630, 0, 0, 0, 0),
#(400, 635, 0, 0, 0, 0),
(484, 676, 0, 0, 0, 0),
#(470, 740, 0, -30, 0, +30),
(471, 740, 0, -30, 0, +30),
#(496, 796, -10, -10, 0, +20),
(496, 794, -10, -10, 0, +20),
#(440, 880, 0, 0, -15, +15),
(440, 880, 0, 0, -10, +10),
(400, 900, +10, 0, 0, 0),
]
make_path_relative(image, points10, 1, TRUE)
# ウエスト左から股左外側線
points11 = [
#(400, 630, 0, 0, 0, 0),
#(400, 635, 0, 0, 0, 0),
(316, 676, 0, 0, 0, 0),
#(330, 740, 0, -30, 0, +30),
(329, 740, 0, -30, 0, +30),
#(304, 796, +10, -10, 0, +20),
(304, 794, +10, -10, 0, +20),
#(360, 880, 0, 0, +15, +15),
(360, 880, 0, 0, +10, +10),
(400, 900, -10, 0, 0, 0),
]
make_path_relative(image, points11, 1, TRUE)
# ウエストライン右
points10 = [
(454, 676, 0, 0, 0, 0),
(440, 740, 0, -30, 0, +30),
#(440, 760, 0, -30, 0, +30),
(449, 868, -10, -10, 0, 0),
#(467, 843, -10, -10, 0, 0),
]
make_path_relative(image, points10, 1, TRUE)
# ウエストライン左
points10 = [
(346, 676, 0, 0, 0, 0),
(360, 740, 0, -30, 0, +30),
#(360, 760, 0, -30, 0, +30),
(351, 868, +10, -10, 0, 0),
#(333, 843, +10, -10, 0, 0),
]
make_path_relative(image, points10, 1, TRUE)
set_line_width(2)
# ウエストライン真ん中
points10 = [
(400, 635, 0, 0, 0, 0),
(400, 899, 0, 0, 0, 0),
]
make_path_relative(image, points10, 1, TRUE)
#
set_color(240, 21, 21, 1.0)
set_bg_color(196, 36, 36, 1.0)
fuzzy_select(bunny_waist_layer, 420, 780, 30, 2, TRUE, 0, 0, 0)
edit_blend(bunny_waist_layer, FG_BG_RGB_MODE, NORMAL_MODE, GRADIENT_BILINEAR, 100, 0, REPEAT_NONE, FALSE, FALSE, 0, 0, TRUE, 420, 780, 420, 660)
fuzzy_select(bunny_waist_layer, 380, 780, 30, 2, TRUE, 0, 0, 0)
edit_blend(bunny_waist_layer, FG_BG_RGB_MODE, NORMAL_MODE, GRADIENT_BILINEAR, 100, 0, REPEAT_NONE, FALSE, FALSE, 0, 0, TRUE, 380, 780, 380, 660)
fuzzy_select(bunny_waist_layer, 460, 820, 30, 2, TRUE, 0, 0, 0)
edit_blend(bunny_waist_layer, FG_BG_RGB_MODE, NORMAL_MODE, GRADIENT_LINEAR, 100, 0, REPEAT_NONE, FALSE, FALSE, 0, 0, TRUE, 444, 810, 476, 778)
fuzzy_select(bunny_waist_layer, 340, 820, 30, 2, TRUE, 0, 0, 0)
edit_blend(bunny_waist_layer, FG_BG_RGB_MODE, NORMAL_MODE, GRADIENT_LINEAR, 100, 0, REPEAT_NONE, FALSE, FALSE, 0, 0, TRUE, 356, 810, 324, 778)
pdb.gimp_selection_clear(image)
# バニーガールバストを描画(胸の影がはみ出さないようにレイヤーを分けている)
def draw_bunny_bust(image, bunny_bust_layer):
pdb.gimp_image_set_active_layer(image, bunny_bust_layer)
set_line_width(3)
set_color(240, 21, 21, 1.0)
# 右胸塗り
points10 = [
(474, 580, 0, 0, 0, 0),
(515, 640, 0, -20, -5, +20),
#(512, 650, 0, -20, -4, +10),
(475, 680, +30, -5, -30, 0),
#(415, 650, +20, +30, -20, -30),
(415, 652, +22, +27, 0, 0),
#(400, 635, 0, 0, 0, -10),
(400, 635, 0, 0, +31, -36),
]
make_path_relative(image, points10, 3, TRUE)
# 左胸塗り
points11 = [
(326, 580, 0, 0, 0, 0),
(285, 640, 0, -20, +5, +20),
#(288, 650, 0, -20, +4, +10),
(325, 680, -30, -5, +30, 0),
#(385, 650, -20, +30, +20, -30),
(385, 652, -22, +27, 0, 0),
#(400, 635, 0, 0, 0, -10),
(400, 635, 0, 0, -31, -36),
]
make_path_relative(image, points11, 3, TRUE)
#
# 不透明部分を選択する
pdb.gimp_image_select_item(image, 0, bunny_bust_layer)
# 選択範囲からマスクを作成する
mask = pdb.gimp_layer_create_mask(bunny_bust_layer, ADD_SELECTION_MASK)
# マスクをレイヤーに追加する
pdb.gimp_layer_add_mask(bunny_bust_layer, mask)
# マスク編集を無効にする(マスクでない部分を編集する)
pdb.gimp_layer_set_edit_mask(bunny_bust_layer, FALSE)
set_color(196, 36, 36, 1.0)
# 胸影右
points10 = [
(538, 680, 0, 0, 0, -30),
(468, 624, +30, 0, -30, 0),
(400, 680, 0, -30, 0, 0),
]
make_path_relative(image, points10, 3, TRUE)
# 胸影左
points11 = [
(262, 680, 0, 0, 0, -30),
(332, 624, -30, 0, +30, 0),
(400, 680, 0, -30, 0, 0),
]
make_path_relative(image, points11, 3, TRUE)
#set_color(240, 98, 89, 1.0)
set_color(255, 255, 255, 1.0)
# ブラシ「2. Hardness 050」(51x51)を選択
pdb.gimp_context_set_brush("2. Hardness 050")
set_line_width(51)
# 胸ハイライト右
points10 = [
(440, 600, 0, 0, 0, 0),
]
make_path_relative(image, points10, 2, TRUE)
# 胸ハイライト左
points11 = [
(312, 600, 0, 0, 0, 0),
]
make_path_relative(image, points11, 2, TRUE)
# ブラシ「1. Pixel」(3x3)を選択
pdb.gimp_context_set_brush("1. Pixel")
set_line_width(3)
# マスクをレイヤーから削除する
pdb.gimp_layer_remove_mask(bunny_bust_layer, MASK_APPLY)
#
set_color(0, 0, 0, 1.0)
# 右胸外側線
points10 = [
(474, 580, 0, 0, 0, 0),
(515, 640, 0, -20, -5, +20),
#(512, 650, 0, -20, -4, +10),
(475, 680, +30, -5, -30, 0),
#(415, 650, +20, +30, -20, -30),
(415, 652, +22, +27, 0, 0),
#(400, 635, 0, 0, 0, -10),
(400, 635, 0, 0, +31, -36),
]
make_path_relative(image, points10, 2, TRUE)
# 左胸外側線
points11 = [
(326, 580, 0, 0, 0, 0),
(285, 640, 0, -20, +5, +20),
#(288, 650, 0, -20, +4, +10),
(325, 680, -30, -5, +30, 0),
#(385, 650, -20, +30, +20, -30),
(385, 652, -22, +27, 0, 0),
#(400, 635, 0, 0, 0, -10),
(400, 635, 0, 0, -31, -36),
]
make_path_relative(image, points11, 2, TRUE)
# 胸ライン右
points10 = [
(474, 580, 0, 0, 0, 0),
(488, 622, 0, -15, 0, +30),
(458, 679, 0, 0, 0, 0),
]
make_path_relative(image, points10, 1, TRUE)
# 胸ライン左
points11 = [
(326, 580, 0, 0, 0, 0),
(312, 622, 0, -15, 0, +30),
(342, 679, 0, 0, 0, 0),
]
make_path_relative(image, points11, 1, TRUE)
# バニーガール耳を描画
def draw_bunny_ears(image, bunny_ears_layer):
pdb.gimp_image_set_active_layer(image, bunny_ears_layer)
set_line_width(3)
set_color(240, 21, 21, 1.0)
# カチューシャ右
points10 = [
(400, 290, 0, 0, 0, 0),
(466, 324, -33, -34, -33, -21),
(400, 303, 0, 0, 0, 0),
]
make_path_relative(image, points10, 3, TRUE)
set_color(196, 36, 36, 1.0)
# カチューシャ右影
points10 = [
(430, 299, 0, 0, 0, 0),
(466, 324, -15, -15, -18, -13),
(430, 307, 0, 0, 0, 0),
]
make_path_relative(image, points10, 3, TRUE)
set_color(0, 0, 0, 1.0)
# カチューシャ右線
points10 = [
(400, 290, 0, 0, 0, 0),
(466, 324, -33, -34, -33, -21),
(400, 303, 0, 0, 0, 0),
]
make_path_relative(image, points10, 1, TRUE)
set_color(240, 21, 21, 1.0)
# カチューシャ左
points11 = [
(400, 290, 0, 0, 0, 0),
(334, 324, +33, -34, +33, -21),
(400, 303, 0, 0, 0, 0),
]
make_path_relative(image, points11, 3, TRUE)
set_color(247, 120, 120, 1.0)
# カチューシャ左光
points10 = [
(370, 299, 0, 0, 0, 0),
(334, 324, +15, -15, +18, -13),
(370, 307, 0, 0, 0, 0),
]
make_path_relative(image, points10, 3, TRUE)
set_color(0, 0, 0, 1.0)
# カチューシャ左線
points11 = [
(400, 290, 0, 0, 0, 0),
(334, 324, +33, -34, +33, -21),
(400, 303, 0, 0, 0, 0),
]
make_path_relative(image, points11, 1, TRUE)
# 右耳付け根
points10 = [
(414, 298, 0, 0, 0, -60),
(430, 173, 0, 0, 0, 0),
(446, 175, 0, 0, 0, +50),
(426, 300, 0, 0, 0, 0),
]
set_color(196, 36, 36, 1.0)
make_path_relative(image, points10, 3, TRUE)
set_color(0, 0, 0, 1.0)
make_path_relative(image, points10, 1, TRUE)
# 左耳付け根
points10 = [
(386, 298, 0, 0, 0, -60),
(370, 173, 0, 0, 0, 0),
(354, 175, 0, 0, 0, +50),
(374, 300, 0, 0, 0, 0),
]
set_color(196, 36, 36, 1.0)
make_path_relative(image, points10, 3, TRUE)
set_color(0, 0, 0, 1.0)
make_path_relative(image, points10, 1, TRUE)
# 右耳先
set_color(240, 21, 21, 1.0)
points10 = [
(446, 175, 0, 0, 0, 0),
(548, 247, -38, -66, -70, 0),
(430, 173, 0, 0, 0, 0),
]
make_path_relative(image, points10, 3, TRUE)
# 右耳先光
set_color(247, 120, 120, 1.0)
points10 = [
(446, 175, 0, 0, 0, 0),
(548, 247, -38, -66, -68, -64),
(438, 174, 0, 0, 0, 0),
]
make_path_relative(image, points10, 3, TRUE)
# 右耳先線
set_color(0, 0, 0, 1.0)
points10 = [
(446, 175, 0, 0, 0, 0),
(548, 247, -38, -66, -70, 0),
(430, 173, 0, 0, 0, 0),
]
make_path_relative(image, points10, 2, TRUE)
# 左耳先
set_color(240, 21, 21, 1.0)
points10 = [
(354, 175, 0, 0, 0, 0),
(252, 247, +38, -66, +70, 0),
(370, 173, 0, 0, 0, 0),
]
make_path_relative(image, points10, 3, TRUE)
# 左耳先光
set_color(247, 120, 120, 1.0)
points10 = [
(354, 175, 0, 0, 0, 0),
(252, 247, +38, -66, +68, -64),
(362, 174, 0, 0, 0, 0),
]
make_path_relative(image, points10, 3, TRUE)
# 左耳先線
set_color(0, 0, 0, 1.0)
points10 = [
(354, 175, 0, 0, 0, 0),
(252, 247, +38, -66, +70, 0),
(370, 173, 0, 0, 0, 0),
]
make_path_relative(image, points10, 2, TRUE)
# バニーガール蝶ネクタイを描画
def draw_bunny_bow(image, bunny_bow_layer):
pdb.gimp_image_set_active_layer(image, bunny_bow_layer)
set_line_width(3)
# 蝶ネクタイ白部分
points10 = [
(428, 498, 0, 0, 0, 0),
(436, 511, 0, 0, 0, 0),
(364, 511, 0, 0, 0, 0),
(372, 498, 0, 0, 0, 0),
]
set_color(255, 255, 255, 1.0)
make_path_relative(image, points10, 3, TRUE)
set_color(0, 0, 0, 1.0)
make_path_relative(image, points10, 2, TRUE)
# 蝶ネクタイ右塗り
set_color(240, 21, 21, 1.0)
points10 = [
(403, 502, 0, 0, 0, 0),
(428, 494, 0, 0, 0, 0),
(424, 505, 0, 0, 0, 0),
(428, 515, 0, 0, 0, 0),
(403, 507, 0, 0, 0, 0),
]
make_path_relative(image, points10, 3, TRUE)
# 蝶ネクタイ右影
set_color(196, 36, 36, 1.0)
points10 = [
(428, 494, 0, 0, 0, 0),
(424, 505, 0, 0, 0, 0),
(428, 515, 0, 0, 0, 0),
(416, 505, 0, 0, 0, 0),
]
make_path_relative(image, points10, 3, TRUE)
# 蝶ネクタイ右線
set_color(0, 0, 0, 1.0)
points10 = [
(403, 502, 0, 0, 0, 0),
(428, 494, 0, 0, 0, 0),
(424, 505, 0, 0, 0, 0),
(428, 515, 0, 0, 0, 0),
(403, 507, 0, 0, 0, 0),
]
make_path_relative(image, points10, 2, TRUE)
# 蝶ネクタイ左塗り
set_color(240, 21, 21, 1.0)
points11 = [
(397, 502, 0, 0, 0, 0),
(372, 494, 0, 0, 0, 0),
(376, 505, 0, 0, 0, 0),
(372, 515, 0, 0, 0, 0),
(397, 507, 0, 0, 0, 0),
]
make_path_relative(image, points11, 3, TRUE)
# 蝶ネクタイ左影
set_color(196, 36, 36, 1.0)
points11 = [
(372, 494, 0, 0, 0, 0),
(376, 505, 0, 0, 0, 0),
(372, 515, 0, 0, 0, 0),
(384, 505, 0, 0, 0, 0),
]
make_path_relative(image, points11, 3, TRUE)
# 蝶ネクタイ左線
set_color(0, 0, 0, 1.0)
points11 = [
(397, 502, 0, 0, 0, 0),
(372, 494, 0, 0, 0, 0),
(376, 505, 0, 0, 0, 0),
(372, 515, 0, 0, 0, 0),
(397, 507, 0, 0, 0, 0),
]
make_path_relative(image, points11, 2, TRUE)
# 蝶ネクタイ結び目影
set_color(196, 36, 36, 1.0)
points10 = [
(408, 504, 0, 0, 0, 0),
(408, 506, 0, 0, 0, 0),
(392, 506, 0, 0, 0, 0),
(392, 504, 0, 0, 0, 0),
]
make_path_relative(image, points10, 3, TRUE)
# 蝶ネクタイ結び目
points10 = [
(404, 500, 0, 0, 0, 0),
(404, 510, 0, 0, 0, 0),
(396, 510, 0, 0, 0, 0),
(396, 500, 0, 0, 0, 0),
]
set_color(240, 21, 21, 1.0)
make_path_relative(image, points10, 3, TRUE)
set_color(0, 0, 0, 1.0)
make_path_relative(image, points10, 2, TRUE)
# バニーガールカフス描画
def draw_bunny_cuffs(image, bunny_cuffs_layer):
pdb.gimp_image_set_active_layer(image, bunny_cuffs_layer)
set_line_width(3)
# カフス右
points10 = [
(506, 791, 0, 0, 0, 0),
(560, 782, 0, 0, 0, 0),
(561, 821, 0, 0, 0, 0),
(518, 828, 0, 0, 0, 0),
]
set_color(255, 255, 255, 1.0)
make_path_relative(image, points10, 3, TRUE)
set_color(0, 0, 0, 1.0)
make_path_relative(image, points10, 2, TRUE)
# カフス左
points10 = [
(294, 791, 0, 0, 0, 0),
(240, 782, 0, 0, 0, 0),
(239, 821, 0, 0, 0, 0),
(282, 828, 0, 0, 0, 0),
]
set_color(255, 255, 255, 1.0)
make_path_relative(image, points10, 3, TRUE)
set_color(0, 0, 0, 1.0)
make_path_relative(image, points10, 2, TRUE)
# メイン
def main():
# ブラシ「1. Pixel」(3x3)を選択。「ブラシで描画」に切り替えることはできないので事前に変更して下さい。
pdb.gimp_context_set_brush("1. Pixel")
set_line_width(6)
set_bg_color(255, 255, 255, 1.0)
image = create_image(800, 1600)
back_layer = add_layer(image, "背景")
auxiliary_line_layer = add_layer_transparent(image, "補助線")
body_layer_group = add_layer_group(image, "体グループ")
back_hair_layer = add_child_layer_transparent(image, body_layer_group, "後髪")
body_layer = add_child_layer_transparent(image, body_layer_group, "体")
bust_layer = add_child_layer_transparent(image, body_layer_group, "胸")
bunny_bow_layer = add_child_layer_transparent(image, body_layer_group, "バニーガール蝶ネクタイ")
face_layer = add_child_layer_transparent(image, body_layer_group, "顔")
eyes_layer = add_child_layer_transparent(image, body_layer_group, "目")
bangs_layer = add_child_layer_transparent(image, body_layer_group, "前髪")
kyusuku_layer_group = add_layer_group(image, "旧スクグループ")
kyusuku_waist_layer = add_child_layer_transparent(image, kyusuku_layer_group, "旧スクウエスト")
kyusuku_bust_layer = add_child_layer_transparent(image, kyusuku_layer_group, "旧スクバスト")
kyosuku_layer_group = add_layer_group(image, "競スクグループ")
kyosuku_waist_layer = add_child_layer_transparent(image, kyosuku_layer_group, "競スクウエスト")
kyosuku_bust_layer = add_child_layer_transparent(image, kyosuku_layer_group, "競スクバスト")
bunny_layer_group = add_layer_group(image, "バニーガールグループ")
bunny_tights_layer = add_child_layer_transparent(image, bunny_layer_group, "バニーガールタイツ", 70)
bunny_waist_layer = add_child_layer_transparent(image, bunny_layer_group, "バニーガールウエスト")
bunny_bust_layer = add_child_layer_transparent(image, bunny_layer_group, "バニーガールバスト")
bunny_cuffs_layer = add_child_layer_transparent(image, bunny_layer_group, "バニーガールカフス")
bunny_ears_layer = add_child_layer_transparent(image, bunny_layer_group, "バニーガール耳")
set_color(0, 0, 0, 1.0)
set_antialias(TRUE)
#
draw_auxiliary_line(image, auxiliary_line_layer)
pdb.gimp_drawable_set_visible(auxiliary_line_layer, FALSE) # 補助線レイヤー非表示
# 髪を描いた後にgimp_fuzzy_select()をすると選択範囲が黒目の線まで広がるので、先に目を描く
draw_eyes(image, eyes_layer)
draw_back_hair(image, back_hair_layer)
draw_body(image, body_layer)
draw_bust(image, bust_layer)
# 胸レイヤーをすぐ下の体レイヤーと統合する
new_body_layer = pdb.gimp_image_merge_down(image, bust_layer, EXPAND_AS_NECESSARY)
# レイヤー統合した後に首の影を描画する
draw_body_after_merge(image, new_body_layer)
draw_face(image, face_layer)
draw_bangs(image, bangs_layer)
draw_kyusuku_waist(image, kyusuku_waist_layer)
draw_kyusuku_bust(image, kyusuku_bust_layer)
pdb.gimp_drawable_set_visible(kyusuku_layer_group, FALSE) # 旧スクグループ非表示
draw_kyosuku_waist(image, kyosuku_waist_layer)
draw_kyosuku_bust(image, kyosuku_bust_layer)
pdb.gimp_drawable_set_visible(kyosuku_layer_group, FALSE) # 競スクグループ非表示
draw_bunny_tights(image, bunny_tights_layer)
draw_bunny_waist(image, bunny_waist_layer)
draw_bunny_bust(image, bunny_bust_layer)
draw_bunny_bow(image, bunny_bow_layer)
draw_bunny_cuffs(image, bunny_cuffs_layer)
draw_bunny_ears(image, bunny_ears_layer)
#
display_image(image)
main()
#5.スクリプト実行方法
「ブラシで描画」を選択してから、5 分で始める GIMP Python-Fu - Qiitaと同じ方法で実行して下さい。スクリプトが長いので、貼り付けるのに数十秒~1分以上時間がかかります。