ポリゴンに奇麗な絵を描く

以下はポリスタのモデラーロケットモードに限った話です。全てのN64ソフトがこうだというわけではないのでご注意を。

ポリゴンペイントの要点

一枚のポリゴンとキレイ原点

図1
模式図 画像 拡大画像
直角二等辺三角形のポリゴンの模式図 直角二等辺三角形のポリゴン画像 ポリスタの1テクセルを拡大

模式図のように、ポリゴンに方眼が描かれていると考えます。この方眼の交点一個が最小の画素単位。いわゆる1ドット。方眼の交点数、すなわちドット数は、少なくとも縦27ドット、横27ドットです。画素は面積のある正方形ではなく、面積の無い点と考えます(碁盤に置かれた碁石のような感じ)。まず1ドットの赤い点を描きます。これをポリスタで表示したのが模式図の右の画像。画素がポリスタに処理されて、六角形で表示されます。

図2
模式図 画像
直角二等辺三角形のポリゴンの模式図に三本の赤い線 直角二等辺三角形のポリゴンの画像に三本の赤い線

次に、縦、横、斜めの点の並び。これらは六角形の画素が重なり合った結果、奇麗な直線で表示されます。

図3
模式図 画像
直角二等辺三角形のポリゴンの模式図に三本の赤い線、青い線 直角二等辺三角形のポリゴンの画像に三本の赤い線、ガタガタの青い線

さらに点を追加。青い点の並びは奇麗な直線になりません。

図4
模式図 画像
縦縞模様 直角二等辺三角形のポリゴンの模式図に縦縞 直角二等辺三角形のポリゴンの画像に縦縞
横縞模様 直角二等辺三角形のポリゴンの模式図に横縞 直角二等辺三角形のポリゴンの画像に横縞
市松模様 直角二等辺三角形のポリゴンの模式図に市松模様 直角二等辺三角形のポリゴンの画像に市松模様

結論だけ言うと、図2の三本の線と、それに平行な線だけが奇麗な線になります。例えば図4のようなもの。

図5
画像
大きなポリゴンと小さなポリゴンに同じ数の縞模様

1ポリゴンに描ける画素の数は、全てのポリゴンで同じです。相対的なポリゴンの大きさには関係ありません。図5の二枚のポリゴンの縞模様は、どちらも1画素の線で描かれています。線の数はどちらも同じです。

図6
模式図 画像
変形するポリゴンのアニメーション 直角二等辺三角形から変形したポリゴン

今までは直角二等辺三角形のポリゴンのみを見てきました。しかし当然、ポリゴンの形状は色々です。図6は直角二等辺三角形からポリゴンを変形させた様子。ポリゴンの形が変わるのに合わせて、碁盤の目も変形。ポリゴンがゴム膜のように伸び縮みして、膜の表面に描かれた模様が変形するような感じ。

このポリスタにおいてペイントの基準となるポリゴンの頂点Aを、このサイトでは「キレイ原点」と呼びます。もちろん任天堂非公式用語。

図7
模式図
直角二等辺三角形ポリゴン模式図まとめ。直線になる点の並びはキレイ原点から三方向。画素数は27×27×(1/2)。

まとめ。ポリゴン1枚には、ペイントの基準となる『キレイ原点』、A点が存在。ペイントでキレイに直線を描ける方向は、BCの中点をMとすると、AB,AC,AMの三方向。これ以外の方向に線を描こうとしてもガタガタになる。

ポリゴン1枚に描ける画素の数は、ポリゴンの相対的大きさとは無関係に、全て一定。その数は少なくとも縦27、横27ドット。これらのドットは座標とカラーコード情報を持ち、ポリスタによって濃淡を持った六角形に描画される。また、このドットの形はポリゴンの形が変形するに従って変わる。

キレイ原点の位置管理

キレイ原点は通常、ポリスタが勝手にその位置を決めます。しかしモデラー制作画面での操作により、キレイ原点を任意の位置に移動することが可能です。複数の方法が発見されていますが、実用上使いやすいと思われる方法は以下。ただし再現性があるとは限りません。

