あらゆる角度の車と宇宙船のスプライト
見下ろし型レースゲームの車や、Asteroids風シューティングの船は、どんな向きにも回ります。エンジンで1枚のスプライトを回転させるとピクセルが崩れ、32方向を手で描くには何日もかかります。3Dモデルからなら、どの角度もレンダリングで済みます。

乗り物にこれほど多くの角度が必要な理由
見下ろし型RPGのキャラクターは4方向か8方向に歩くので、4面か8面あれば足ります。乗り物は違います。操縦するからです。角を曲がる車や、スティックで回る船は、その間のすべての向きを通るので、スプライトが8方向しか見せられないと、45度刻みの目に見える段差で次の向きに切り替わってしまいます。
ゲームはこれを3つのうちのどれかで解決します。
- エンジンで1枚のスプライトを回転させる。安上がりですが、ピクセルアートを回転させるとリサンプリングされます。90度の倍数以外では、線が崩れ、1ピクセルが2倍になったり消えたりし、スムージングをかけると縁がぼやけます。もうピクセルアートに見えなくなります。
- すべての角度を手で描く。見た目は正しいですが、大変な作業です。車の32方向に加え、ダメージ版、チームカラーごとの分。デザインを変えるたびに全部描き直しになります。
- すべての角度を3Dモデルからレンダリングする。1990年代のレースゲームやシューティングゲームがプリレンダリングスプライトで行っていたことで、Pixorはカメラのリングでこれを行います。
角度はいくつ必要か
| 角度 | ステップ | 向いている用途 |
|---|---|---|
| 8 | 45° | ゆっくり回る戦車やユニット、ストラテジーゲーム |
| 16 | 22.5° | 見下ろし型のレースやシューティングの多く、砲塔 |
| 32 | 11.25° | なめらかな操縦、自由に回る船 |
| 64 | 5.6° | 大きな乗り物のスプライト、ゆっくり正確に回る場合 |
スプライトが大きいほど角度が多く必要です。16ピクセルの船は近い2つの向きの間でほとんど変わりませんが、64ピクセルの車ははっきりとジャンプして見えます。
見下ろし、真上から
上から見る船や車には、見下ろしビューと側面のリングでレンダリングします。
pxr render race-car.glb --preset selout --view top-down --size 40 --ring 16 \
--clip none --export png,json -o car.png

--ring 16はモデルの周りにカメラを16台置きます。正面から反時計回りに1台ずつ、1方向ごとで、すべて同じサイズと同じピクセル/メートルのスケールを共有するので、車はどの向きでも同じ大きさで、固定された1つのピボットを中心に回ります。シートには方向ごとに1行あり、JSONが各行に名前を付けるので、ゲームは向きからフレームを選べます。--ringは1から64までで、--sides 0,10,20,...は代わりに自分で角度のリストを指定します。
アプリでは、アウトライナーの+でカメラを追加し、カメラの用途… › 見下ろし型シューティング(真上から、16方向、32px)を選ぶか、南カメラのビューを設定して、モデルの周りにリングで4、8、16、32方向のいずれかを使います。
レースゲーム用のビュー
アーケード時代の見下ろし型レースゲームは、斜めに見下ろしていることが多く、各角度で車の側面も見えました。レースカメラがそれを行います。12°の俯角、16方向、64px。
pxr render race-car.glb --preset selout --camera racing --clip none -o car-racing.png

動かないライト、車と一緒に回るライト
既定では、キーライトはカメラに追従します。どのビューでも同じ側にあります。見下ろし型のゲームでは、これが望ましいことが多く、どの向きも同じようにライトが当たり、スプライトはどこを向いていても同じに見えます。
ライトをワールドに固定したい場合、つまり太陽に背を向けた車の影の側がプレイヤーを向くようにしたい場合は、キーライトのカメラに追従をオフにします(--light-space world)。上のアニメーションは3つ目の方法を使っています。--turntable 32は、1台のカメラの下でモデル自体を32フレームのアクションとして1回転させるので、回るにつれて船体の上を光がすべります。
あらゆる角度でアニメーション
乗り物は回りながら動くことがよくあります。ホイールが回り、エンジンがちらつき、砲塔が追尾します。クリップを与えれば、すべての方向がすべてのフレームを持ちます。
pxr render spaceship.glb --preset selout --view top-down --size 48 --ring 32 \
--clip all --export png,json,godot
32方向ではシートがすぐ大きくなります。--max-height 4096は縦長のシートをページに分割し、クリップ単位で1ページに入れ、--dedupeは同じフレームを1回だけ保存します。ライブラリの宇宙船、レーシングカー、パトカーは、試せるCC0の無料モデルです。
バリエーションは無料
すべての角度が1つのモデルから出てくるので、バリエーションは描く手間がかかりません。--variant hit-flashはダメージ用のフラッシュ版を書き出し、--teamと--variant team:blueはチームカラーを塗り替え、--material-colourは車に新しい塗装を与えます。マニュアルのパレットのバリアントのセクションにすべて載っています。回転せず画面の上へ飛ぶ船については、シューティングゲームのスプライトを参照してください。
よくある質問
見下ろし型の車のスプライトには、何方向の回転が必要ですか?
なめらかな操縦には16が通常の最小値で、32ならほとんどの速度でなめらかに見え、64は大きなスプライトやゆっくり正確に回る場合に向きます。Asteroids風ゲームの船は16か32がよく使われます。16未満はぎこちなく見えます。
なぜエンジンで1枚のスプライトを回転させないのですか?
ピクセルアートを90度の倍数以外で回転させるとリサンプリングされ、線が崩れ、1ピクセルが2倍になったり消えたりし、フィルタをかけると縁がぼやけます。各角度でレンダリングすれば、どの向きでもくっきりした1ピクセルの線が保てます。
乗り物にもあらゆる角度のアニメーションを付けられますか?
はい。クリップがあれば、すべての方向がすべてのフレームを持ちます。船の推進炎のちらつきや車の回るホイールも、16方向で、方向ごとに1行あるシート1枚になります。