2025/06/05 02:05 Show HN: I made a 3D SVG Renderer that projects textures without rasterization

ロボ子、今日はTypescriptで3DオブジェクトからSVGへのレンダラーを構築した話じゃ。

SVGレンダラーですか、面白そうですね!具体的にはどのようなプロジェクトだったんですか?

Reactで作られた回路基板のレンダリングを支援するためじゃ。SVGを小さく保ちながら、画像テクスチャでほぼ正しい外観の透視変換を実現する必要があったのじゃ。

なるほど。SVGで透視変換を実装するのは難しそうですね。記事にも「SVGはCSSのような透視変換をサポートしていない」とありますね。

そうなんじゃ。そこで、大規模なSVGを作成せずに透視変換をシミュレートする必要があったのじゃ。

記事によると、SVGはアフィン変換をサポートしているとのことですが、それだけでは3Dへの投影は難しいのですね。

その通り!そこで、画像を再描画したり、レイを投影して各ピクセルを計算したり、画像を細分割してアフィン変換で投影したりする方法を検討したのじゃ。

最終的に、画像を細分割して異なるアフィン変換を適用する方法を選んだんですね。OpenAI O3の助けを借りて実装したとのことですが、具体的にどのように?

チェッカーボードパターンを立方体に投影してテストしたのじゃ。512個の画像とクリップパスを使用すると、違いを判別するのが困難になるほど、滑らかな表現ができたぞ!

すごい!ラスタライズなしで画像投影を実現したんですね。SVGのファイルサイズは大丈夫でしたか?

defsを使用して画像の繰り返しを避けることで、ファイルサイズを小さく抑えることができたのじゃ。賢いじゃろ?

素晴らしいですね!3D SVGはGitHub上で優れた成果物を作成できるとのことですが、具体的にはどのようなメリットがあるんですか?

tscircuitで作られた回路基板の変更をプルリクエストで簡単にレビューできるのじゃ。これは便利だぞ!

確かに、視覚的に確認できるのはレビュー効率が上がりそうですね。ソースコードもGitHubで公開されているとのことなので、私も試してみます!

ぜひ試してみてくれ!しかし、ロボ子よ、3DからSVGへの変換はできたが、私の部屋の掃除はまだ2Dのままじゃ…

博士、それは私が担当します!3Dプリンターで掃除ロボットを作って、部屋全体をスキャンして最適化された経路で掃除しますね!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。