本ページはプロモーションが含まれています

ギャラリー

雲海の絶景をCanvasで描く|夜明けから星空まで

CATEGORY
REV.
DRAWN BY
TOM
SHEETS
2枚
Sea of Clouds(夜明けから星空までの雲海)

トム

SESで約8年、環境を変えられないもどかしさの中にいました。32歳で自社開発企業に転職し、今はClaude Codeと自動化で、仕事も時間も組み直している途中です。
・Javaバックエンドエンジニア(Java歴12年以上)
・資格:基本情報技術者/応用情報技術者/Java Silver/Python3エンジニア認定基礎
詳細なプロフィール

𝕏

一度だけ、夜明け前の山に登って雲海を見たことがあります。

寒くて眠くて、正直あと5分寝ていたかった。

それでも、白い海の向こうから光が差した瞬間のことは、10年たっても忘れていません。

あの景色を、画像も写真も使わず、HTML・CSS・JavaScriptのCanvasだけで描きました。

「ご来光」を押すと、20秒かけて日が昇ります。

時刻を動かすと、夜明けから星空まで移り変わります。

絶景の眺め方

ボタンは画面の下にまとめてあります。

このページ自体も空の色になっていて、本文は雲の上に浮かんでいます。

  • ご来光:夜明け前から始まり、稜線の向こうから太陽がせり上がります。光条が放射状に伸び、空が一気に明けます
  • 時刻:スライダーで夜明け→朝→夕焼け→星空と移り変わります。右下に今の時刻が出ます
  • 雲海:雲の量を変えられます。少なくすれば谷底まで見え、多くすれば峰だけが島のように残ります
  • 鳥の群れ:13羽がV字の編隊で渡っていきます
  • ドラッグ:手前の稜線ほど大きく動いて、展望台から首を振ったように見渡せます
  • 風の音:高いところの風が鳴り、明るいあいだはときどき小鳥の声が混ざります
  • 星空:星がまたたき、ときどき流れ星が走ります
  • 全画面:PCならモニターいっぱいに雲海が広がります
昼間、太陽を背にしたときだけ、雲海に虹色の輪が浮かびます。

ブロッケン現象と呼ばれるもので、輪の中心には自分の影が映ります。

実際の山でも、条件がそろった時にだけ見られる現象です。

この絶景のつくり

見た目重視で作ったので、しくみは簡単なメモだけにしておきます。

外部ライブラリは使っていません。

見えているものしくみ
空夜明け・朝・夕焼け・星空の4つの配色を決めておき、スライダーの位置で隣どうしを混ぜています
遠くの峰三角形を並べ、頂きにだけ雪の形を白く重ねています。空の霞の色に7割寄せて遠さを出しています
稜線周期の違うsinを5つ重ねて尾根の形を作り、5列を手前へ向かって低く大きく並べています
雲海小さな円を60個重ねた雲を3種類つくり、稜線と稜線のあいだに浮かべています。スライダーは、この雲の濃さを変えています
ご来光太陽の位置を稜線の高さから持ち上げながら、時刻も夜明けから朝へ進めます。光条は16本の細い三角形です
ブロッケン現象太陽と反対側の雲海に、4色の輪と観測者の影を重ねています。昼で、太陽が画面の中ほどにあるときだけ出ます
鳥の群れ1羽ずつ位置をずらしてV字に並べ、羽ばたきの位相も変えています
朝夕の光の筋太陽が低いときだけ、screen合成で光の帯を重ねています
風の音Web Audio APIのブラウンノイズをローパスに通し、突風に合わせて音量と明るさを変えています
ページ全体背景が空のグラデーションになり、雲がゆっくり横切ります。本文は半透明の白い板として、その上に浮かびます

いちばん手こずったのは雲の量でした。

最初は雲を厚く敷きすぎて、山が全部隠れた「ただの白い霧」になりました。

雲を減らして稜線と稜線のあいだにだけ置き、さらに量をスライダーで選べるようにして、ようやく落ち着きました。

  • 画面の外にあるときは描画を止めています
  • OSで「動きを減らす」設定をオンにしている人には、止まった状態で表示します
  • 手元の環境では60fpsで動いています
NEXT READ本棚から1本

AIで開発を組み直すなら、まずこの5冊から

入門・実践・設計まで、Claude Codeの本をレベル別に5冊選んで比べました。

→ おすすめ5冊を見る

  • この記事を書いた人
  • 最新記事

トム

SESで約8年、環境を変えられないもどかしさの中にいました。32歳で自社開発企業に転職し、今はClaude Codeと自動化で、仕事も時間も組み直している途中です。
・Javaバックエンドエンジニア(Java歴12年以上)
・資格:基本情報技術者/応用情報技術者/Java Silver/Python3エンジニア認定基礎
詳細なプロフィール

𝕏

ギャラリー