Illustratorのベクターラスター化プロセスとは何ですか?


18

現在、ベクターグラフィックスのラスタライズと、さまざまなアプリケーションタイプで実装されるさまざまな方法について、いくつかのことを理解しようとしています。

いくつかのプログラムをテストして比較したところ、ラスター化プロセスでのアンチエイリアスの動作に大きな違いがあることに気付きました。Illustratorのレンダリング動作に特に興味があります。さらに読むと、その理由がわかります。

ベース画像

私のテストでは、さまざまな色の不規則な六角形に編成された非常に単純な三角形の構成を使用しました。

ベクターグラフィックソフトウェア

Illustrator、Affinity、およびInkscapeの同じベクターグラフィックの3つのレンダリングを次に示します。(AffinityとInkscapeで生成される画像はまったく同じです。)

一般的なグラフィック編集ツールでレンダリングされた画像

ご覧のとおり、AffinityとInkscapeでレンダリングされた画像の各エッジには、望ましくない白い線があります。アンチエイリアシングは、この領域を単色で塗りつぶさず、隣接する形状の間に小さな隙間ができます。

Illustratorレンダリングにはギャップはありませんが、シェイプのエッジはアフィニティレンダリングと同じくらい滑らかに見えます。

以下は、各画像の同じ領域を拡大した画像です。

アンチエイリアスを示すアップスケールレンダリング

2つの画像には非常に微妙な違いがあります。アフィニティレンダリングは少しスムーズですが、元のサイズの画像を見ると違いを見るのはほとんど不可能です。

ブラウザ

SVGレンダリング

ブラウザでSVGとしてエクスポートされた同じグラフィックを表示すると、AffinityとInkscapeの両方で生成されたラスターイメージに非常に似ています。

ブラウザでレンダリングされたSVGファイル

エッジアンチエイリアシングにはごくわずかな違いがありますが(実際にここで示す価値はありません)、一般的なブラウザーでのSVGラスタライズはほぼ同じように動作します。

分解されたレンダリング

Illustratorのレンダリングをさらにテストして、グラフィックスの一部を分割して個別にエクスポートし、ラスター編集ソフトウェアで一緒に再構成してみました。

画像再構成スキーム

理論的には、1つのピースに収めた場合と同じイメージになりますが、この方法を使用した場合、結果はわずかに異なります。

再構成された画像の結果

示されているように、2つの部分を構成すると、それらの間に小さなギャップがあります。より微妙ですが、Affinityでレンダリングされたグラフィックに非常に似ています。

ポリゴンレンダリング

Blender(3Dソフトウェア)

BlenderビューポートのSVG

Blenderでは、SVGファイルをインポートし、それらを曲線オブジェクトとして操作できます。これは、3Dビューポートに表示されるインポートされたグラフィックです。(デフォルトでは、マテリアルはシーンのライトの影響を受けます。マテリアルプロパティパネルでシェードレスプロパティをチェックすると、シェイプを元の色でレンダリングできます。)

以下は、Blender内のSVGで作成されたレンダリングです。

Blenderでの実際のレンダリング

三角形の間に隙間はありません。他の3Dソフトウェアも同じように機能する可能性が非常に高いです。BlenderはIllustratorのように動作しますか?多分それは逆ですか?

本当の質問

  • Illustratorはバックグラウンドでどのベクター描画ライブラリを使用しますか?
  • Illustratorが一種の3Dレンダリングエンジンを使用する可能性はありますか?オープンソースですか?(おそらくない?)
  • CairoやSkiaなどのよく知られているベクトル描画ライブラリは、同じレンダリング動作を実現できますか?(形状間に隙間がない)
  • 同じ動作をするあまり知られていないベクトル描画ライブラリはありますか?

4
他の一般的なレンダラーにもこの混同の問題があります。w3.impa.br/~diego/projects/GanEtAl14/sample.html?contourを参照してください。
lhf

回答:


11

私が知る限り、Illustratorには2つまたは3つの異なるラスタライザーがあります。画面上のプレビューも、効果を最小限に抑えるように調整されていますが、ショーと同じギャップアーティファクトが生じやすい傾向があります。あなたの投稿は、「アートに最適化された」出力に興味があることを暗示しているようです。

イラストレーターのアートプレビューとスクリーンプレビュー

画像1:イラストレーターのさまざまなレンダリングモード。アートは左に最適化され、右にヒントが表示されます。hintedはわずかなバックグラウンドを示していることに注意してください。新しいCCバージョンがないので、3番目を表示できません。

アート最適化はどのように機能しますか

アートに最適化されたレンダリングモードは、高解像度でレンダリングされたアンチエイリアスされていない画像であり、ボックスフィルタリングが適用されます。これはスーパーサンプリングと呼ばれ、費用がかかります。ボックスフィルタは、ボックス内のサンプルの平均値(ピクセル)です。これは実際、ブレンダーレンダーで使用されるマルチピクセルフィルターが使用するものと同様のテクノロジーです。同じことを手動で行い、同じ結果を得ることができます。

実際、フォームのイラストレーターから得られるレンダリングはあまり良くありません。非線形空間でレンダリングされ、補正されていないため、高次のフィルターに切り替えて線形色空間で計算することにより、より良い結果を得ることができます。すべてのマルチサンプルメソッドは、同じ正しいレンダリングを示します(数学的にも十分なサンプルが与えられます)。

ここに画像の説明を入力してください

画像2:マルチピクセルフィルタリング、左イラストレーターネイティブ「アート最適化」。線形空間でのマルチローブランチョスフィルターを使用した16x16ピクセルの同じ画像。ズームが1:1であることを確認してください。

問題

実際、現在の世代のオンスクリーンレンダラーの本当の問題を理解しています。彼らは、カバレッジ計算に有利なマルチサンプリングを避けようとします。しかし、それは単に完全に動作することはできません!アルファブレンドが次の理由からです。

c0=c1α+c2(1α)

チェーンが半透明の表面にチェーンされたときに0にならないため、背景がトラフを示します。また、カバレッジがどのように分散されているかがわからないため、間違っています。このような重複しない場合、これを回避する方法はありません。あなたは形状が、その後カバレッジ計算を解くことができる重なっ許す場合は(参照ここ)。

その他の質問アンチエイリアス処理されていない画像を単にマルチサンプリングするだけで、他のエンジンでも同じ結果を得ることができます。速度を最適化するため、オーバーラップトリックを実行しないと、スクリーンレンダリングに効果を得ることができません。イラストレーターは3Dを使用しますか?新しいCCは、3Dとは何かの解釈に依存する場合があります。この問題は、3Dとは信号の再構成方法とは関係がないため、実際には問題には当てはまりません。


1
ところで、このような場合にアルファブレンディングが「正しいことをしない」理由の詳細については、Andrew Glassnerによるアルファの解釈をご覧ください。
ネイサンリード

@NathanReedはthnxに見えますが、ここでは単にアルファが正しく機能したとしても、どの部分がピクセルをカバーし、どの部分がカバーしていないかを知ることはできません。したがって、アルファが50%の2つのレイヤーは、完全に不透明または1つのレイヤーのみが表示されることを意味する場合があります。
joojaa

2
@joojaaはい、それは基本的にこの論文のポイントです。アルファは不透明度、カバレッジ、または両方の組み合わせを表すことができます。:)
ネイサンリード

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.