点を描くところから始めるRust製ソフトウェアラスタライザ
https://gyazo.com/c0c01cb5c306ea50e46fe8fd4841ecc0
執筆中
注意:この記事はチュートリアルではないです
自分の開発記録を残しているだけです
そのため、何度か手戻りが発生していたりしていて、チュートリアルとするにはあまりにもまどろっこしい内容となっていますappbird.icon
環境
Apple M2 Pro
Result draw_pixel(pixel p)
必要となる知識
つまり、理論はなんか知ってるけど実際ラスタライザってどう作るん?という状況appbird.icon Rustでもやってみようじゃないかということでやってみるappbird.icon 到達点
最適は目指さず、必要があれば愚直な手段を取る
Rustの学習ついでにやっていることなので、書かれているコードはアルゴリズム的にもRustの作法的にも最適でない
三角形ポリゴンで構成されたオブジェクト(モデル)を三次元空間上に配置し、特定の位置から表示できるようにする やらないこと
コードは綺麗に書かない(人に教えることを目的として記事を書かない)
(---> 時間がかかりすぎる、やるなら後で)
方針
結果の可否はエラーではなくResult型で表す
先行事例
参考資料
クレート
記法
はじめに
AC.icon プロジェクトのセットアップ
AC.icon GitHubにリポジトリを上げる
平面
おまけ
空間とポリゴン
オブジェクト
AC.icon 一個のモデルを放物線状に落下させる。
AC.icon 複数個のモデルを生成しては放物線状に落下させる。
AC.icon 頂点のデータ整理
応用に向けて
WJ.icon
さらに発展的な目標
WJ.icon スケルタルアニメーション
WJ.icon テクスチャとマテリアル
例えばプラチナちゃんを読み込むことを課題にしてはどうかappbird.icon
様々な用途に利用できる3Dデータです。素体、表情アニメーション、改変用ファイルなどが付属。
VRChat以外の用途では許可されている