Skip to content

feat: 物語モード + 不老シナリオ + 機械の光 + シネマティック描画 + 昼と夜 + 衛星#8

Draft
orangewk wants to merge 6 commits into
mainfrom
claude/fable5-creative-followup-ex872b
Draft

feat: 物語モード + 不老シナリオ + 機械の光 + シネマティック描画 + 昼と夜 + 衛星#8
orangewk wants to merge 6 commits into
mainfrom
claude/fable5-creative-followup-ex872b

Conversation

@orangewk

@orangewk orangewk commented Jul 6, 2026

Copy link
Copy Markdown
Owner

概要

「自由な発想でフォローアップを」というお題から始まった PR です。4つのコミットで6つの体験を追加します。

  1. 物語モード — 人類1万2千年を語るガイド付きツアー(8章 + 終章 + 最終章)
  2. 不老 (Ageless) シナリオ — 4つ目の未来シナリオ。「死が消えた世界」の思考実験
  3. 機械の光レイヤー — 人間ではない光が地図に加わる想像レイヤー
  4. シネマティック描画 — HDR ブルーム、大気の「薄い青い線」、プロシージャル星空
  5. 昼と夜モード — ターミネーター。人の灯は影の中でのみ見える
  6. 衛星レイヤー (1957〜) — 地面を離れた最初の人類の光(史実)

物語モード

✦ ボタン(または S キー)で開始。各章でタイムラインが該当年へジャンプし、カメラがその章の舞台へ飛行して、日英のナレーションカードが表示されます。

# カメラの舞台
1 紀元前10000年 最初の火 肥沃な三日月地帯
2 紀元前3000年 最初の都市 メソポタミア
3 紀元元年 帝国の時代 ローマ〜漢を俯瞰
4 1400年 大いなる死 ヨーロッパ
5 1800年 機械の時代 イギリス
6 1950年 大加速 広域ビュー
7 2023年 波の頂 南・東アジア
8 2100年 開かれた結末 地球全体(シナリオ連動)
9 2100年 終章: 凍った光 北大西洋(アイスランド)
10 2100年 ペイル・ブルー・ドット 深宇宙へのプルバック

第4章はデータ上で実際に人口が減少している瞬間(1300→1400年、黒死病)を選択。終章は不老シナリオと機械の光を自動有効化。最終章は6秒かけてカメラが引き、地球が星々のあいだの一粒の光になります(終了時は自動帰還)。

不老 (Ageless) シナリオ

2030年以降、老化が年4%減速し、死亡率が事故のみの床(0.05%/年 ≈ 実効寿命2000年)へ指数減衰。

  • 本モデルは birthRate ∝ deathRate のため、死が消えると出生も薄れる。人口は爆発せず高い水準で凍結(2100年 約79億人。Linear 48億 / Stable 96億 との対比)
  • 演出: 未来のドットの揺らぎが2070年までにゼロへ —「凍った光」。年齢色レイヤーも連動して全球が青紫へ

機械の光レイヤー

表示トグル。凡例「● = 1 GW」。2025年約60GWから12年倍増。配置は人口ではなくエネルギーと冷却(アイスランド、サハラ、ゴビ等33サイト)。シアン・揺らがない光として人間の暖色と対比。

