==================================================================== 依頼87:固めた版(cs:76)で、サイトに載せる動画をパネル付きの形で撮り直す 2026-11-04 00:20〜03:15 作業場所 cs:76(保留 0) build_id cs76_20261103_2122(作り直していない) ==================================================================== 結論 ・6 店(③⑦④⑤⑥②)とも最後まで回り、全員帰った。瞬間移動 0・1コマの跳び 0・上限で止まった回 0。実時間 42.8〜55.2 分 ・6 店とも focus_v1(問題に寄る動画)と panel_v1(パネル付きの通し 1 本・寄り 7 部品+つないだもの 1 本・真ん中のコマの png)ができた パネル付きの mp4 は 54 本。すべて 1920x1080・30fps であることを確かめた ・出力は足していない(cs:76 の回はもう timeline.csv と frames.csv を出していた) ・台帳 2675 → 2681 行(追記 6 行だけ。先頭 2675 行の md5 は退避と同じ) ・決めてほしいことが 3 つある(字幕の切れ・時刻の書き方・録画した回と録画なしの回の数字の違い)。最後に書く -------------------------------------------------------------------- 0. 始める前の確かめ(どれも合格) -------------------------------------------------------------------- 1. cm status:/main@ServiceSim (cs:76 - head)、保留 0。 Builds/headless の build_info.json:unity_cs ServiceSim/cs:76・pending_changes 空 録画用の cs:76 の実行ファイルは無かった(今ある録画用は rec17_push70=cs:70 まで)。 録画用は「-nographics を外して起こすだけ」の同じ普通の player なので(BuildHeadless.cs)、 Builds/headless をそのまま Builds/rec18_base76 に写して使った(作り直していない。実行ファイルの md5 は同じ a56c2b4ef206f556404e14d873ace1b6。 Assembly-CSharp.dll に -ssRecord・-ssRecCam・-ssRecHidePaths・-ssMaxWallMin が入っていることを確かめた) 2. Unity エディタ・night_runner・rec_runner:動いていない(Unity Hub だけ)/KIOXIA:マウント済み/unity_ledger_v1.lock:無し 台帳を archive/unity_ledger_v1_prerec87_20261104/unity_ledger_v1.csv に退避:2675 行・md5 928e7e5825fee8571769722d6048faf3 3. python3(miniforge)・numpy 2.4.4・Pillow 12.2.0・ffmpeg/ffprobe(miniforge の ros_env を PATH に足した) Noto Sans CJK JP は Mac に無かった(Noto Sans JP だけ)ので、Homebrew の font-noto-sans-cjk-jp を入れた(~/Library/Fonts/NotoSansCJKjp-*.otf) -------------------------------------------------------------------- 1. 撮ったもの -------------------------------------------------------------------- 記録:night/20261104_rec87/(queue.json・rec_runner.py・runner_log.txt・runs.csv・judge.md・logs・post.py・watch_post.sh・post_log.txt・ panel87.py・panel_log.txt・report87.py・report87_out.txt・camdist.py・make_panel_video_orig.py) 並べた回:base73(依頼86・86b の 180 回)の並びから同じ回を写した(すれ違い入・案B切・待機場所へ戻る入・入口番入・持ち場入・ 一方通行切・1本道切・立ち往生の助け入・上げ膳・1往復3卓・レジ1つ・普通・真ん中の人数・ロボット2台) rec_runner.py:night/20261103_rec_focus2/rec_runner.py(依頼75)の写し。説明に依頼87 の 3 行を足しただけ 回し方:--oblique --hide-paths --max-wall-min 80 --parallel 2 --no-retry --limit-min 120 --build Builds/rec18_base76 カメラ:wide_l30・wide_r30(方位 ±30°・見下ろし 60°・画角 40°・3840×2160)・0.5 秒ごと・30 コマ/秒・回の最初から終わりまで・カメラの行列も 店ごとの注視点と距離は camdist.py で計算し直し、依頼71・75 と同じ値を確かめた (③⑦ (12,8) 39.4 m・④ (8.5,6) 29.2 m・⑤ (13,8.5) 42.2 m・⑥ (12,8.5) 40.7 m・② (12,9.6) 43.5 m) 置き場所:rec_focus_20261104/{店}/(録画 mp4・frames.csv・camera.json の写し、t=1000 秒のコマ、focus_v1/、panel_v1/) 回のフォルダ:20261104_rec87_cs76_{店}_r2_s{種}_passon_sbret_ek_post_rescue/ 前の分(rec_focus_20261103 など)は消していない・上書きしていない -------------------------------------------------------------------- 2. 店ごと -------------------------------------------------------------------- (時刻は店の時刻・開店から。問題は focus_clips.py と同じまとめ方:30 秒以上の止まりか動けなくなった止まりを、1.5 m・120 秒以内でまとめたもの) ③ fam_p1 種7 題「③ 標準ファミレス・ロボット2台」 最後まで回った(completed)・全員帰った(11,880 秒)・実時間 50.0 分・瞬間移動 0 問題1 (10.6, 4.2) 2時間14分〜2時間20分 止まった合計 256 秒(5 回) お客さんとすれ違えなかった 問題2 (16.5, 5.9) 43分〜46分 止まった合計 159 秒(2 回) ロボットどうしが道をふさぎ合った 問題3 (9.6, 4.2) 1時間08分〜1時間10分 止まった合計 120 秒(2 回) お客さんとすれ違えなかった 動画:whole_wide_l30_panel.mp4 76.2 秒(10.5 倍)・focus_trial_panel.mp4 68.9 秒 ⑦ fam_p5 種7 題「⑦ 効率重視・席を詰めた店・ロボット2台」 最後まで回った・全員帰った(11,737 秒)・実時間 49.8 分・瞬間移動 0 問題1 (5.8, 4.1) 1時間20分〜1時間25分 213 秒(4 回) 人が立ち止まっていた 問題2 (8.8, 4.3) 1時間13分〜1時間15分 153 秒(2 回) ロボットどうしが道をふさぎ合った 問題3 (1.6, 6.1) 1時間58分〜2時間00分 120 秒(2 回) お客さんとすれ違えなかった 動画:whole_wide_l30_panel.mp4 75.5 秒(10.5 倍)・focus_trial_panel.mp4 68.6 秒 ④ fam_p2 種1 題「④ 効率重視・小さめの店・ロボット2台」 最後まで回った・全員帰った(12,458 秒)・実時間 55.2 分・瞬間移動 0(依頼75 では 80 分で止まった店) 問題1 (9.0, 9.0) 2時間03分〜2時間09分 297 秒(5 回) スタッフとすれ違えなかった 問題2 (2.1, 4.2) 1時間38分〜1時間43分 292 秒(5 回) ロボットどうしが道をふさぎ合った 問題3 (2.2, 2.6) 31分〜33分 194 秒(4 回) スタッフとすれ違えなかった 動画:whole_wide_l30_panel.mp4 76.4 秒(11 倍)・focus_trial_panel.mp4 68.9 秒 ⑤ fam_p3 種1 題「⑤ ゆったり・入口が正面・ロボット2台」 最後まで回った・全員帰った(11,684 秒)・実時間 52.4 分・瞬間移動 0(依頼75 では止まった店) 問題1 (8.2, 2.6) 1時間13分〜1時間16分 323 秒(6 回) ロボットどうしが道をふさぎ合った 問題2 (4.5, 2.6) 1時間04分〜1時間07分 180 秒(3 回) ロボットどうしが道をふさぎ合った 問題3 (14.3, 8.9) 2時間45分〜2時間46分 60 秒(1 回) ロボットどうしが道をふさぎ合った 動画:whole_wide_l30_panel.mp4 75.3 秒(10.5 倍)・focus_trial_panel.mp4 61.7 秒 ⑥ fam_p4 種1 題「⑥ ゆったり・入口が横・ロボット2台」 最後まで回った・全員帰った(10,428 秒)・実時間 45.0 分・瞬間移動 0 問題1 (7.6, 4.9) 2時間10分〜2時間13分 120 秒(2 回) お客さんとすれ違えなかった 問題2 (6.5, 5.1) 1時間32分〜1時間34分 108 秒(2 回) スタッフとすれ違えなかった 問題3 (2.2, 11.6) 1時間18分〜1時間19分 60 秒(1 回) お客さんとすれ違えなかった 動画:whole_wide_l30_panel.mp4 74.5 秒(9.5 倍)・focus_trial_panel.mp4 60.9 秒 ② fam_p0 種8 題「② 定番の郊外型・ロボット2台」 最後まで回った・全員帰った(10,137 秒)・実時間 42.8 分・瞬間移動 0 問題1 (9.0, 5.3) 1時間41分〜1時間42分 117 秒(2 回) ロボットどうしが道をふさぎ合った 問題2 (8.7, 8.1) 1時間10分〜1時間11分 116 秒(2 回) ロボットどうしが道をふさぎ合った 問題3 (13.0, 4.9) 42分〜45分 106 秒(2 回) お客さんとすれ違えなかった 動画:whole_wide_l30_panel.mp4 76.1 秒(9 倍)・focus_trial_panel.mp4 55.6 秒 6 店とも解けずに残った詰まり 0。judge.md:回の失敗 0・基準なし 6(基準データに同じ入切の回が無いため) 部品ごとの長さと時刻の範囲は {店}/panel_v1/panel_log.txt と night/20261104_rec87/report87_out.txt にある -------------------------------------------------------------------- 3. 動画の作り方 -------------------------------------------------------------------- focus_v1:focus_clips.py(iCloud の unity/focus_clips/ から /tmp/rec87/fc/ に写した。md5 a7e1829a2479477b37779221f74235ce・中身は変えていない)を 依頼75 と同じ post.py(置き場所だけ変えた写し)で回した。字は依頼75 と同じヒラギノ(FOCUS_FONT) panel_v1:make_panel_video.py を panel87.py から呼んだ(形はそのまま) ・通し:wide_l30 の録画の最初(開店 0 秒)から最後(全員が帰るまで)。速さは 0.5 刻みで 75 秒にいちばん近く、60〜90 秒に入るものを選んだ ・寄り:focus_v1 の部品(p00_open・p01a_wide・p01b_focus …)ごとに、focus_clips.py と同じ計算で部品のコマと店の時刻を出して 部品ごとの frames.csv を作り、同じ時刻の範囲(--from/--to)でパネルを付けた。部品のコマ数が計算と合うことを確かめてから作った 寄り(pNNb_focus)は focus_clips.py が 0.5 倍にしている(1コマを 2 回ずつ出す)ので、偶数コマだけを抜いた素材を --speed 0.5 で渡した (見た目の速さは元の寄りと同じ。パネルの店の時刻も合う) ・focus_trial_panel.mp4:部品のパネル付きを focus_trial.mp4 と同じ順につないだもの(ffmpeg concat・作り直しなし) ・png:通しの動画の真ん中のコマ(whole_wide_l30_panel_mid.png) ・1920x1080・30fps は panel87.py の中で ffprobe で確かめた(make_panel_video.py 自体には確かめる所が無かった) make_panel_video.py の直し(字の場所だけ。status_videos/tools/。元は night/20261104_rec87/make_panel_video_orig.py に残した) md5 99fa57d12accdbe72bc19f35ecf050bd → ad26939a858ffa57ca3085ecc33806d8 差分: < FONT = "/usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc" < FONTB = "/usr/share/fonts/opentype/noto/NotoSansCJK-Bold.ttc" --- > import os > # 字は Noto Sans CJK JP。Linux の場所が無ければ Mac(Homebrew の font-noto-sans-cjk-jp)の場所(2026-11-04・依頼87) > _MAC = os.path.expanduser("~/Library/Fonts") > FONT = next((f for f in ("/usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc", _MAC + "/NotoSansCJKjp-Regular.otf") if os.path.exists(f)), None) > FONTB = next((f for f in ("/usr/share/fonts/opentype/noto/NotoSansCJK-Bold.ttc", _MAC + "/NotoSansCJKjp-Bold.otf") if os.path.exists(f)), None) Linux の場所を先に見るので、Linux では今までと同じに動く。形・色・大きさは変えていない 題の店の名前:③ は依頼文の「標準ファミレス」。ほかは LOG415 の名前(② 定番の郊外型・④ 効率重視・小さめの店・⑤ ゆったり・入口が正面・ ⑥ ゆったり・入口が横・⑦ 効率重視・席を詰めた店)。LOG415 では ③ は「効率重視・入口が角」 -------------------------------------------------------------------- 4. 出力を足したか -------------------------------------------------------------------- 足していない。cs:76 の回はもう timeline.csv(60 秒ごと)と、録画のカメラごとの frames.csv を出していた。cs は上げていない -------------------------------------------------------------------- 5. 台帳 -------------------------------------------------------------------- 2675 行 → 2681 行(追記 6 行だけ。どれも completed・unity_cs ServiceSim/cs:76) 始める前の md5:928e7e5825fee8571769722d6048faf3(退避と同じ) 終わったあとの md5:c25f3f880430ef92cb70dc2d141aa803 終わったあとの先頭 2675 行の md5:928e7e5825fee8571769722d6048faf3(前の行は変わっていない)。鍵ファイルは残っていない -------------------------------------------------------------------- 6. 気づいたこと(記録だけ) -------------------------------------------------------------------- ・録画した回は、同じ種の録画なしの回(base73・cs:76)と記録が一致しない。6 店とも trips・stops・timeline・groups・dishes・rescues が違う。 ③ 種7 では 860 秒ごろの往復から分かれ、全員が帰った時刻 11,880 秒(録画なし 11,805 秒)・入店待ちの平均 3.06 分(同 3.03 分)・ 往復 129 回(同 118 回)。録画の回どうしの同じ種は比べていない(録画は同じ店を 1 回ずつ) 動画のパネルは録画と同じ回の timeline.csv を使っているので、動画の中の映像と数字は合っている ・make_panel_video.py は時刻を「開店から 1:39」と書く。PANEL_VIDEO_FORMAT.md の決まりは「1時間39分」と書き、「1:54」とは書かない ・focus_v1 の動画に make_panel_video.py でパネルを付けると、1280×720 の部品を高さ 1080 に広げてから真ん中の 1360 px を切り出すので、 focus_clips.py が左上に書いた字幕(「寄り:ロボットどうしが…」・店の時刻・止まった合計)の左がおよそ 280 px 切れ、 その上に色の説明(お客さん/スタッフ/ロボット)が重なる。寄りの映像(問題の場所の輪)は真ん中なので切れていない ==================================================================== 変えたファイル・作ったもの ==================================================================== 直した:status_videos/tools/make_panel_video.py(字の場所だけ。上の差分) 入れた:Homebrew の font-noto-sans-cjk-jp 写した:Builds/rec18_base76(Builds/headless=cs:76 の写し) 新しく置いた:night/20261104_rec87/(上の 1 章)・rec_focus_20261104/(6 店)・20261104_rec87_cs76_*(6 回の出力)・ archive/unity_ledger_v1_prerec87_20261104/ 台帳:追記 6 行 /tmp に残したもの:/tmp/rec87/(queue の写し・focus_clips.py の写し・前回の録画で作り方を試した動画 test・testrec) 変えていない:Unity のコード・実行ファイルの中身・focus_clips.py・night_runner.py・make_queue.py・judge_night.py・前の録画と出力 ==================================================================== 決めてほしいこと ==================================================================== 1. 問題に寄る動画(panel_v1/focus_trial_panel.mp4 と部品)で、字幕の左が切れ、色の説明と重なる(6 章)。 サイトに出す前に、どちらを変えるか(focus_clips.py の字幕の位置か、make_panel_video.py の寄りの部品の広げ方か、 寄りはパネル付きにしないか)を決めてほしい。どちらも今回は「変えない」なのでそのまま作った 2. 時刻の書き方:make_panel_video.py は「開店から 1:39」、PANEL_VIDEO_FORMAT.md は「1時間39分」。どちらに合わせるか (スクリプトを直すなら hm() の 1 行で、作り直しは 1 店 5〜6 分) 3. 録画した回は、同じ種の録画なしの回と数字が一致しない(6 章)。サイトの動画の数字(パネル)と台帳の 180 回の数字が少し違うことを そのままにしてよいか 判定:止めた(決めてほしいことあり)