インクジオメトリパイプラインとレンダリング
一般的に、エンジンはラスターパーティクル(通称ラスターインク)とベクトルポリゴンレンダリング(通称ベクトルインク)を区別しており、その主な違いは下の表に示されています。 Ink Geometry Pipelineによって計算される幾何プリミティブは、Catmull-Rom スプラインを使用して補間される制御点を含むパスです。 これらの制御点に加え、ストロークの数学的モデルにより、各ストロークの開始および終了する最初と最後のセグメントに補間パラメータの値が指定されます。 すべてのパスは、必要に応じて変更可能な幅と不透明度で作成することができます。 ラスタライザーモジュールに採用されているラスタライズ技術は、これらの特徴を備えるパスを描くための技術です。
ラスターインク | ベクトルインク |
---|---|
固定解像度 – グラフィックスをピクセルレベルで定義 | 拡大縮小や移植が可能 – さまざまなデバイスでの印刷や表示に最適 |
ピクセルレベルでの加工、ぼかしなどが可能 | オブジェクトモデル – さまざまなジオメトリ操作による加工が可能 |
柔軟性が向上 | レンダリングが複雑化し、表現面での制約が増大 |
ベクトルインク(図形の塗りつぶし技術)は、可変幅のストロークをラスター化するための単色技術です。 この手法は、表現力の面での制約が大きくなりますが、より複雑なレンダリング技術と比較してパフォーマンスが優れているため、 通常の倍率変更が可能なベクトルグラフィックス向けや手書きアプリケーション向けに適しています。 表現がシンプルであるため、この技術でラスター化されたストロークは、分割、倍率変更、再描画などを容易に行うことができます(図1を参照)。
図1:ベクトルの例
パーティクルインクは、パーティクルの重なりを使用してストロークをレンダリングします。 この技術を使用すると、レンダリングセクションに記載されている複数のレンダリングパラメータの制御により、より表現豊かなツール(クレヨン、鉛筆、水彩用ブラシなど)を作成できます。 これは、図2に示すような準専門的な作画用途に適しています。
図2:ラスターの例
パイプライン
コンピュータグラフィックスにおいて、レンダリングパイプラインとは、グラフィックスシステムがオブジェクトのレンダリングを実行する場合に必要なステップを記述する概念モデルです。WILLのインクレンダリングでは、このプロセスがすべてのプラットフォームで同様に採用されているジオメトリパイプラインと、プラットフォーム固有のグラフィックスフレームワークを利用するレンダリング部分に分割されています。
アプリケーションでは、geometry pipelineがInkBuilder
で作成および設定されます。VectorInkBuilder
がベクトルブラシのパイプラインを拡張するのに対し、RasterInkBuilder
はラスター(パーティクル)ブラシに特化しています。WILL 3.0 @@@では、一連の処理ブロック*(プロセッサ、プロデューサなど)で構成されるgeometry pipelineを使用します。パイプラインの入力はポインタデータ(タッチ、スタイラス、マウス、またはコントローラ)*であり、これが一連の処理ステージを通過します。後続のステージが、各ステージの出力を入力として取得します。パイプラインの第一の目的はデジタルインクの作成です。ただし、汎用的に実装されているため、より幅広い機能を実現できます。
図3:WILL 3のレンダリングパイプライン.
入力
最良の入力元はペンです。ペンは最大量のセンサ入力を提供し、書き込みやスケッチの際に最も自然な手段であるからです。
図4:インクセンサーチャンネルの概要
関連する入力は次のとおりです。
- Position - xとyの座標で定義 - 入力点の位置
- Phase - 入力の段階*(開始、アップデート/移動、終了)*
- Timestamp - 入力のタイムスタンプ、速度の計算に使用
- Force - オプション - (筆圧)筆圧を感知するスタイラス/ディスプレイによって通知される値
- Radius - オプション - タッチ入力の太さ
- Altitude Angle - オプション - 入力デバイスと書き込み面が成す仰角(OE)。0~π/2のラジアンで計測。
- Azimuth Angle - オプション - オブジェクトの場所までの書き込み面に沿った角距離
慣例により、方位角(OA)は書き込み面に沿って上から下(北から南)へ計測されます。 0~2πのラジアンで計測(図5を参照