SVGの画像をBlenderに読み込もうとするとき、様々なトラブルが起こることがあります。画像が真っ黒になってしまった、パスがおかしくなってしまった…など。
自分が遭遇したトラブル・問題をまとめ、解決方法を紹介していきます。
できるだけ、SVGをインポートしたときのBlenderの挙動やデータがどう変換されているかなども解説しながら説明していきたいと思いますので参考にしていただければと思います。
この記事は、BlenderでSVGデータをインポートしたときに起こるトラブルを解決する方法を解説した初心者向けの記事です。
難易度
SVGインポートによって起こる各種トラブル
以下のようなトラブルでの解決法を解説しています。
- SVGの色の情報がなくなった
- SVGの色が真っ黒になってしまう
- SVGの色が光の影響を受けてしまう、色が暗くなる
- SVGのオブジェクトが重なってしまう
- SVGのパスの線の色が消えてしまった
- SVGのパスの形がおかしい
まずはBlenderのSVGインポート形式を以下で説明します。この仕組みが分かった方が、トラブルが起こった原因が理解でき解決しやすいです。以下のセクションを読んだ上でそれぞれのトラブル解決のセクションを読むことをオススメします。
SVGインポートの形式
SVG画像をインポートするやり方は2つあります。
- グリースペンシルとしてインポート
- SVGとしてインポート
インポートしたあと、グリースペンシルオブジェクトになるか、カーブオブジェクト(SVGとしてインポート)になるかという違いがあります。


2つのオブジェクトの大きな違い
グリースペンシルオブジェクトは面とストロークそれぞれの情報とマテリアルを持ち、見た目が保たれますが、SVGとしてインポートした場合2Dか3Dのカーブオブジェクトになるので見た目が変更されてしまいます。
線の情報があるときは、グリースペンシルとしてインポートした方が見た目を保ったまま読み込むことができます。
グリースペンシルオブジェクト

特徴
塗りと線の情報を持っている他に、レイヤーという構造を持っています。アニメーションさせる際にもレイヤー単位で動かすことができ便利です。

カーブオブジェクト

特徴
面は2D、線は3Dのカーブオブジェクトに変換されます。両方の情報は持てないので面の輪郭線があった場合、無くなってしまいます。
線の太さなどの情報もなくなるので、再現しようと思ったら自分でストローク用のカーブをコピペして作ったり、Bevelなどで線の太さを調整する必要があります。
❶SVGの色の情報がなくなった
表示・プレビューモードを変更する

表示モードがSolid(ソリッド)モードだとマテリアルの色が表示されません。
ビューポート右上の表示モードアイコンを変更して、マテリアルプレビューやレンダリングプレビューモードに変更しましょう。
Blenderが読み込めないデータ、色情報

左図のようなSVGデータを作って読み込んでみました。
マスクは星型の形にマスクで切り取ったもの、複合パスは円二つを重ねて小さい円で切り取ったものです。
グリースペンシルとしてインポートした場合

グリースペンシルで読み込んだ場合
- グラデーション…×
- 半透明…〇?
- 乗算…×
- マスク…×
- 複合パス…×
- フォント…▲
結構読み込めない表現が多いです。フォントは複合パスで穴が開いてるところがふさがれてしまっています。半透明は微妙に色が違うかなぁと思ったんですが、一応読み込めていますね
SVGとしてインポートした場合

SVGで読み込んだ場合
- グラデーション…×
- 半透明…×
- 乗算…×
- マスク…×
- 複合パス…〇
- フォント…▲or〇
意外と複合パスが読み込めていたり、フォントも書体によってはちゃんと読み込めています。どんなデータかにもよるかもしれませんが、このような結果になりました。
グラデーション、乗算など再現したい場合は、Blender上でマテリアルにグラデーションを自分でつける必要があります。マスクや複合パスはできるだけシンプルなパスに変換して読み込んだ方が良いようです。
マテリアルプレビューにしたり、特殊効果をかけてないのに色が無くなってしまっている場合は、どこかでデータが破損していたりSVGデータの色の記述の仕方がおかしくなっている可能性があるので、❷の「色が真っ黒になってしまう」のセクションを見てください。
❷SVGの色が真っ黒になってしまう

BlenderではSVGがきちんと読み込めないことが結構多いです。
特に自分で作ったデータじゃなくて、ネットで素材をダウンロードしてくると色が黒くなってしまうことがよくあります。
Blenderは特定のSVGのコードじゃないと読み込めない
例えば、通常のSVGの書き方が以下のようなものです。fillやstrokeなどで色をつけてます。このような書き方だとBlenderは色情報を読み込むことができます。
<circle cx="50" cy="50" r="40" fill="#ff0000" stroke="none" />これを、以下のようにも書けます。が、BlenderはインラインCSSで色をつけたSVGを読み込むことができません。style=~と書いてあるところで色を付けてます。
<circle cx="50" cy="50" r="40" style="fill:#ff0000;stroke:none;" />この書き方以外にもSVGには様々な記法があって、ちょっとしたことでBlenderが読み取れなくなってしまうようです…。
修正方法
「この方法なら絶対直る」というものではなく、以下の複数の修正方法をいろいろ試してみて直すのがいいと思います。SVGの修正は他のソフトが必要になるケースが多いので、何かベクター素材を編集できるソフトやアプリをインストールしておくことをオススメします。
①Inkscapeで修正する
無料のベクター画像編集ソフトのInkscapeで直すことができます。一回SVGデータを開いて、保存時に

