バーチャル3Dクリエイター神部まゆみです(*^_^*)
今回はCodexにBlenderの「カーブ」を使って、VRChatの部屋に飾るハート型のネオンサインを作ってもらいました。
↓こんな感じのネオンサインを作って私のVRChatワールドに飾ってみました。

動作確認した最新バージョンはBlender 5.2.2 LTS、Unity 2022.3.22f1、VRChat SDK – Worlds 3.10.5です。
Blenderのカーブとは?メッシュとの違い
カーブは、いくつかの「制御点」と、その点での曲がり方を使って線を作る機能です。今回使うベジエカーブには、制御点から伸びる「ハンドル」があります。点の位置を変えるだけでなく、ハンドルの向きや長さでも線の形を調整できます。
一方、メッシュは頂点・辺・面を組み合わせて形を作ります。箱やキャラクターのように、面の形を細かく作りたいときに使います。カーブは、まず線の流れを決めたいものに向いていますね。
| 比べるところ | カーブ | メッシュ |
|---|---|---|
| 編集するもの | 制御点とハンドル | 頂点・辺・面 |
| 得意な形 | チューブ、コード、曲線の輪郭 | 箱、複雑な立体、面の作り込み |
| 太さの調整 | ベベルの深度でまとめて変更 | 面の配置やモディファイアなどで調整 |
| 今回の使い分け | 編集用のハート原本 | Unityへ渡す形状 |
たとえば電源コード、ホース、手すり、飾りの輪郭、ネオンサインなど。曲がり方を変えながら太さを一定に保てるので、最初から大量の頂点を動かさずに済むのが便利です。
ただし、カーブならゲーム内でも点の数だけで表示できる、というわけではありません。今回はUnityへ持っていく前にメッシュへ変換し、その結果の三角形数も確認しました。
Blenderでカーブを追加する方法
ここからは初期画面で試した基本操作です。マウスカーソルは、特に指定がなければ中央の3Dビューポート内に置いてください。別のエリアにあるとショートカットの動作が変わります。
- 3Dビューポート左上が「オブジェクトモード」になっていることを確認します。
- その横の「追加」をクリックします。
- 「カーブ」に進み、「ベジエ」をクリックします。

「追加 → カーブ → ベジエ」。円やパスもありますが、今回はベジエを使います。
追加すると、右上のアウトライナーに「ベジエカーブ」が表示されました。最初の線は細く、初期のキューブの中に隠れていました。「追加できていない?」と少し迷うところです。
そこで、カーブが選択されたまま、テンキーの / でローカル表示に切り替えました。選択中のものだけを表示できます。続いてテンキーの 7 で真上から見ると、線を確認しやすくなります。テンキーの小数点で選択物へズームもできます。

初期状態では、まだチューブではなく細い線です。ローカル表示は、もう一度テンキーの / を押すと戻ります。テンキーがない場合は、ビューポートの「ビュー」メニューで視点やローカルビューの項目を探してください。この代替メニュー経路は今回のGUI検証には含めていません。
カーブの曲げ方・制御点の操作方法
Tabキーで編集モードにする
カーブを選択して Tab を押すと「編集モード」になります。画面に現れた線の両端が制御点です。その点から伸びている直線と端の小さな点がハンドルです。

制御点とハンドルの端は別のものです。中央の点を動かすのか、ハンドルの端を動かすのかを見分けるところから始めます。
制御点を選んで移動する
- 右側の制御点を左クリックします。
Gを押します。- マウスを上へ動かします。
- 左クリックして確定します。取り消したい場合は
Escです。

今回はトップビューで右の点を上へ動かしました。制御点の移動に合わせて、ハンドルも一緒に動いています。オブジェクトモードでのGはカーブ全体の移動なので、点を変えたいときは編集モードかどうかを確認しましょう。
ハンドルで曲がり方を変える
次は、右の制御点から右へ伸びているハンドルの端をクリックします。G を押して斜め上へ動かし、左クリックで確定しました。

点の位置は同じでも、線の入り方が変わりました。ハンドルの向きは曲線が向かう方向、長さはその方向への引っ張られ方を調整する、と考えると試しやすいです。今回の状態では反対側のハンドルも連動しました。ハンドルの種類によって動き方は異なります。
Eキーで制御点を増やす
端の制御点を選び直して E を押し、マウスを右下へ動かして左クリックしました。端から線が伸び、新しい制御点が追加されます。

点を増やせば、曲げられる場所も増えます。ただ、最初から増やしすぎると形を把握しづらくなるので、必要な場所から追加するとよさそうです。
輪にしたいときは閉じる
編集モードで A を押して点を全部選び、Alt + C を押すと、最初と最後の点の間にも線が付きました。今回の画面では操作名は「ループ切り替え」です。

これで閉じた線になります。同じ操作で開いた線にも戻せます。閉じただけでは、ハートなどの目的の形にはならないので、つなぎ目のハンドルも調整します。
カーブに太さを付ける方法
線をチューブにする設定は、右側のプロパティにあります。
- 緑色のカーブのアイコン「オブジェクトデータプロパティ」をクリックします。
- 「ジオメトリ」を開きます。
- 「ベベル」で「丸い」を選びます。
- 「深度」の数値をダブルクリックし、
0.03と入力してEnterで確定します。

