本システムは、Three.js と OffscreenCanvas を活用し、動的に生成されるカレンダーUIを3D空間に表示するコンポーネント「CalendarDisplay」を提供します。主要な機能としては、複数のテーマによるデザイン切替、現在年月に基づくカレンダーHTMLの自動生成、SVG テンプレートによるレンダリング、そしてインタラクティブなクリック操作によるユーザー操作が含まれます。
CalendarDisplay クラスは、以下の主要要素から構成されます。
// CalendarDisplay クラスのコンストラクタ
constructor(width = 1920, height = 1080)
// カレンダー表示用 HTML テーブルの生成
_generateCalendarHTML()
// 現在年月のデータ取得
_getCurrentCalendarData()
// SVG テンプレートの生成 (SVG_TEMPLATE を利用)
_generateRawSVG()
// Canvas に対するカレンダー更新処理
_updateCalendar()
// アニメーションループによる更新 (_animate)
_animate()
// コンポーネントの開始処理 (start)
start(camera, domElement)
// THREE.js Mesh の作成
_createMesh()
// Mesh の取得 (getMesh)
getMesh()
// 更新処理 (update)
update()
// ユーザインタラクションの設定 (attachInteraction)
attachInteraction(camera, domElement)
// テーマ切替ボタンのクリック処理
handleButton3Click()
// インタラクティブ領域の再計算
updateInteractiveElements()
CalendarDisplay は、ユーザー操作によりカレンダー表示のテーマを切り替えるインタラクティブな仕組みを持ちます。DOM イベントを Three.js の Raycaster で補足し、SVG 内のボタン(例: id="btn3")を検出して handleButton3Click() を呼び出す仕組みです。また、定期的に update() が実行され、最新のカレンダー情報に基づいて Canvas テクスチャが更新されます。
以下は、CalendarDisplay クラスおよび関連クラスの詳細な UML クラス図です。各クラスの属性、プライベートメソッド、パブリックメソッドが網羅的に定義されています。
また、インタラクティブな UI 操作の管理には、以下の補助クラスが用いられ、各要素の状態管理やイベント処理が詳細に定義されています。