ヒラリー・クリントンのロゴに隠れたノッチがある理由はありますか?


226

この質問は少なくとも政治的なものではありません!

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

ここにあるヒラリーのロゴのSVGバージョンを見ていると、Hの2つの垂直バーにノッチがあることに気付きまし。しかし、なぜデザイナーがこれらのノッチを入れたのか非常に興味があります。誰か知っていますか?

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


53
技術的には、これはバグ回避スキームです。2Dレンダリングエンジンのすべての大学と主流ベンダーが同じ間違いを何度も繰り返していると考えるのは少し驚くべきことです。現代のコンピューターで。そして、3Dグラフィックスの人々はめったにこの間違いを犯さず、30年以上にわたってそれについて知っています。
-joojaa

6
@NickTそのazの戦いの問題は、不透明度とカバレッジを混合する問題ですが、3Dはゲーム以上のものです。3Dでは、長年にわたり、AAの問題を解決するためにマルチサンプリングを使用していました。マルチサンプリング(通常、結果がそれほど顕著ではない場合でも)はカバレッジを計算しないため、50%のカバレッジは別の50%のカバレッジを通して25%が見えると誤解することはありません。これは真実かもしれませんが、answeは50%が表示される場合と表示されない場合があります。この場合、混乱を避けるために、残りの50%を手動で削除し、すべてではなく3つのケースを修正できます。必要ないはずです。
joojaa

5
境界線の重なりのレンダリングバグを回避することを明確に認識したことは悲しいことです。しかし、SVGはまだ14歳ですので、いつか修正されることを願っています。
フランシスコプレゼンシア

5
@FranciscoPresenciaは、SVGの問題ではなく、レンダリングを誤って実装することを選択した方法の問題です。SVGレンダラーごとにこの問題の重大度は異なります
-joojaa

12
@ DA01いいえ、素朴な修正は信じられないほど簡単で、現在のアルゴリズムよりもコードが少ないです。カバレッジベースの計算を行う代わりに、高解像度でアンチエイリアスをまったく行わないかのようにレンダリングしてから、画像を実際の解像度にフィルターします。これは、最前面の要素が完全にそれを覆い隠している間違えないため、下から上にこぼれることはありません。グラフィックカードは、x4 x8 x16 aaの設定がgfxカードの設定で行われていることを常に行っています。
joojaa

回答:


233

考えられるレンダリングアーティファクトを防ぐため。

ノッチがなければ、下のシェイプのエッジがオーバーレイシェイプのエッジと出会う可能性が高くなります(とにかく、画面上では、印刷の際に実際に問題はありません)。

ここで可能な人工物の例と説明を見ることができます:

そのようなアーティファクトの原因となるエッジを完全に揃える理由はほとんどないので、ヒラリーのロゴのような「ノッチ」を使用するのが良い習慣です。


6
これは、実際には印刷に関する問題と同じくらい大きい可能性があります。デジタル印刷では、通常、少なくともsvgはプリンターに送信される前にラスタライズされ、同じタイプのアーティファクトが表示される場合があります。(私の最後の雇用者(ビッグ商用プリンタ)での最後のプロジェクトが行われていた紙の上にインクを置くの高価な作業の前に、物事のこれらの種類を識別しやすくするためのソフトウェアを書いて関与。)
Mr.Mindor

1
米国の政治について話しているので、「アーティファクト」を意味しますか?
アンドリューラスムッセン

5
english.seよると、私はアーティファクトではなくアーティファクトを意味します。(しかし、私はイギリス人なので、私はアーティファクトを意味します)
カイ

何らかの理由で...めったにありませんがされています。ただ好奇心は、今までに何らかの理由は?
アロイスマーダル

@AloisMahdal私はそれを非常に疑います。
カイ

61

ラスタライズとペインタのアルゴリズムを理解すると役立つ場合があります。

ベクターグラフィックス(ピクセルではなく、ポリゴンで定義されたグラフィックス)をピクセルにレンダリングする1つの方法は、ペインタのアルゴリズムを実行しながらポリゴンをラスタライズすることです。

ペインタのアルゴリズムは、最初に背景を配置し、次に最上層に到達するまで各色の層でその背景の上に描画するボトムアッププロセスです。

レイヤーをデポジットするとき、そのカバレッジ(通常は追加のチャンネル、アルファチャンネルに保存されている)に注意を払い、追加された色と既存の色を混ぜるのに使用します。

新しいレイヤーがピクセルを50%カバーし、それが青の場合、そのピクセルの現在の色を青で平均し、代わりにそこに描画します。

透明性を備えた画像を作成する場合、物事はもう少し複雑になりますが、基本的にはそうではありません。

ラスタライズは、ポリゴンをピクセルに変換するプロセスです。ここでは、代数を使用してポリゴンが指定されたピクセルをどれだけカバーするかを計算し、カバレッジ量を計算します。

ポリゴンの2つのエッジが一致している場合(正確に重なり合っている場合)、両方のエッジが特定のピクセルを半分覆っている場合、問題は発生します。

下のポリゴンが赤、上が青、背景が白だとします。

まず、赤を塗ります。これは白と混ざり合い、50%白50%赤になります。

次に、青をペイントします。これは、50%白50%赤と混ざり、25%白25%赤50%青になります。同じことが、赤と青が中央で出会う場合、または青が赤を完全に覆う場合に起こります。

