Blenderでメモリーの消費を抑えて快適にモデリングする6つの方法

# 初めに
昨日の内容は、少し重かったので今日はなるべく簡単にまとめられるようにします!

#なぜメモリーか

Blenderでモデリングをする際には、どのオブジェクトがどこに配置されていて、どのような形状になっていているかをPCのメモリーに保存しておきます。
そのため、PCのメモリーの大部分をBlenderが使ってしまうと、新たに何かを加えたり、操作したりする余裕がメモリーになくなり、モデリング中にPCの動きが悪くなったり、反応しなくなってクラッシュしてしまうことがよく起きてしまいます。PCの動きが悪いとストレスの原因になったり、せっかくのやる気が削がれてしまったり、時間を無駄にしてしまいます。もちろん、メモリーを増強すれば快適になるかもしれませんが、今回はメモリーを買わずに劇的に改善する方法、あるいわ少しでも改善できる方法を書いていきます。
![a9aa3251ca44457a8570b344d03aa857.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206272/c675ada5-4307-dc89-ff45-a31f6a98c602.jpeg)



##メモリーの確認方法と使用状況

Windowsの場合は、[この記事](https://121ware.com/qasearch/1007/app/servlet/relatedqa?QID=017771)に従って保有しているPCのメモリーを確認することができます。Blenderでモデリングをするためには、少なくとも16GBのメモリーは必要だと感じます。32GB以上あれば利用です。Blenderの公式が出している推奨のスペックは、[こちらから](https://www.blender.org/download/requirements/)確認できます。

## インスタンス化してコピーする

複数のobjectを生成する場合は、木や都市、蜜蜂など同じものからなる集合はShift + Dの独立したマテリアルとしてコピーするのではなく、Alt + Dでインスタンス化して複製しておけば、メモリーの使用量は、コピーする前とほとんど変わらなくなります。
しかし、Alt + Dでインスタンス化してコピーした場合は、オブジェクト同士が、独立した存在ではなくなるので、どれか一つの形を変えると、他のオブジェクトの形も変わってしまうというデメリットがあります。
## オブジェクトの表示をBounds(境界だけの表示)にする
ハイポリのオブジェクトも境界の点だけで表現できるので、かなりのメモリー節約になります。
オブジェクトのビューポートでの見た目の変更は、以下のようにできます。

<img width="248" alt="スクリーンショット 2019-12-02 10.12.51.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206272/923d98d6-ee75-0fd8-7442-8024f33564a8.jpeg">

<img width="300" alt="スクリーンショット 2019-12-02 10.39.50.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206272/176f32f2-2d77-b405-b07d-0d8ab497e6d0.jpeg">
<img width="300" alt="スクリーンショット 2019-12-02 10.39.27.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206272/34180c0f-250f-f755-659f-d57346a4920e.jpeg">


## Modifierを利用する
実際にマテリアルを変形するのではなく、Modifierを利用する方法です。Modiferの場合は、事前に用意されている関数をメッシュに適応するだけなので、Modifierの切り替えが簡単に可能です。普段のモデリングの際は、Modifierをオフにしておき、実際のレンダリングの際にだけModifierをオンにすることで、スムーズにモデリングができるはずです。

## simplifyを利用する

オブジェクトのサブディビジョンが多いとメッシュが細かくになり、より多くのメモリーが必要になります。しかし、レンダリングをする際に、オブジェクトの裏側(カメラに映らない部分)は、必ずしも細かい構造が必要ではありません。simplifyで不必要なsubdividionを荒くすることができます。
<img width="248" alt="スクリーンショット 2019-12-02 10.13.35.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206272/2a76e362-6fe6-002b-387b-251bcb278e99.jpeg">


## ローカルViewを利用する
これは、複数のオブジェクトが存在している時に、特定のオブジェクトのモデリングを行う際にゆこうな方法です。キーボードの / を押すことで、選択されているオブジェクトだけをビューポートに表示できます。

## 外部ファイルをLinkする

この方法は、前述のインスタンスに近い。利用したいオブジェクトを含むblenderファイルでまず作業をする。初めに、利用するオブジェクト郡をグループにして、ビューポートのaddタブからCollection instanceを選ぶ。こうすることで、コレクションのまとまりでインスタンスかができる。(例えば、木の葉と幹、枝がそれぞれ異なるオブジェクトの時などに有効である)

![_2019-11-12_17.00.54.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206272/04f191f3-c155-c89c-3184-b70cf1874f6b.jpeg)

次に、実際にそのオブジェクトを利用したいファイル側で、先ほどのblenderファイルをLinkする。

![_2019-11-12_17.00.10.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206272/9029fb02-46a7-3a0d-571e-af0649280c5c.jpeg)

![_2019-11-12_17.00.19.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206272/cc9910ec-fe7a-ff23-77ef-bd40b94a8dde.jpeg)

最後に、先ほどインスタンス化したファイルから、コレクションを選択しインポートします。

この作業をすることで、複数の木などを利用する際に、かなり軽い状態でblenderの他の操作ができる。

# 最後に
実際に試してみることでその効用がわかると思います。PCが重いなっと感じた際は、一度やってみてください!

# Reference

http://thilakanathanstudios.com/2014/11/6-ways-to-reduce-memory-when-using-blender/

https://www.intel.com/content/www/us/en/architecture-and-technology/optane-memory.html