シネマティック描画

  • HDR ブルーム + ACES — UnrealBloomPass(閾値0.4)+ OutputPass。輝度が1を超える光源だけが滲む
  • 大気の「薄い青い線」 — 視線の衝突径数を解くシェルシェーダー。シアンのナイフエッジ → 青 → 菫
  • プロシージャル星空 — 星8,400 + 天の川 + 拡散ヘイズ、瞬き付き。外部CDN依存ゼロ
  • 背景を純黒へ(ブルーム追加による出力変換経路の変化で旧デフォルト #000011 が藍色に浮く問題も解消)

昼と夜モード (C キー、デフォルトoff)

固定太陽によるターミネーター。昼面は blue_marble_day.jpg、夜面は夜景、境界に夜明け/黄昏の暖色帯。人の灯と機械の光は昼面でフェードアウト——人の灯は影の中でしか見えない、という作品の主題をそのまま描画にしました。カメラの自動回転が昼夜を横断する演出になります。

衛星レイヤー (史実、デフォルトon)

1957年、スプートニクとともに初めて人類の光が地面を離れます。低軌道殻(高度+6〜12%)をゆっくり周回するドット群。1957年2基 → 2025年約1.1万基(実数近似)→ 2100年6万基(外挿)。固定シード+drawRange方式で、年を進めると衛星は再配置されず「増える」。凡例「● = 衛星n基」は自動スケール。

その他の修正

  • 将来年の世界人口ラベルを表示(従来2024年以降は空欄)
  • バグ修正: .speed-btn:not(.scenario-btn) セレクタが表示トグルにも速度ハンドラを付け、speed = NaN で再生が壊れる既存バグを [data-speed] 限定で修正
  • リサイズ時にプルバック中のカメラを引き戻さないようガード

検証

Playwright + ローカルバンドル(この実行環境では esm.sh が egress ポリシーで遮断されるため、three / globe.gl / ポストプロセスを単一 three インスタンスの結合バンドルにしてルート差し替え)で E2E 検証済み:

  • 物語モード全10章、4通りの終了経路、プルバックと帰還
  • 2100年人口: Linear 48.1億 / Stable 95.6億 / Ageless 79.1億(ほぼ凍結)
  • 昼と夜: ターミネーター描画と夜面限定の灯りをスクリーンショット確認
  • 衛星: 1971年・2025年で凡例「衛星1基」、1957年前は非表示
  • 宇宙が純黒(ピクセル実測)、コンソールエラーなし、表示トグル後の再生継続

🤖 Generated with Claude Code

https://claude.ai/code/session_01FyQi56Xny5G7XxLsGD5QT3

claude added 2 commits July 6, 2026 00:05
✦ボタン / Sキーで開始。各章でタイムラインが該当年へ移動し、
カメラがその舞台(肥沃な三日月地帯〜2100年の地球)へ飛行、
日英のナレーションカードを表示する。

- 8章: 最初の火 / 最初の都市 / 帝国 / 大いなる死 / 機械の時代 /
  大加速 / 波の頂 / 開かれた結末
- 最終章は選択中の出生率シナリオに連動して結末が変わる
- ← → / Space で章送り、Esc で終了、スライダー操作で自動解除
- 物語中は自動回転を停止し、終了時に元の状態へ復元
- モバイル: カード縮小 + カメラ高度を +1.2 補正

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FyQi56Xny5G7XxLsGD5QT3
不老 (Ageless) シナリオ:
- 2030年以降、老化が年4%減速し、死亡率が事故のみの床
  (0.05%/年 ≈ 実効寿命2000年) へ指数減衰
- 本モデルでは出生∝死亡のため、死が消えると出生も薄れ、
  人口は爆発せず高い水準で凍結する (2100年 ~79億人)
- 演出: 未来のドットの揺らぎが2070年までに止まる「凍った光」
- 年齢色レイヤーも連動し、高齢化で全球が青紫へ沈む

機械の光レイヤー (表示トグル):
- 1ドット = 1GW (想像)。2025年約60GW から12年倍増
- 配置は人口ではなくエネルギー+冷却 (33サイト: アイスランド、
  北欧、ケベック、サハラ、アタカマ、ゴビ、ピルバラ等)
- サイト固定シードで年を進めると光が増える (再配置されない)
- シアン・揺らがない光として人間の暖色と対比

物語モード終章「凍った光」(9/9):
- カメラは北大西洋へ。不老シナリオ + 機械の光を自動で有効化

その他:
- 将来年の世界人口ラベルを表示 (従来は2023年以降空欄)
- fix: .speed-btn セレクタが表示トグルにも速度ハンドラを
  付与し speed=NaN で再生が壊れるバグを data-speed 限定で修正

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FyQi56Xny5G7XxLsGD5QT3
@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Jul 6, 2026

Copy link
Copy Markdown

Deploying humansofearth with  Cloudflare Pages  Cloudflare Pages

Latest commit: 416aa0c
Status: ✅  Deploy successful!
Preview URL: https://5387b75a.humansofearth.pages.dev
Branch Preview URL: https://claude-fable5-creative-follo.humansofearth.pages.dev

View logs

@orangewk orangewk changed the title feat: 物語モード — 人類1万2千年を8章で語るガイド付きツアー feat: 物語モード + 不老シナリオ + 機械の光 — 人類1万2千年を語り、ふたつの未来を灯す Jul 6, 2026
美麗化 Phase 1。すべて光の物理からの借用で、装飾は足していない。

描画パイプライン:
- UnrealBloomPass (strength 0.55 / radius 0.2 / threshold 0.4)
  + ACES トーンマッピング + OutputPass の正規構成
- 閾値 0.4 で加算合成のドット(輝度>1)だけが滲み、
  地球テクスチャと大気は滲まない
- 背景色を #000011 → 純黒へ(宇宙は黒、空は星が担う)

大気「薄い青い線」:
- globe.gl 標準の一様グローを廃止し、視線の衝突径数 b を
  フラグメントで計算するシェルシェーダーに置換
- 地表シルエットでシアンのナイフエッジ → 青 → 菫の指数減衰、
  円盤縁には薄いヘイズ

プロシージャル星空:
- 一様星 3,200 + 天の川バンド 5,200 + 拡散ヘイズ 700
- 固定シードで決定的、微細な瞬き、固定ピクセルサイズシェーダー
- jsdelivr の夜空テクスチャ依存を排除(外部CDN依存ゼロに)

物語モード最終章「ペイル・ブルー・ドット」(10/10):
- 6秒かけて altitude 58 までプルバック、地球が星々のあいだの
  一粒の光になる。物語終了時はカメラが自動帰還
- リサイズ時にプルバック中のカメラを引き戻さないようガード

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FyQi56Xny5G7XxLsGD5QT3
@orangewk orangewk changed the title feat: 物語モード + 不老シナリオ + 機械の光 — 人類1万2千年を語り、ふたつの未来を灯す feat: 物語モード + 不老シナリオ + 機械の光 + シネマティック描画 Jul 6, 2026
昼と夜 (Cinema) モード — Cキー / 表示トグル、デフォルトoff:
- 固定太陽 (カリブ海上空正午) によるターミネーター描画。
  globeMaterial をカスタムシェーダーに差し替え、昼は
  blue_marble_day.jpg、夜は夜景ベース、境界に暖色の帯
- ドット頂点シェーダーに uSunDir/uDayFade を追加し、
  人の灯と機械の光は昼面でフェードアウト
  ——人の灯は影の中でしか見えない

衛星レイヤー (史実、デフォルトon):
- 1957年スプートニク2基 → 2025年約1.1万基 (実数の近似) →
  2100年6万基 (外挿) をアンカー補間
- 低軌道殻 (高度+6〜12%、傾斜65度以内) に固定シードで
  SAT_MAX=12,000 スロットを事前配置、年は drawRange のみ
  変更するため衛星は再配置されず「増える」
- 殻全体が約3.5分/周でゆっくり周回
- 凡例「● = 衛星n基」は 1.2万ドット超で自動スケール
- 1957年より前はトグルをグレーアウト

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FyQi56Xny5G7XxLsGD5QT3
@orangewk orangewk changed the title feat: 物語モード + 不老シナリオ + 機械の光 + シネマティック描画 feat: 物語モード + 不老シナリオ + 機械の光 + シネマティック描画 + 昼と夜 + 衛星 Jul 6, 2026
claude added 2 commits July 7, 2026 11:51
バグ: モデルデータのない国が自然増ステップでスキップされると
surplus が undefined のまま残り、undefined * 0.03 = NaN が
「NaN < 1 = false」でガードを素通りして全移民先に分配されていた。
翌年 NaN 人口は falsy としてスキップされ 0 に崩壊。結果、
移民 ON で世界人口が 74.8億 → 4.0億に消滅し、アークも消えていた
(座標データのない国=移民先にならない国だけが生き残る)。

修正:
- 自然増ステップ: スキップ国も naturalPop = pop || 0,
  surplus = 0 で必ず通過させる
- 移出ガード: emig = (surplus || 0) * rate + isFinite チェック
- 移入適用: (naturalPop || 0) + (immigrants || 0)
- getTopFlows にも同等の isFinite ガード

性能: computeAllFuturePop がフレーム毎に2024年から全再計算
していた (~494ms/step)。ループ内で各中間年を浅いコピーで
キャッシュし、次回は最寄りのキャッシュ年から再開 → O(1年)。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FyQi56Xny5G7XxLsGD5QT3
世界人口崩壊の NaN バグ自体は修正済みだが、検証で第2の問題が判明:
フローモデルの送出条件が「自然増の余剰がある国」のみのため、
linear シナリオでは 2030-2050 年でアーク0本、以降もほぼ
ウズベキスタン1国発に collapse し、移民の絵として成立していない。

- #migration-btn を display:none で非表示(クリック不可に)
- showMigration は false 固定のままなのでアークは描画されない
- エンジンコード(重力モデル/computeAllFuturePop/getTopFlows)は
  そのまま残置。display:none を外せば復活可能
- README の機能一覧から移民フローを削除(データソース行は残置)
- IDEAS.md に非公表の経緯と再公表の条件を記録

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FyQi56Xny5G7XxLsGD5QT3
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants