NFTで目につき始めた「ボクセル」。3次元CGツール「MagicaVoxel」を使ってみた

# MagicaVoxelでボクセルモデル作成

これまで題材にしていたBIやプログラミングと関係なく恐縮ですが、最近時間をかけて調べていた「ボクセル」について、メモしておきます。

「ボクセル」に関心を持ったのは、NFT（ノン-ファンジャブル トークン）のマーケットプレイスで、ボクセルを使ったコンテンツをいくつも見かけたからです。
メタバースでは、ボクセルキャラクターが走り回ったりしてます。
何らかのアルゴリズムを使って生成したモデルもあり、同様のことができないかと考えはじめました。
そのためにはまず標準的なボクセルコンテンツ作成手順を知らないと、と思ったワケです。

ボクセルを使った3次元CGツールでは、例えば[「MagicaVoxel」](https://ephtracy.github.io/index.html?page=mv_main)や、メタバース[「The Sandbox」](https://www.sandbox.game/jp/)から提供されている「VoxEdit」などがあります。
今回、「MagicaVoxel」を使ってみました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1143963/d33386c4-5d71-cc20-1819-29ce26caa540.png)

主に右側の「Brush」パネルの一部を試用し、どんな機能なのかを確かめました。
「Attach」「Erase」「Paint」と並ぶメニューの「Attach」（ボクセル追加）から始めました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1143963/8078cbf8-6d8f-8ab9-6937-9c21578b3e8f.png)

例えば「Attach」から呼び出せる機能は以下になります。

# Geometry Mode[L]

線を引くような感じでボクセルを配置できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1143963/63f53b05-d731-5ae3-e654-abbec2fd7ba9.png)

実際には2つの面に沿って描かれています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1143963/fac94d15-e969-f04c-abd7-f658f90048a8.png)

# Voxel Shader Mode[C]

ボクセルを1つ配置し、そこから放射状に広げるようにモデルを作成できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1143963/1417a0f2-f3c1-f0d7-8199-5c8e4443b674.png)

x軸とy軸方向に広げた状態です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1143963/9837a8fa-9147-5722-29aa-eb81744fb289.png)

z軸方向に動かすと立体的に盛り上げることができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1143963/b3204841-b9c5-f89c-48bf-f2c0c28f03f7.png)

# Pattern Mode[C]

登録してあるボクセルモデルを”ペン先”として配置できます

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1143963/cae3ac9b-3dba-3b82-4872-1c6d0aed9256.png)

右側のパネルからモデルを変更できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1143963/00f61496-70dd-9f3f-c369-f69f00e62dcb.png)

# Voxel Mode[V]

こちらは（現在の設定の中の）最小単位のボクセルを1つずつ配置できるモードです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1143963/06895f16-ce2c-4e47-0070-78133532ca8a.png)

# Face Mode[F]

閉じられた面を埋めることができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1143963/e0c54226-eb5c-278b-0af3-562aa62c6b82.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1143963/a68bb733-013e-67ab-7e34-88aaaea2d112.png)

# Box Mode[B]

箱状のブロックを作成できます。
まず平面を描き、別の面に沿って厚みを作ることでブロックを作成できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1143963/7e670747-1ba8-bec2-6c8d-f1c81ab1597d.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1143963/e9e1ad3c-7f47-324a-de5a-6d8fe96fa166.png)

# Transform

「Attach」「Erasw」「Paint」の下のパネルの6つのアイコンは「選択」系のツールです。
「Transform」は、空間内のオブジェクト全体を、クリックした面に沿って移動できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1143963/c79b3607-ab25-6ca5-4e22-abc7d18a2884.png)

モデリング画面からはみ出た場合は、その分は反対の面から出てきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1143963/538a7ca4-793d-d636-1740-525db894ca2c.png)

# Marquee Select

角い枠で囲った範囲のボクセルを選択できます。
モデリング時の視点（カメラ位置）で描いた四角が投影されたエリアが選択されます。
選択されたボクセルは白いエッジで識別できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1143963/67c03f0d-6d54-cb42-6040-115e0d54a328.png)

前述のTransformツールを使って移動できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1143963/6effeac1-4691-0de8-5d22-38806b9d203a.png)

# Rgion Selected

同じ色のオブジェクトを選択できます。
以下は赤い色のオブジェクトをクリックしで移動しています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1143963/cf90d982-912d-07e6-523d-bb8fa3dfb2f9.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1143963/4074f9b8-7770-5380-e6e0-87da6e2fa08f.png)

# Pick Voxel Color

よくスポイトと呼ばれる機能です。
オブジェクトをクリックしてその色を選択できます。
画面は、緑の棒をクリックして左のカラーパネルにその色が選択された状態になっています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1143963/06e4a5a0-5d9b-d11b-7ef7-9a7202c4db87.png)

# Region Remove

クリックしたオブジェクトと同じ色のオブジェクトを削除できます。
上記画面から赤いオブジェクトをクリックした結果です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1143963/7517a5a5-5225-e139-e0a5-3e4f6b39181a.png)

# Region Replace

クリックしたオブジェクトと同じ色のオブジェクトの色を変更できます。
例えば、先述のスポイト（Pick Voxel Color）機能を使い、赤いオブジェクトをクリックして赤を選択し、Region Replaceツールで緑の棒を1つクリックすると2本とも同じ色に変わります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1143963/7b8476f0-ea9c-f9bd-ab77-a45fc897775f.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1143963/ec5cffb7-8200-993c-3ec7-69e8f4cc1a94.png)

# Erase

これまでの機能を、ボクセルを消すEraseモードでも使うことができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1143963/5b871a01-2768-7921-2e00-36fd27d2f8f9.png)

**●Geometry Mode[L]**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1143963/264be68d-9b93-049e-bc72-1d7bd9d49ab1.png)　

**●Volume Shader Mode[C]**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1143963/c2927360-2ad1-9344-affd-187016e57ab7.png)

**●Pattern Mode[P]**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1143963/46e2a330-6c56-a626-74ae-f96248ae0605.png)

**●Voxel Mode[V]**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1143963/cc6cdc94-2748-43c2-ee9e-08b17d25b57a.png)

**●Face Mode[P]**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1143963/5b871a01-2768-7921-2e00-36fd27d2f8f9.png)

上面と下面をクリックして、数ボクセル分の平面を削除しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1143963/46f80d12-3d3f-c1c1-bf97-673c68d5cc74.png)

**●Box Mode[B]**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1143963/6fb10920-ac71-6a94-0610-6c4fb6e6fc9e.png)

# ミラー

あと、試用の早期で使いそうなのは「ミラー」。
下の画面はx軸（面）をのミラーを使い、ボックスのボクセルを一部を削除すると、x軸に対称の場所も同様に削除されています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1143963/2c6fc8c8-f1f6-449b-6d27-90a616f1f590.png)

複数の軸を選ぶこともできます。
x、y、z軸を選んで、Geometry Mode[L]を使い線上にボクセルを配置してみました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1143963/9f779fad-ef03-7dda-737a-3ebedf7bbca5.png)

まだ試していないたくさんの機能があるので、追々使いながら、NFTコンテンツのサンプルを作ってみようと思っています。

**了**