ファイルの種類を最適化SVGにします。

オプションが出てくるので、CSS属性をXML属性に変換するにチェックが入ってることを確認してOKを押します。
②Figmaで修正する

なぜかはわかりませんが、1回Figmaのボードに貼り付けてSVGで書き出しすると直る場合があります。①でも直らない場合こちらを試してみてください。
書き出しの形式をSVGにして書き出しボタンを押すだけです。
※Figmaも無料で使えるデザインツールです。(有料プランもありますがこの修正に関しては無料部分でできます。)
③ChatGPTに修正してもらう
最終的にどうにもならなかったらSVGデータをChatGPTさんに見てもらって、CSSやクラスなどの記法を除去して通常のSVGの記法に直してもらうと良いかと思います。(他のAIでも構いません)
他のソフト・サービスでは…
Adobe Illustratorはバージョンが古かったりするとSVGを読み込んでも真っ黒になってしまってダメでした。新しいバージョンではうまくいくかもしれませんが検証できていません。
オンライン上のSVG圧縮サイトのSVGOMGでも修正できないか試してみましたが、Styleタグがうまく消せなくてダメでした…。
❸SVGの色が光の影響を受けてしまう、色が暗くなる

左の画像を見てもらうとわかると思うんですが、Blenderのデフォルト状態ではライトが1つ付いていて、隣のスザンヌのオブジェクトに光が当たっているような暗さになっています。SVGも同様に暗くなってしまいます。(画像はレンダリングプレビューで見ています)
グリースペンシルとして読み込んだ場合

グリースペンシルとして読み込んだ場合は修正が簡単です。
オブジェクトデータプロパティ内にあるレイヤー下のLightsのチェックを外すと光の影響を受けないようになります。
SVGとして読み込んだ場合
- マテリアルにEmissionをつける
- レンダーパスを使う
2つの方法があります。1は簡単ですがめんどくさいです。

1. マテリアルにEmissionをつける
カーブのオブジェクト1つ1つのマテリアルの設定にEmissionをつけていくと、ライトを消しても色が見えるようになります。
ただ色を付け直しのような作業になるのでめちゃくちゃめんどいです。
2. レンダーパスを使う

ビューレイヤープロパティの DiffuseのColorにチェックを入れます。

CompositingエディタでレンダーパスのDiffCol出力を使えば色情報だけをレンダリングすることができます。
❹SVGのオブジェクトが重なってしまう
グリースペンシルとしてインポートしたとき

編集モードに入り、個別のカーブをLなどで選択します。
上部メニュー Stroke > Move to Layer > New Layerでそのカーブが入った新しいレイヤーを作成します。

オブジェクトデータプロパティのレイヤーを見ると、新しいレイヤーが作成されています。右の▲▼アイコンで順番を入れ替えることができます。
ここでレイヤーを作っていくのが大変という場合は、Inkscapeでレイヤーをわけてからインポートすると、レイヤー構造が保持されたまま読み込まれます。
SVGとしてインポートしたとき

カーブの面が重なってしまうと、表示がおかしくなってしまうことがあります。
レンダリングでは問題ないこともありますが、作業がしづらいときは、面が重ならないよう面の高さを1つ1つ少しずらすときちんと表示されます。
❺SVGのパスの線の色が消えてしまった

上記のSVGのインポート形式のセクションでも触れましたが、SVGとしてインポートすると、面の輪郭線が描かれてるようなSVGのデータでは、線の情報はなくなります。
これを修正するには、カーブをコピーし、線の太さなどを自分で調整してまた作り直す必要が出てきてしまいます。なので、線や輪郭線があるSVGデータの場合はグリースペンシルとしてインポートすることをオススメします。
❻SVGのパスの形がおかしい
グリースペンシルとしてSVGをインポートしたとき

例えばグリースペンシルとしてSVGをインポートしたとき、左図のようにパスがおかしくなっていて、画像が変形されている場合があります。
グリースペンシルとして変換された際に頂点やベクターのパスが少し変更されてしまうことがあるようです。

単純にパスが交差していたりする場合は手でも直せますが、上の図の場合は単純に直すことができません。
解決法としてはジオメトリーノードのResample Curveノードでポイントの配置を変えることです。
Resample CurveノードのLengthでカーブ上のポイント間の距離を設定すると、ほぼ画像の変更はないまま、パスの乱れを修正することができます。
SVGとしてインポートしたとき
グリースペンシルとしてインポートしたときにパスがおかしくなっていても、SVGとしてインポートしたら問題がないこともあります。
SVGとしてインポートしたときにもパスがおかしくなっていて見た目が崩れていたら、グリースペンシルのときと同様にカーブ上のポイント位置や解像度などを変更して修正します。

具体的には、カーブのオブジェクトデータプロパティ画面で、解像度を変更します。
Shape > Resolution Preview Uの数値を変更してみてください。
まとめ
SVGのデータの作り方が多様なので、どうしても読み込むときに問題が起こりがちになってしまいます。
トラブルが起こりにくいようにするには
- できるだけ自分でSVGデータを作る
- Inkscapeなどでレイヤーをまとめたり、準備をしたデータを作る
- グラデーションや乗算、複合パスなど特殊な効果を避ける
などに気を付けるといいのではないかと思います。


コメント