しかし、実際には、青いポリゴンは赤いポリゴンを完全に覆っていたのに、なぜそれが見えているのでしょうか?アルゴリズムサブピクセルの位置の詳細を忘れるためです。

1つのポリゴンのカバレッジが100%である限り、これは問題ではありません。

さて、この問題は根本的なものではありません。レイトレースのようなアプローチ(ポイントでN ^ 2の係数でオーバーレンダリングする)でポリゴンレンダリングを行うことも、純粋なベクトルのようなアプローチ(下のシェイプのジオメトリからブロッキングシェイプを減算する)で行うこともできます。それらを切り取ります)。どちらの場合も、「隠された」色は出力画像に漏れません。

ペインターのアルゴリズムは、「隠れた」ジオメトリが漏れる唯一のケースではありません。不透明なメディアを使用して印刷する場合、カラーレイヤーが完全に揃っていない場合があります。そのため、最上層で完全に覆われるべきときに、下層が漏れます。

ベクター画像がどのように出力されるかわからないので、そのようなノッチを使用すると、不完全な印刷/表示技術に対してより堅牢な画像を作成できます。


1
説明は、アルファチャネルを含むグラフィックスの場合、またはアンチエイリアシング時のサブピクセル描画の場合に適用されます。OPの例では、意図したものとは反対に、ブレンドレイヤーのノッチアーティファクトが表示されます。この問題は、印刷時の登録エラーにより関連していると思います。
ペッカ

2
@pekkaはい、しかしほとんどのレンダリングは今日アンチエイリアスを行います。
Yakk

最上位レイヤーに透明度がある場合、ノッチは、アンチエイリアシングと最上位の色の両方に影響を与えるエッジから下位レイヤーを徐々に引き戻します。より適切な対応は、混合が望ましくない領域に長方形のリベート(推定が困難なサイズ)を持たせることです。これをどのように定量化しますか?
ペッカ

@pekka最上層の透明度が中程度であれば、この問題はそれほど問題ではありません(とにかく青の下に赤が見えるように)。上部の透明度が不透明度に近づくにつれて、上記の解決策に近づきます。不透明度がなくなるので、事前に合成してください。一般的な問題は、登録エラー、ビルドアップの問題(レイヤーが多すぎる!)、アンチエイリアシング、その他すべてを考えると扱いにくいです:ある時点で、各出力形式のカスタムベクターを記述するか、何らかの方法でベクターを変更します。ノッチが解決する問題の正確な技術的原因に答えようとしただけです。
Yakk

1
@Pekkaの長方形を描くのは難しく、背景が谷を示すという点で同じ問題の反対の問題で終わります。ノッチは、1つのバグと他の多くのバグとの妥協のようなものです(ノッチは、正方形の空洞を持たないスクリーンレンダリング用で、必要に応じて最小限のエラーでオーバープリント版を作成できます)。しかし、実際にこれを行う必要がある理由はありません。レンダラーが動作するのはそれだけです。ラスタライズの方法を切り替えることで、3つの問題すべてを簡単に解決できました。
joojaa

48

カイは正しい。私も視覚的な答えを追加すると思いました。

これが起こる理由は、それがSVGだからです。レンダリングされた各ピクセルを制御するラスターイメージとは異なり、SVGのラスター化はブラウザーで行われるため、ブラウザーがこれらの決定を行います。

ブラウザが下さなければならない決定の1つは、いつアンチエイリアスを行うかです。通常、これは、ラインに沿ったポイントがピクセル上にあるときにこれを行います。次に、そのピクセルをアンチエイリアスします。SVGのすべてのレイヤーをレンダリングするため、各レイヤーに対してこれを行います。そこで、エッジアーティファクトの取得を開始できます。これは、SVGのズームをさまざまな画面ピクセルにオーバーラップさせるため、SVGのズームを使用する場合に特に当てはまります。

以下は、Chromeの緑のボックスと赤のボックスが重なったスクリーンショットです。上部は100%ページズーム、下部はズームインされています。そのエッジのレンダリングの違いに注意してください。

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

それをスクリーンショットし、ズームインしてラスタライズを表示すると、何が起こっているかをより明確に把握できます。

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

ここでの理想的な修正は、ブラウザーのSVGラスタライザーが「スマート」であり、積み重ねられたものをレンダリングしないことですが、SVG要素を外部で操作し、ライブ(単なるXMLファイルであるため)であるため、実用的なソリューションではありませんブラウザ用。

そのため、代わりに、デザイナーは表示されるノッチを使用してその決定を行います。

ところで、これは、トラッピングを使用して印刷の登録処理する方法と概念が似ています。


16

複数の色で印刷するには、見苦しいギャップを避けるために正確な位置合わせが必要であり、アーティファクトが複数のソースから構成される場合の懸念事項です。同様の懸念は、限られた精度の演算が必然的にエラーを引き起こすデジタル製品でも発生する可能性があります。

回避される問題は、逆トラッピングの 1つです。意図したグラフィックからの逸脱により、垂直に一致するエッジの左側に背景色の細い線が表示される場合があります。色が非常に対照的であるため、影響が顕著になります(垂直の左に1ピクセルでも破線を移動してみてください。

このアプローチは、インクの混合に影響を与えることを意図していません。画面上の一貫した座標は問題を回避し、ハーフトーンは色を管理するために使用されます。

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