← 課題一覧

3D レース

曲がって上下する周回コースを、CPU カー 3 台と 3 周で競います。3D はライブラリを使わず自分で書きました——g78 の投影に、車の向きで回るカメラ、視点をまたぐ多角形を切るニアクリッピング、曲線から作る道の帯を足しています。音を出してお使いください。

LAP 1/30:00.00 ・ 前のラップ --.-- 4 位0 km/h ・ 1 ベスト --:--.-- コマ/秒

 



    
やること:「スタート」で 3・2・1 のあと出走。← → で曲がり、▲ でアクセル、▼ でブレーキ(w a s d でも)。CPU カー 3 台と 3 周を競い、順位とタイムを出します。
  1. 速いほど曲がりにくい。カーブの前にブレーキ。道の外(草)に出ると大きく減速します。
  2. CPU カーにぶつかると減速して押し出されます。壁はありません。
  3. 3 周のタイムと最速ラップのベストがこのブラウザに残ります。
  4. エンジン音は 0.5 秒の輪を Python で作り、速さで再生の速さを変えています(ギアが上がると下がる)。端末版には無い、ブラウザだけの音です。
カメラを回す:車の向き(yaw)で世界を回す ニアクリッピング:視点をまたぐ多角形を NEAR で切る 曲線からメッシュ:Catmull-Rom → 断面 → 道の帯 :道の高さを補間して車を乗せる

Python を読み込んでいます… (初回は数秒かかります)

このページは Python のコードがブラウザの中でそのまま動いています(PyScript)。 コース・車の動き・CPU カー・カメラ・投影・面を塗る処理は CLI 版と 1 文字も違いません。 端末は 128 × 80 ドットを ▀ の並びで、ここでは同じ式を 3 倍の板(384 × 240)で回して canvas に出しています。