図8
画像 作業手順
この表の中の画像は画像で見てください。代替文書にするのが難しいっ! 赤い線を描いたポリゴンは、現在手前の頂点にキレイ原点がある。これを任意の場所に移動するには…。
代替文書省略 キレイ原点を移動したいポリゴンを、面で選択。面は1ポリゴンで構成されなくてはならない。
代替文書省略 [線を押さえて引き出す]で、尖らせる
代替文書省略 引き出した頂点を[点]で選択し、[消す]。
代替文書省略 元のポリゴン形状に戻り、キレイ原点の移動完了。このまま他の作業を続けてもよい。
代替文書省略 キレイ原点が、[線を押さえて引き出す]とき押さえた線に向かい合った頂点に移動している。

経験的には、この作業によって他のポリゴンのキレイ原点が移動することはありませんでした。また、この方法を取った場合、「作業前にどこにキレイ原点があったのか」「他のポリゴンのキレイ原点はどこにあるか」等は無関係と思われます。

スタンプ

スタンプの作られ方

ペイントスタジオから取り込んだ画像が、どのようにスタンプになるか、の過程です。以下はポリスタ内部の動作を推測したものに過ぎず、プログラムの解析等はしていません。

図9
- 大きい用紙 普通用紙
ペイスタ
2D作品
大きい用紙に描いた楕円 普通用紙に描いた楕円
ポリスタ
スタンプ
大きい用紙から作ったスタンプ 普通用紙から作ったスタンプ

スタンプに変換可能なペイスタの2D作品は、大きい用紙と普通用紙の二種類。大きい用紙は320×240ドット、普通用紙は216×202ドットです。ポリスタは、ペイスタからこれらの画像を読み込むと、用紙全体を自動的に32×32ドットに縮小します。ポリスタ内に入っているスタンプ画像は、この32×32ドットの小さな画像であると思われます。

図10
ペイスタ2D作品 ポリスタスタンプ
格子模様の2D作品 格子模様のスタンプ

格子模様の画像をスタンプにして、マウス右ドラッグで拡大して押した様子。スタンプ画像がポリスタに処理されて、全体に滑らかな感じになります。この画像処理は、ポリゴンに描かれる画素と同じです。キレイ原点は左下、もしくは右上。図3と比較してください。

図11
- 16×16に分割 32×32に分割
ペイスタ
2D作品
普通用紙で16×16の市松模様 普通用紙で32×32の市松模様
ポリスタスタンプ
(右ドラッグ拡大)
16×16の市松模様スタンプ 32×32の市松模様スタンプ

よって、例えば市松模様のスタンプを作ると、最も細かくしても16×16までになります。32×32の市松模様は、斜め線になってしまうからです。

重要なことは、ポリスタのスタンプは基本的に32×32ドットの小さな画像であるということです。細かく描き込んだ画像をペイスタから読み込んでも、必ず32×32に縮小されてから処理されます。ペイスタで作成した高解像度画像を、そのままスタンプにできるわけではありません。

勝手に押されるスタンプ

何も無い空間に向かってスタンプを押すと、カメラの移動・回転が停止した瞬間、モデルにスタンプが勝手に押されるバグが存在します。再現の手順は以下。

図12
画像 作業手順
画像でご覧下さい 下に見えるのは直方体のモデル。正面にはT字形モデルと三角錐。
代替文書省略 T字と三角錐の上から、スタンプを押す。つまり、モデルからスタンプをはみ出して押す。
代替文書省略 スタンプが押された様子。当然ながらT字と三角錐にスタンプが押される。
代替文書省略 カメラを回転して、直方体を正面に見据える。
代替文書省略 カメラの回転を停止して、視点を固定する。その瞬間、先程はみ出した部分のスタンプが勝手に押される。
代替文書省略 斜めから見た様子。モデルからはみ出して押されたスタンプが、勝手に押されたことがわかる。

このバグを回避する方法は、例えば以下の方法があります。

  1. スタンプを押すとき、モデルからスタンプがはみ出さないようにする。
  2. スタンプを押した直後にバクダンを押し、ペイント画面を出る。カメラを移動・回転してはならない。
  3. スタンプを押した直後に、消しゴムで何も無い空間や色を塗っていないモデルをクリックする。ただし、[全体を消す]以外のペン型消しゴムを使う。