細い線に太さが付きました。ここでの0.03mは半径に相当するため、点ごとの半径とオブジェクトのスケールが1なら、直径は約0.06mです。この練習用のカーブは大きいので、後半の完成品ではもっと細い値にしています。
「解像度」は断面の丸さに関係します。上げるほど滑らかになりますが、メッシュにしたときの面数も増えます。カーブ方向の細かさを決める「プレビュー解像度 U」とは別の設定です。
カーブを使ってハート型ネオンサインを制作
基本操作が分かったところで、ハートを作ってみます。ここからはCodexがPython APIで制御点とハンドルの座標を設定しました。前半で試した「点で輪郭を作る・ハンドルで曲げる・閉じる・太さを付ける」を数値で組み立てたものです。
8個の制御点で輪郭を作る
ハートはX/Z平面に置き、Yはすべて0にしました。上のくぼみから右回りに8個の制御点を並べ、最後の点と最初の点を閉じています。
| 場所 | X(m) | Z(m) |
|---|---|---|
| 上のくぼみ | 0 | 0.20 |
| 右上の山 | 0.22 | 0.34 |
| 右の外側 | 0.38 | 0.16 |
| 右下の途中 | 0.24 | -0.09 |
| 下の先端 | 0 | -0.34 |
| 左下の途中 | -0.24 | -0.09 |
| 左の外側 | -0.38 | 0.16 |
| 左上の山 | -0.22 | 0.34 |
手作業で練習するなら、端の点をEで伸ばしながらこの順序を目安に配置し、ハンドルで輪郭を整える流れです。前半は上から見ましたが、今回は縦向きのX/Z平面なので、正面から見て調整します。なお、このハートの8点を順番に手で入力する工程自体は、今回のGUI検証対象ではありません。

上の山は左右へ伸びるハンドルで丸くし、くぼみと下の先端では左右のハンドルを別々の方向に向けています。全部を同じ滑らかさにすると、尖らせたいところまで丸くなってしまうためです。原本には自由に方向を設定できるFREEハンドルを使いました。
同じ形を正確に再制作できるように、左右のハンドルも含む座標と生成処理は制作スクリプトに保存しています。編集用のカーブは残し、Unity用には別のメッシュを作りました。学習用コピーではカーブだけを表示し、ハンドルをすぐ確認できるようにしています。
直径18mmのチューブと取り付け板
完成品のベベル深度は0.009m、直径は18mmです。ベベルの解像度は1、カーブ方向のプレビュー解像度とレンダーUは8にしました。
取り付け板は幅88cm、高さ80cm、厚み2.5cm。チューブと板の間には、小さな取り付け部分を3か所追加しました。カメラや撮影用の壁はFBXには含めていません。

これはソリッド表示です。ここでは形や隙間を確認し、発光の見た目はレンダリングで確認しました。
発光マテリアルを設定する
Blender側はPrincipled BSDFの発光色をピンク系、発光の強さを5に設定しました。値はPython APIで設定しています。発光を設定しても、ソリッド表示で自動的ににじむわけではありません。
完成画像ではCyclesでレンダリングし、コンポジターのGlare(Fog Glow)で光のにじみを追加しました。Blender 5.2ではGlareの種類などをノードの入力ソケットに設定する形式になっており、以前のPythonコードをそのまま使うとエラーになりました。実際の入力項目を調べて修正しています。
ここで作ったBlenderの発光や合成処理が、そのままFBXに入ってUnityでも再現されるわけではありません。Unity側のマテリアルは別に設定しました。
完成したオブジェクトを紹介
完成したハートは、板を含めて幅約88cm・高さ80cmです。小物というより、壁に掛ける室内装飾くらいのサイズになりました。
| 項目 | 今回の結果 |
|---|---|
| ハートの幅・高さ | 約77.6cm・69.6cm |
| チューブ直径 | 18mm |
| チューブの三角形数 | 768 |
| 板と取り付け部分の三角形数 | 432 |
| 合計 | 1,200三角形 |
| メッシュ・マテリアル | 各2種類 |
| 追加テクスチャ・リアルタイムライト | なし |
三角形数は設定値からの推定だけでなく、変換後のBlenderメッシュとUnityに読み込んだ結果の両方で1,200と確認しました。UnityではUVや法線の境界で頂点が分かれることがあり、頂点数はBlenderの集計と一致していません。
近づくとチューブに少し角張りは見えます。壁飾りとしての見た目と面数の両方を考えて、この設定にしました。実際のQuestでの負荷は、この数字だけでは判断できません。
VRChatで実際に使ってみた
お、なかなか良い感じかな。文字のネオン看板とか作ると面白そう。
まとめ
案外簡単に作れて良かった。
カーブは「線を作ってから太さを付ける」と考えると、コードやネオンサインのような形を作るときに使いやすかったです。
今回GUIで試した基本操作は、ベジエを追加する、Tabで編集する、制御点やハンドルをGで動かす、Eで点を増やす、Alt+Cで閉じる、ベベルの深度で太さを付ける、という流れでした。
また何かあれば追記します(*^_^*)


