Krbn:鉛筆スタイルの3Dレンダラー、SVG出力
Krbnは、非フォトリアリスティックな鉛筆スタイルのレンダリングを行うWebエンジンで、抽象的な技術シーンをSVGに変換します。ピクセルベースではなく、幾何学的形状からストロークを導き出し、正確なシルエット、隠れ線、ハッチングなどをサポートします。TypeScriptで書かれ、MITライセンスで、AI支援を受けて開発されました。
Krbnは、非フォトリアリスティックな鉛筆スタイルのレンダリングに特化した革新的なWebエンジンで、3Dシーンをスケーラブルベクターグラフィックス(SVG)に変換します。従来のグラフィックスエンジンとは異なり、Krbnはピクセルの色を気にせず、アーティストが線を描く方法を模倣します。つまり、どの線を描き、どの線を省略するかを決定します。
エンジンの核心は、幾何学的形状からストロークを導き出し、分類し、スタイルを適用することにあります。例えば、球、円柱、円錐のシルエットはメッシュエッジのサンプリングではなく、閉形式で正確に計算された円錐曲線です。トーラスは真の四次曲線を生成します。隠れ線はZバッファで除去されるのではなく、可視部分とゴースト部分に解析的に分割され、製図者が箱の遠いエッジを淡い線で残すのと同様です。
透明度も紙と同様に機能します:アルファチャンネルはなく、クロスハッチングは本質的に半透明で、ストローク間の隙間が背後を明らかにします。シェーディングはハッチ密度で表現され、形状は各表面の曲率に沿って流れるハッチ方向で定義されます。球の平行線と経線、トーラスのポロイダルループ、任意メッシュ上のトレース流線など。
正確性はプロジェクトの価値観であり、最適化ではありません。交差は低次多項式の根であり、退化ケース(接線、一致する円錐曲線、接するカスプ)はエッジケースではなく仕様です。その見返りは信頼できる出力です:同じシーンは常に同じ、バイト同一で差分可能なSVGを生成します。
もう一つの逆転は、作者がセマンティクスを提供し、エンジンがメカニズムを提供することです。重要度、焦点、役割などをマークすると、Krbnは何を描画し、何をゴースト化し、何を抽象化するかを決定します。まるでイラストレーターがフィギュアの主題を決めるように。
エンジンはアニメーションもサポートします:ゆらぎは安定したストロークアイデンティティにシードされるため、手描きの線はフレーム間で跳ねません。周回カメラがシルエットをスライドさせ、ちらつきやジャンプ、ジッターの再割り当ては発生しません。
Krbnは研究プロトタイプとして始まり、完全なパイプラインに成長しました:解析プリミティブカタログと三角形メッシュが同じ5段階パスでレンダリングされ、隠れ線可視性、示唆的輪郭、手描きゆらぎ、可変幅ストロークを含みます。MITライセンスで、TypeScriptで書かれています。
プロジェクトは作者の子供時代の夢に端を発し、医療休暇を利用して実現しました。作者はプロジェクトがAI支援に大きく依存していることを率直に認めていますが、方向性、アーキテクチャ、基準は人間が決定したと強調しています。コードはAIと協力して作成され、その後他のコードと同様にレビューおよびテストされました。
機能には、解析プリミティブ(球、楕円体、円柱、円錐、平面、多角形、線、点、トーラス、それぞれ正確なシルエット)、自由曲線(螺旋、ベジェ曲線、関数プロット)、三角形メッシュ、正確な隠れ線、交差曲線、示唆的輪郭、ハッチングとトーン、曲率追従ハッチ、手描きゆらぎ、可変ストローク幅、抽象化(小さすぎる詳細は破棄、トーン量子化、一致線のマージ)、ハイライト(X線強調)、決定論的SVG出力などがあります。
アーキテクチャの概要:シーンはFeatureSourceのセットで構成され、各フレームは5段階のパスを実行します:特徴抽出(シルエット、折り目、境界、示唆的および交差曲線、ハッチ領域)、可視性分類(各曲線を可視/非可視区間に分割)、抽象化フィルター(しきい値以下の詳細を破棄、統合、重要度適用)、スタイリング(重み、シードゆらぎ、可変幅、破線、ゴースト、ハッチ密度)、出力(解析曲線をサンプリングしバックエンドに渡す、現在はSVG)。
プロジェクトレイアウトはsrcディレクトリに数学、曲線、パイプライン、シーン、プリミティブ、バックエンド、メッシュなどのモジュールがあります。開発にはbun install、bun run typecheck、bun run build、bun testを使用します。
作者はまた、ルーマニアの学生が数学の試験対策をするためのゲームAhaBlitzという別のプロジェクトについても言及しています。
総じて、Krbnは伝統的なラスタライゼーション手法に挑戦し、芸術性と正確性に焦点を当てたユニークで思慮深いレンダリングエンジンです。