Formula — 3Dグラフィックスを解き明かす一式

Web

概要

tsoding の “formula” は、YouTube の解説動画に対応するソースコードで、3Dグラフィックスの基礎を一つの「式」で示すことを目的とした非常に小さなデモプロジェクトです。プロジェクトは数ファイルで構成され、ブラウザで index.html を開くだけで動作します。メッシュ(立方体)の頂点定義、回転変換、投影(スクリーンへの写像)、および描画ループが最小限のコードで書かれており、初学者でも3D変換の流れを追いやすくなっています。外部依存がなく、学習用途や簡易デモに最適です。

GitHub

リポジトリの統計情報

  • スター数: 27
  • フォーク数: 2
  • ウォッチャー数: 27
  • コミット数: 6
  • ファイル数: 6
  • メインの言語: JavaScript

主な特徴

  • 学習に最適な極小構成:数ファイル・短い実装で3Dの流れを可視化
  • 純粋な JavaScript 実装:外部ライブラリなしで動作
  • ブラウザベース:index.html を開くだけでデモ実行可能
  • 動画との連携:YouTube 解説のソース実装として参照できる

技術的なポイント

このリポジトリの技術的な核は「3D空間→2Dスクリーン」への写像を最小の式で表現している点です。一般的に3D描画は頂点の回転(行列や四元数)、視点座標系への変換、透視投影(遠近感の付与)、そしてラスタライズという段階を踏みますが、本プロジェクトはその中核をシンプルに分解して示しています。

具体的には、立方体の頂点配列を定義し、フレームごとに角度を変えて回転させ、投影のための単純な式(多くは z によるスケーリングと中心へのオフセットを組み合わせた透視除算)で 2D 座標を計算します。Canvas(または軽量な描画コンテキスト)へは線分またはポリゴンを描画する単純ルーチンで出力しており、描画ループは requestAnimationFrame を利用して高効率に更新されます。

教育的価値としては、行列ライブラリなどの抽象化を介さず生のベクトル演算や式を追うことで、「なぜ透視投影で z が重要か」「回転で座標がどのように変わるか」を手を動かして理解できる点が挙げられます。また、コード規模が小さいため式の改変(例えば視点距離や投影係数の調整、回転軸の変更)を試しやすく、3Dレンダリングの感覚を素早く得られます。

拡張のしやすさも特徴で、ライトや簡易シェーディングを加えたり、行列積を導入して複雑なトランスフォームへ移行したり、WebGL ベースへ移植して GPU を使った描画へ発展させることも容易です。動画連携により、作者の解説を追いながらコードを読み進めることで理解が深まります。

プロジェクトの構成

主要なファイルとディレクトリ:

  • LICENSE: file
  • README.md: file
  • cube.js: file
  • index.html: file
  • index.js: file

…他 1 ファイル

各ファイルの役割(簡潔に)

  • index.html: キャンバスを置き、スクリプトを読み込むシンプルなページ
  • index.js: アニメーションループ、イベント処理、描画のエントリポイント
  • cube.js: 立方体の頂点データや面定義、transform/projection ロジック(小規模)

まとめ

短くて学びやすい3D入門デモ。式の意味を手早く体感できる良い教材。

リポジトリ情報:

READMEの抜粋:

One Formula That Demystifies 3D Graphics

Source Code from this YouTube Video. Just open index.html in a Browser. Or go to https://tsoding.github.io/formula/