【基本-6】シェーディングパターン(ラティス形式)について

ラティス形式と呼ばれるシェーディング方法です。
擬似矩形の頂点を設定して三角メッシュを作っていきます。
矩形の横方向の並びを行と言います。
矩形は次のパラメータで、座標を行単位で設定していきます。
x座標 y座標 色値(0〜4個)
VerticesPerRowは行の頂点数を指定します。
行の頂点が2なら矩形が1個、3なら2個、5なら3個になります。

★が付いたパラメータは変更可能です。色々と変えてみてください。

/ColorSpace色空間により色値の個数が変わります。
/DeviceRGB 3個 /DeviceGray 1個 /DeviceCMYK 4個

コード内の<< >>は本来英語記号ですが、ここでは入力できないため日本語記号<< >>を使用しています


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
%!PS-Adobe-3.0 EPSF-3.0
%%BoundingBox: 0 0 240 240
%%Title:ラティス形式のグローシェーディングによる三角メッシュ

0 0 240 240 rectstroke % 画面囲み
120 120 translate % 座標の原点を中央に移動

<< % シェーディング辞書定義
/ShadingType 5 % ラティス形式のグローシェーディング
    /ColorSpace /DeviceRGB % ★色空間定義
    /VerticesPerRow 2 % ★ラティスの行の頂点数(2以上)
    /DataSource [ % ★三角メッシュを定義する頂点座標と色値
        -100 100 1 0 1 % 上の行の頂点
         0 100 0 1 1
        -100 0 1 1 0 % 下の行の頂点
         0 0 1 0 1
    ]
>> shfill %グラデーションで塗りつぶす

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
%!PS-Adobe-3.0 EPSF-3.0
%%BoundingBox: 0 0 240 240
%%Title:ラティス形式のグローシェーディングによる三角メッシュ

0 0 240 240 rectstroke % 画面囲み
120 120 translate % 座標の原点を中央に移動

/cyan { 0 1 1 } def % シアン
/magenta { 1 0 1 } def % マゼンタ
/yellow { 1 1 0 } def % イエロー

<< % シェーディング辞書定義
    /ShadingType 5 % ラティス形式のグローシェーディング
    /ColorSpace /DeviceRGB % ★色空間定義
    /VerticesPerRow 3 % ★ラティスの行の頂点数(2以上)
    /DataSource [ % ★三角メッシュを定義する頂点座標と色値
        % 100の高さの頂点
        -100 100 magenta
        0 100 cyan
        100 100 magenta
        % 0の高さの頂点
        -100 0 yellow
        0 0 cyan 100 0 yellow
    ]
>> shfill %グラデーションで塗りつぶす

※変更部分のコードのみ掲載しています。




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/VerticesPerRow 3 % ラティスの行の頂点数(2以上)
/DataSource [ % 三角メッシュを定義する頂点座標と色値
% 100の高さの頂点
-100 100 magenta
0 100 cyan
100 100 magenta

% 0の高さの頂点
-100 0 yellow
0 0 cyan
100 0 yellow

% -100の高さの頂点
-100 -100 magenta
0 -100 cyan
100 -100 magenta
]
<pre>

縦に任意数つなげることが可能です。

座標の順番を変えることで三角メッシュの方向も変わります。
ただし座標は一筆書きのように順番に設定します。

※変更部分のコードのみ掲載しています。


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
    /VerticesPerRow 2
    /DataSource [

        0 100 yellow
        -100 100 magenta
        0 0 yellow
        -100 0 cyan

        -100 0 cyan
        0 0 yellow
        -100 -100 magenta
        0 -100 yellow

        0 -100 yellow
        100 -100 magenta
        0 0 yellow
        100 0 cyan

        100 0 cyan
        0 0 yellow
        100 100 magenta
        0 100 yellow
    ]

真四角である必要はありません。


よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

目次