ボクセル円ジェネレーター — ブロックで円・球・ドームを作る
自分だけのボクセル円ジェネレーターを作る
あらゆる直径で最も真円に近いボクセル/ピクセルの円を生成し、回転できる3Dブロックの球・ドーム・アーチとしてプレビューできます。無料、ログイン不要。
ボクセル円ジェネレーターは、ブロック単位の直径を受け取り、正方形のグリッド上で丸い形を作る正確なセルを返します。15を入力すると177ブロック、9を入力すると69ブロックになります。出力は画像ではなく座標リストなので、建築に貼り付けたり、買い物リストとして数えたり、他のビルダーに渡したりできます。無料、ログイン不要、エクスポート制限なし。
同じ直径が3Dプレビューにも使われます。平面のチャートは球・ドーム・アーチになり、何かを配置する前に回転できます。以下では、アルゴリズム、直径ごとの正確なブロック数、3つの輪郭スタイル、そして横幅およそ12ブロック未満で現れる不具合のパターンを説明します。
ジェネレーターの仕組み
ジェネレーターは正方形のグリッド上で円の方程式をサンプリングし、中心が半径の内側に入るセルを残します。直径Dに対してD×Dのグリッドを作り、グリッドの中心から各セルの中心までの距離を測り、dx*dx + dy*dy <= r*r(ここで r = D/2)のときにそのセルを塗りつぶします。アルゴリズムはこれだけです。比較は距離の二乗で行われるため、平方根は使われず、浮動小数点の丸めによって端のセルが1つずれることもありません。
Dはグリッドの中心がどこに来るかを決め、チャート間で変わるのはこれだけです。奇数の直径では中心がブロックの中央に来るため、オフセットは整数になります。D=15なら-7から7までです。偶数の直径では中心が4つのブロックが共有する角に来るため、オフセットは半端な数になります。D=8なら±0.5、1.5などです。したがって、ほぼ同じ大きさの2つのチャートはほとんど座標を共有せず、15のチャートに1行足して16のチャートにすることはできません。
この規則にランダムな要素はありません。どの直径も1つの固定された再現可能なチャートを生み出します。D=15は常に177セル、D=9は常に69セルです。リストを不具合報告に貼り付けたり、別のワールドで再利用したり、来月また見に来たりしても、座標は一致します。
議論の余地のある境界の同点は存在しない
よくある心配は、中心までの距離がちょうど半径に等しいセルを、<=で残すのか、厳密な<で除外するのかという点です。計算してみると、そんなことは決して起こりません。奇数の直径ではオフセットは整数で、r*rは.25で終わるため、整数の和がそれに等しくなることはありません。偶数の直径では両方のオフセットが半端な数なので、それぞれの二乗は.25で終わり、その和は.5で終わりますが、r*rは整数です。
どの直径でも両辺が等しくなることはないため、<=と<は同じチャートを返し、1つずれの不具合報告のたぐいは丸ごと消えます。本当の境界事例は別のところにあります。D=3は3×3グリッドの9セルすべてを、角も含めて返します。角の中心は中央から約1.414の位置にあり、半径は1.5だからです。D=3は正方形です。角が除かれる最初の直径はD=5です。
円 → 球 → ドーム → アーチ
2Dチャートは赤道のスライスであり、設置範囲でもあります。球を得るには、同じ判定を3次元で行います。各レイヤーについて、スライスの半径は(r*r - h*h)の平方根です。ここでhは球の中心からそのレイヤーの中央までの距離です。直径15の球は15レイヤーです。中央のレイヤーは177セルの円盤です。最上層と最下層はそれぞれ21セル、5×5の設置範囲になります。レイヤーの中心が球の頂点より半ブロック下にあるからです。
ドームは、その積み重ねを水平面で切ったものです。スプリングライン、つまり壁が垂直でなくなるレイヤーを選び、その上側のレイヤーだけを残します。直径15の球を赤道で切ると、高さ8レイヤーのドームになります。上位5レイヤーだけを残すと、底面のリングが13ブロックの円になる浅いキャップができ、キャップは幅15ではなく幅13の壁の上に載ります。
アーチは積み重ねではなく平板です。塗りつぶした円盤ではなくリングの輪郭を使い、好きな厚さだけ1つの軸に沿ってまっすぐ押し出し、スプリングラインより下をすべて削除します。幅15、厚さ3ブロックのアーチで、リングの下4列を除くと、高さ11ブロックになります。チャートが与えるのは幅とリングです。厚さとスプリングの高さは、別途設定する入力値です。
これが平面チャートとの違いです。ピクセル円チャートは設置範囲を示して終わりです。上部でシルエットが1ブロックに閉じるのか、それとも棚状に平らになるのかは分かりませんし、同じ直径のドームとアーチで必要な素材の量が違うことも示せません。ブロックを置く前にそれに気づく手段が、3Dプレビューの回転です。
- 円D×Dグリッド上の1つの円盤で、セルの中心はrの内側にあります。これが設置範囲であり、他のすべての赤道になります。
- 球各レイヤーで同じ判定を1回ずつ行い、スライス半径はsqrt(r*r - h*h)です。高さはDレイヤー、赤道での幅はDブロックです。
- ドーム選んだスプリングラインで切り取った球です。球の半分が一般的なケースで、浅いキャップにはより広い底面リングが必要です。
- アーチ輪郭のリングを1つの軸に沿って押し出し、スプリングラインより下を切り取ったものです。厚さと高さは独立した入力値です。
ブロック数と素材
塗りつぶした円盤のコストは、その内側のセル数そのものです。表はジェネレーターの出力であり、概算ではありません。1グリッドセルは常に1ブロックです。
ブロック数を買い物リストとして読む
D=15では塗りつぶした円盤は177ブロックで、マインクラフト風のインベントリでは64のスタック2つと49になります。D=16はちょうど3スタックになり、素材を運ぶときに偶数の直径が便利な理由の1つです。リングだけが必要なら、D=15は40セルまで減ります。同じシルエットに対して、塗りつぶした円盤は4倍以上の素材を消費します。
数値を動かすのは直径よりも素材の選択です。中実の円盤は地上から見ると平らに見えるため、多くの建築では塗りつぶしに1種類、40セルの輪郭にもう1種類のブロックを使います。つまり見た目のコストは輪郭で、塗りつぶしは余っているものを使えばいいのです。厚さ3ブロックの層では輪郭の数が3倍になります。中空の塔の土台は輪郭だけを使い、内部は空のままです。中実に建てるときにコストを払うのは、この内部です。
| 直径(ブロック) | 半径 | 塗りつぶしブロック数 | 64のスタック数 |
|---|---|---|---|
| 3 | 1.5 | 9 | - |
| 5 | 2.5 | 21 | - |
| 7 | 3.5 | 37 | - |
| 8 | 4 | 52 | - |
| 9 | 4.5 | 69 | 1スタック+5 |
| 11 | 5.5 | 97 | 1スタック+33 |
| 15 | 7.5 | 177 | 2スタック+49 |
| 16 | 8 | 192 | 3スタック |
3つの輪郭スタイル
スタイルは、線の太さとグリッド上の位置を決めます。塗りつぶしの数は変わりません。後から切り替えると軸上のすべてのセルが動くため、何かを配置する前にスタイルを選んでください。
偶数厚
偶数の直径(4、8、16、32)で使います。図形の中心が4つのブロックが交わる角に来るため、輪郭は両軸に対して対称ですが、線は上下左右で偶数ブロック幅になります。偶数のチャートはきれいに拡大でき、直径を2倍にしても比率が保たれます。大きな建築がこれに落ち着きがちなのはそのためです。
奇数厚
奇数の直径(3、5、9、15、31)で使います。中心がブロックの上に来るため、中央の列と中央の行がそれぞれ1本ずつあり、図形はそれらに対して対称です。小さいサイズで円に見えるのは奇数のチャートです。中央のブロックが、曲線を判断するための固定された中心を目に与えてくれるからです。
平坦な辺
平坦化した変種は偶奇を保ったまま、4つの基本方角それぞれにある極端な1セルを、平らな並びに置き換えます。D=9では、既定の奇数チャートは最も左に1ブロックを置きます。平坦化した変種では、その左端の列を高さ3ブロックにするため、シルエットは角の丸い正方形に見えます。円をまっすぐな壁、扉の枠、線路などに合わせる必要があるときに使います。平らな継ぎ目なら合いますが、1点では合わないからです。
01
横幅およそ12ブロック未満では、直径よりもスタイルが重要になります。D=3は正方形、D=5は角を切り落とした正方形、D=7は円に見える最小のチャートです。
02
その規模の井戸、塔の土台、噴水、植樹用の穴には、奇数厚スタイルで直径9か11の奇数を使ってください。
03
平坦な辺の変種は、まっすぐな縁に突き合わせる必要があるものに取っておき、ブロックを置く前にその縁を3Dプレビューで確認してください。
ボクセルの世界で建てる
チャートは、実際に建って初めて役に立ちます。3Dゲームビルダーは座標リストを配置パターンとして受け取るので、プレビューを生み出したのと同じ数値が、歩き回れるワールドのブロックを生み出します。エディターで曲線を手作業で導き直したり、対角線を目分量で測ったりする必要はありません。
プレビューは、平面チャートが隠してしまうものに気づく場所です。リングの1ブロックの欠け、上部付近で偶奇が入れ替わって棚を残すドームのスライス、プレイヤーが登れない斜めの階段などです。それらは画面上なら数秒で直せますが、100ブロック置いた後でははるかに手間がかかります。Mini Worldとサイクロプスの島はどちらもこの方法で作られました。まず平面図、次に立ち上げ、それから歩く、という順です。
円をブロックの形ではなく平らなスプライトとして欲しい場合、たとえばコイン、リングのカウンター、画面上のバッジなどでは、エージェント・スプライト・フォージが同じ半径を受け取り、ピクセル版をブロック版と一致させ続けるので、両者がずれることはありません。
01
直径と輪郭スタイルを選び、座標リストをコピーします。数値は取っておいてください。すべてのスライスで同じチャートを使いたくなるはずです。
02
3Dゲームビルダーで新しいワールドを開き、地面のグリッドを直径またはその倍数に設定して、設置範囲が半ブロックずれずに吸着するようにします。
03
まず輪郭のセルを置き、それから内側を塗りつぶします。輪郭を先にすると誤った座標がすぐに露呈し、塗りつぶしを先にするとリングを閉じるまでそれが隠れます。
04
図形を立ち上げます。壁や塔なら輪郭をまっすぐ上に押し出し、ドームや球ならレイヤーごとのスライス直径に差し替えます。
05
2つ目の素材を加える前に、地上からシルエットを確認します。真上から見ると、どんな円も正しく見えます。
06
プレイモードに入り、外周を歩きます。リングが厚さ1ブロックで背後に何もない場合、斜めの階段で衝突判定に引っかかります。
それが属する世界に分け入る
スプライトは、立つ場所のないキャラクターです。最後のステップは、他にはどこも提供していないものです。作ったばかりのシートを、誰かが歩き回れる世界に置いてください。小さな島、惑星、雨の降る街角などです。このサイトのすべてのワールドは、1つの文章による説明から作られ、遊べるページとして公開されました。
FAQ
ボクセル円ジェネレーターは無料で使えますか。 +
はい。ログインもエクスポート制限もなく、座標リストに透かしも入りません。出力はプレーンテキストなので、アカウントの背後に制限されるものは何もありません。
正確な1:1のブロックチャートが得られますか。 +
はい。どの直径でも1グリッドセルは1ブロックです。15ブロックの円は177セルを返し、177ブロックを置きます。チャートと建築の間に拡大縮小や丸めの処理はありません。
球やドームも生成できますか、それとも平らな円だけですか。 +
どちらも、同じ直径から生成できます。球は各レイヤーで半径の判定を行い、sqrt(r*r - h*h)をスライス半径とします。ドームは、選んだスプリングラインでその球を切り取ったものです。
奇数と偶数のどちらの直径を使うべきですか。 +
およそ16ブロック未満なら奇数です。奇数の直径は中心にブロックを置くので、図形は中央の行と列に対して対称になります。偶数の直径は中心が角に来て、4つの基本方角で目に見えてくびれます。
ボクセルとは正確には何ですか。 +
ボクセルとは3Dグリッドの1セル、つまり一定の大きさの立方体です。このチャートでは1ボクセルが1ブロックなので、セル数がそのまま素材の数として使えます。
マインクラフト風の建築にチャートを使えますか。 +
はい。各セルを1ブロックとして扱ってください。チャートは設置範囲、壁、塔の土台、噴水の縁、ドームのレイヤーとして機能し、セル数は素材リストとしてそのまま使えます。
3Dゲームビルダーに戻る
完成した31の3Dワールド、ゲーム、シーンが1ページに揃っています。そのすべてが遊べます。