現在、ベクターグラフィックスのラスタライズと、さまざまなアプリケーションタイプで実装されるさまざまな方法について、いくつかのことを理解しようとしています。
いくつかのプログラムをテストして比較したところ、ラスター化プロセスでのアンチエイリアスの動作に大きな違いがあることに気付きました。Illustratorのレンダリング動作に特に興味があります。さらに読むと、その理由がわかります。
私のテストでは、さまざまな色の不規則な六角形に編成された非常に単純な三角形の構成を使用しました。
ベクターグラフィックソフトウェア
Illustrator、Affinity、およびInkscapeの同じベクターグラフィックの3つのレンダリングを次に示します。(AffinityとInkscapeで生成される画像はまったく同じです。)
ご覧のとおり、AffinityとInkscapeでレンダリングされた画像の各エッジには、望ましくない白い線があります。アンチエイリアシングは、この領域を単色で塗りつぶさず、隣接する形状の間に小さな隙間ができます。
Illustratorレンダリングにはギャップはありませんが、シェイプのエッジはアフィニティレンダリングと同じくらい滑らかに見えます。
以下は、各画像の同じ領域を拡大した画像です。
2つの画像には非常に微妙な違いがあります。アフィニティレンダリングは少しスムーズですが、元のサイズの画像を見ると違いを見るのはほとんど不可能です。
ブラウザ
SVGレンダリング
ブラウザでSVGとしてエクスポートされた同じグラフィックを表示すると、AffinityとInkscapeの両方で生成されたラスターイメージに非常に似ています。
エッジアンチエイリアシングにはごくわずかな違いがありますが(実際にここで示す価値はありません)、一般的なブラウザーでのSVGラスタライズはほぼ同じように動作します。
分解されたレンダリング
Illustratorのレンダリングをさらにテストして、グラフィックスの一部を分割して個別にエクスポートし、ラスター編集ソフトウェアで一緒に再構成してみました。
理論的には、1つのピースに収めた場合と同じイメージになりますが、この方法を使用した場合、結果はわずかに異なります。
示されているように、2つの部分を構成すると、それらの間に小さなギャップがあります。より微妙ですが、Affinityでレンダリングされたグラフィックに非常に似ています。
ポリゴンレンダリング
Blender(3Dソフトウェア)
Blenderでは、SVGファイルをインポートし、それらを曲線オブジェクトとして操作できます。これは、3Dビューポートに表示されるインポートされたグラフィックです。(デフォルトでは、マテリアルはシーンのライトの影響を受けます。マテリアルプロパティパネルでシェードレスプロパティをチェックすると、シェイプを元の色でレンダリングできます。)
以下は、Blender内のSVGで作成されたレンダリングです。
三角形の間に隙間はありません。他の3Dソフトウェアも同じように機能する可能性が非常に高いです。BlenderはIllustratorのように動作しますか?多分それは逆ですか?
本当の質問
- Illustratorはバックグラウンドでどのベクター描画ライブラリを使用しますか?
- Illustratorが一種の3Dレンダリングエンジンを使用する可能性はありますか?オープンソースですか?(おそらくない?)
- CairoやSkiaなどのよく知られているベクトル描画ライブラリは、同じレンダリング動作を実現できますか?(形状間に隙間がない)
- 同じ動作をするあまり知られていないベクトル描画ライブラリはありますか?