diff --git a/src/lib/records.ts b/src/lib/records.ts index 95d9bca..3726163 100644 --- a/src/lib/records.ts +++ b/src/lib/records.ts @@ -44,7 +44,7 @@ export type SimTab = { id: string; task: string; place: string; src: string; tit // シリーズのページ(URL → 記事のシリーズ名)。Studio の一覧の絞り込み条件と同じ // intro はシリーズのページの見出しの下に出す説明(ないシリーズは出さない) -export const SERIES_PAGES: Record = { +export const SERIES_PAGES: Record = { series1: { series: '薬剤搬送ロボット', title: 'Drug Delivery Robot | 薬剤搬送ロボットハコブくん', pageTitle: 'Series1 | 薬剤搬送ロボット', limit: 12, intro: '病院で薬を運ぶロボット「ハコブくん」を題材に、人とロボットの関わり(HRI)を設計している記録です。病院で使う画面(UI)の設計、Unity での自律移動、Fusion での形づくり、分身ロボット(アバター)の考察までを、4コママンガと一緒に残しています。' }, series2: { series: 'R2R2R', title: 'R2R2R | デジタルツイン学習-R2R2R(Real to Render to Real)', pageTitle: 'Series2 | R2R2R', limit: 12, @@ -63,7 +63,7 @@ export const SERIES_PAGES: Record + {conf.scenes && }

記録 | Record

{items.map((c) => )} diff --git a/tools/sim_thumbs/make.py b/tools/sim_thumbs/make.py index c917683..524a0ae 100644 --- a/tools/sim_thumbs/make.py +++ b/tools/sim_thumbs/make.py @@ -169,8 +169,22 @@ def stills_split(n, a, b, r=0.5, bg=LIGHT): save(c, n) +def stills_cols(n, ss, bg=LIGHT): + """場面の寄り(LOG503〜):Unity で撮った寄りの静止画を、縦の列に並べる。ss は (素材名, fx, fy, z) の並び。z は元の幅に対する切り出し幅の割合""" + c = canvas(bg); k = len(ss); w = (W - G * (k - 1)) // k + for i, (name, fx, fy, z) in enumerate(ss): + img = np.array(Image.open(D + name + '.jpg').convert('RGB')) + h0, w0 = img.shape[:2]; cw = int(w0 * z); ch = int(cw * H / w) + if ch > h0: ch = h0; cw = int(ch * w / H) + sx = max(0, min(w0 - cw, int(w0 * fx - cw / 2))); sy = max(0, min(h0 - ch, int(h0 * fy - ch / 2))) + x = i * (w + G); ww = w if i < k - 1 else W - x + put(c, cv2.resize(img[sy:sy + ch, sx:sx + cw], (ww, H), interpolation=cv2.INTER_AREA if cw > ww else cv2.INTER_CUBIC), x, 0) + save(c, n) + + # ---- 各回(素材名, 店の範囲の中の中心 x, y, 切り出し幅の割合) JOBS = { + 503: lambda n: stills_cols(n, [('closeup503_glance', .5, .55, .36), ('closeup503_stumble', .47, .5, .42), ('closeup503_smile', .5, .5, .5)]), # 廊下ですれ違う場面を作った回(依頼175)。左=ちらっとハコブくんを見る看護師(顔の寄り)、中=よろける看護師と手前で止まるハコブくん(本番のカメラ)、右=画面がにっこりするハコブくん(画面の寄り) 499: lambda n: stills_split(n, ('closeup499_card_side', .52, .40, .50), ('closeup499_take_side', .60, .45, .45), r=.5), # 受け渡しの場面を直した回(依頼171)。左=ハコブくんの画面にカードをかざす看護師(横から)、右=開いた引き出しに上から手を入れて取る所(横から) 496: lambda n: still(n, 'closeup496_drawer', .47, .5, .9), # ハコブくんと看護師の3Dを作った回。Blender で描いた、引き出しの前でかがむ看護師(LOG496 の scene_render.py。Unity の絵ではない) 491: lambda n: split(n, ('h157_n_clean', .42, .42, .6), ('h157_w_west_10', .45, .42, .47), r=.56), # 職員の動きを持ち場ごとの型に替えた回(依頼157)。左=7時37分の外来の大廊下の清掃(清掃の人とカート)、右=10時ごろの引き(西半分。職員が持ち場にいる)