このうち1.は犬アイコンでスタンプを押す前の状態に戻ることが可能です。2.と3.は戻れません。もう一つ注意せねばならないのは、スタンプをモデルからはみ出して押した直後に、犬アイコンを押してはならないことです。詳細は省略しますが、収集がつかなくなります。

画面の端で伸びるスタンプ

図13
画像
画面の端で延びたスタンプ

スタンプをモニタ画面からはみ出して押すと、不自然にスタンプが押されることがあります。図10の画像において、右は正常に押されたスタンプ。左は画面下にスタンプをはみ出して押したものです。この異常は画面下方向に限らず、上下左右全てにおいて発生します。スタンプを押すときは、モニタ画面からスタンプがはみ出さないように注意する必要があります。

突き抜けるスタンプ

図14
画像 作業手順
モデルの上に別のモデルを乗せて、上から大きなスタンプを押した様子 重なった二つのモデルにスタンプを押す。
スタンプが押された様子を斜めから観察。重なったモデルの陰になってスタンプが押されないはずの部分にまでスタンプが押されている 上のモデルの陰になった部分にもスタンプが押される。

スタンプがモデルを突き抜けて、向こう側のモデルにまで押されるバグがあります。スタンプの向こう側に、色を塗り終わったモデルがある場合は要注意。(厳密にはスタンプに限らず、ペンでも同様です。詳細は後述。)

特殊スタンプ

以下の手順で、「水彩ブラシ」「スプレー」「面を食べる」の扱いでスタンプを押すことができます。「勝手に押されるスタンプ」のバグ関連です。

  1. 任意のスタンプを用意。
  2. 何も無い空間に向かって、スタンプを押す(空押しスタンプ)。
  3. 「ペン」アイコンをクリックし、「水彩ブラシ」「スプレー」「色を食べる」のいずれかのアイコンを表示。
  4. カメラを回転して、空押しした部分にモデルを移動。
  5. カメラの回転が停止すると同時に、2.で選択したアイコンの方法でスタンプが押される。
図15
水彩スタンプ スプレースタンプ 色食べスタンプ
水彩スタンプ スプレースタンプ 色食べスタンプ

元スタンプはそれぞれ右下に押してある画像です。左から、地に色を塗った上に水彩スタンプを一回押したもの。スプレースタンプを三回重ねて押したもの。色食べスタンプを一回押したもの。水彩スタンプとスプレースタンプは、重ね押しすると濃くなります。

マスキング

半マスク

任意のポリゴンモデルに以下のマスキング操作をすると、不自然なマスクになります。ここでは「半マスク」と呼びます。

  1. マスキングする。
  2. スタンプ用2D作品読み込み画面へ。
  3. バクダンを押す。
  4. ペイント画面に戻る。
図16
画像
モデルの上に半マスクモデルを乗せて、ペンで線を描いた様子。半マスクモデルの陰になって線が途切れている。

図の画像では、中央の半マスクモデルの上からN字に赤い線を描いています。本来は途切れなく描かれるはずの線が、半マスクモデルの部分で途切れています。

半マスクモデルはマスクとしての役割を果たすことができません。また、半透明のまま[面の塗りぶし]ができます。モデルが半マスク状態になったときは、モデルのマスク状態を変化させると正常に戻ります。変化させるモデルは半マスクモデルでなくても構いません。

タレントスタジオの画像

少々話は逸れますが、タレントスタジオとの関係について。

ペイスタからタレスタムービーの背景画像を取り込む

タレスタペイスタの2D作品を取り込み、背景として利用できます。この背景画像の描画は、ポリスタのポリゴンペイントと類似しています。

図17
ペイスタ2D作品 ペイスタ2D作品
(虫眼鏡で拡大)
タレスタで撮影
タレスタに取り込んだペイスタ2D作品 ペイスタ画像を虫眼鏡で拡大 タレスタで背景画像を撮影

タレスタペイスタの普通用紙2D作品を背景として取り込み、画像の取り込みサイズを変更しなかった場合、タレスタの背景として使える画像サイズは128×128ドットです。上の例では、その中に市松模様や縞模様を描き込んでいます。縮小前のペイスタ2D作品はこちら(100kバイト)。

ポリスタのペイントと類似しているのがわかります。キレイ原点は左下、または右上です。タレスタはこういった工夫により、少ない画素の画像できれいな背景を表示しています。

参考・引用