Blenderで宝石を作る

[MYJLab Advent Calendar 2023](https://qiita.com/advent-calendar/2023/myjlab)の1日目の記事です！


# 何をするか
Blenderを使って宝石を作ってみようと思います。ノーマルなテクスチャではなく、輝きを持たせて本物に近づけてみようと思います。最後にChatGPTにも作ってもらいます。


# 形状を作成
立方体から形を変形させていきたいと思います。
画面上部にあるワークスペースで「Layout」を選択します。
![スクリーンショット 2023-11-19 20.38.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/935019/ae17875c-b4f2-f3c4-824d-12f2b1110ece.png)


次に、3Dビューにカーソルを持ってきて、「Shift+A」を押します。
「メッシュ」にカーソルを合わせ、「立方体」をクリックします。
![スクリーンショット 2023-11-19 20.39.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/935019/8635c6f0-b424-092e-7d59-aed6b4034bd0.png)

# モディファイアーを追加
次にモディファイアーのベベルモディファイアを追加します。モディファイアーとは、オブジェクト(今なら立方体)の形状を直接変更せずに、形を編集できる機能です。見た目は形が変わったように見えますが、実際のオブジェクトの形は変わっていないよという感じです。
今回はベベルモディファイアを使います。角を滑らかにするものです。
プロパティウィンドのレンチのマークをクリックします。すると「モディファイアーを追加」が出てきます。
![スクリーンショット 2023-11-19 20.52.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/935019/8212ecd7-a274-304a-a759-843c5db40f55.png)

「モディファイアーを追加」をクリックして、「生成」の列の上から2番目にある「ベベル」をクリックします。
![スクリーンショット 2023-11-19 20.56.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/935019/eadfed2d-ed6b-df2a-2482-a65e0ddfe078.png)

プロパティウィンドウに戻ると、ベベルモディファイアの詳細設定ができます。
今回は、幅を1.6、セグメントを3、側面を0.17、マテリアルを-1にします
![スクリーンショット 2023-11-23 20.10.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/935019/f3434f07-45c4-8400-844c-837b3b2c6a19.png)


# マテリアルの設定
次にマテリアルの設定をしていきます。3Dビューの右上に円が4つ並んでいます。右から2番目を選択し、
マテリアルビューに切り替えます。
![スクリーンショット 2023-11-23 20.16.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/935019/39dab12c-c58a-c8f6-cb49-e6317a04f202.png)

プロパティからマテリアルプロパティを選択して、新規作成をクリックします。
マテリアルは、オブジェクトの質感や色を設定するものです。
![スクリーンショット 2023-11-23 20.23.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/935019/44de5f35-873d-7ab0-6e59-5cf2082e3ae5.png)

名前は、今回は「HousekiColor」としました。
![スクリーンショット 2023-11-23 20.23.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/935019/7d499e03-0565-8741-d188-7ccf64754275.png)

プロパティをスクロールしていくと、粗さや伝播が出てくると思います。それらを設定していきます。
ベースカラーはお好みの色を設定します。粗さは0.0、伝播は1.0にします。
![スクリーンショット 2023-11-23 20.33.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/935019/4f72e60f-cbf0-3b71-0461-f46c97524b40.png)

レンダービューで見てみましょう。
ビューの右上にある4つの円、その中の一番右の円を選択します。するとレンダービューに変わります。
レンダープロパティのレンダーエンジンを「Cycles」に変更します。
![スクリーンショット 2023-11-23 20.52.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/935019/82338cc1-33a0-5bb3-9bdf-30526da88ac4.png)

すると光っているように見えるのですが、環境によって動作が遅くなる場合はあります。
これで完成です。


# 出来上がり図

![スクリーンショット 2023-11-23 21.01.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/935019/fb283276-b35b-2bbc-08c5-50aeda515b87.png)


3つ宝石を作って並べてみました
![スクリーンショット 2023-11-23 21.04.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/935019/05b8425e-f447-7305-224f-e0dccc933121.png)

# ChatGPTに聞いて作ってみる
:::note warn
注意
ここからは、新規ファイル作成をしてから実行します。コードによりますが、今まで作ってきた物が削除される可能性があります。
:::

ChatGPTにオブジェクトを作成して色をつけるスクリプトを聞いてみました。
BlenderではPythonが使えるので、Pythonのコードを聞いてみました。

<自分>
「Blenderで円柱を作成して、色はオレンジ色にします。このときのPythonのスクリプトを教えてください。」

< ChatGPT >
「以下は、Blenderで円柱を作成し、その色をオレンジに設定するPythonスクリプトです。」

```ruby:python.py
import bpy

# 新しいメッシュオブジェクトを作成（円柱）
bpy.ops.mesh.primitive_cylinder_add(radius=1, depth=2, location=(0, 0, 0))

# アクティブなオブジェクトを取得
obj = bpy.context.active_object

# マテリアルを追加
mat = bpy.data.materials.new(name="OrangeMaterial")
obj.data.materials.append(mat)

# マテリアルの設定
mat.use_nodes = False  # ノードを使わない場合
mat.diffuse_color = (1.0, 0.5, 0.0, 1.0)  # オレンジ色（RGBA）

# シーンの更新
bpy.context.view_layer.update()

```
上記のように返答が来ました。Blenderで実行してみます。画面上部にあるバーから「Scripting」を選択しコードをペーストとします。あとは右上にある「スクリプト実行」をクリックします。
![スクリーンショット 2023-11-23 21.36.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/935019/c27a5274-d0eb-7a69-0b55-2cd7fd89193e.png)

オレンジ色の円柱ができました！
![スクリーンショット 2023-11-23 21.38.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/935019/9efdb1f8-7d67-142b-517e-5516d05d2f11.png)




# まとめ
Blenderで宝石を作ってみようでした。マテリアルの設定項目はたくさんあるので、それぞれを調整していくと、また違う質感ができると思います。
ChatGPTで作った方も良い感じにできていたので、もう少し込み入ったモデリングも試してみたいと思いました。

1日目終了です。
ありがとうございました。
最後までよろしくお願いします！

# 参考文献
* 【次に学びたい】Blenderモデリングスキルアップ集中講座Part2

-過去のアドベントカレンダー -
* [MYJLab Advent Calendar 2022](https://qiita.com/advent-calendar/2022/myjlab)
* [MYJLab Advent Calendar 2021](https://qiita.com/advent-calendar/2021/myjlab)