[Blender×Python]   回転をマスターしよう!!

#目次

0.立方体を回転させよう
1.トーラスを回転させよう
2.サンプルコード
3.英単語まとめ


#0.立方体を回転させよう

##0-0.1つの立方体を回転させよう

 ◯１番シンプルな回転の方法です。

```.py
import bpy
#計算に必要なものがいろいろ入ってる
import math

#立方体を追加する関数
bpy.ops.mesh.primitive_cube_add(
    scale=(1, 1, 1),
    #引数の追加
    #math.piは180度のことなので math.pi * 1/6 = 30(度)
    #X軸を中心に30度回転させる
    rotation = (math.pi*1/6,0,0)
    )
```

![スクリーンショット 2020-11-12 13.28.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654004/36a4a4c1-ac03-7fb2-fd89-b6c84e15a330.png)




#0-1.立方体を回転させて並べよう

◯少しずつずらして配置していきます。

```.py
import bpy
import math

#100回反復処理をする
for i in range(0,100):
    bpy.ops.mesh.primitive_cube_add(
        #少しずつ上にずらす
        location=(0, 0, i/50),
        scale=(1, 1, 0.05),
        #180 * i * 10/360 = 5*i(度)ずつずらしていく
        rotation = (0, 0, math.pi*i*10/360)
        )
```

![スクリーンショット 2020-11-12 13.47.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654004/5f2cce57-e675-073f-0ce4-e882bb150d4b.png)

---


#0-2.色をつけてみよう

◯上記のコードの応用です。

```.py
import bpy
import math

#materialという変数を自分でつくる(materialは素材という意味)
material = bpy.data.materials.new('Red')
#色を定義する(R,G,B,A)
material.diffuse_color = (1.0, 0.0, 0.0, 1.0)

 #100回繰り返す
for i in range(0,100):
    bpy.ops.mesh.primitive_cube_add(
        #すこしずつ上にずらす
        location=(0, 0, i/50),
        scale=(1, 1, 0.05),
        #少しずつ回転させる
        rotation = (0, 0, math.pi*i*10/360)
        )
    #オブジェクトに自分で定義した色を追加する(appendは追加という意味)
    bpy.context.object.data.materials.append(material)
```


![red.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654004/038688a7-9ce4-ae5e-7f75-4d7732d768d7.png)






---

#1.トーラスを回転させよう


#1-0.トーラスを変形させよう

```.py
import bpy

#トーラスを追加する関数
bpy.ops.mesh.primitive_torus_add(
    location=(0, 0, 0),
    major_radius=1.0,
    minor_radius=0.01,
    rotation=(0, 0, 0)
    )
#Y軸方向に縮める
bpy.ops.transform.resize(value=(1, 0.3, 1))
```


![スクリーンショット 2020-11-12 15.05.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654004/15be32dd-0e05-d125-efa4-1f2b5c5908db.png)

---














#1-0.トーラスを回転させて並べよう

◯形を作った後に回転させる方法です。

```.py
import bpy
import math

for i in range(0,36):
    bpy.ops.mesh.primitive_torus_add(
        location=(0, 0, 0),
        major_radius=1.0,
        minor_radius=0.01,
        )
    #Y軸方向に縮める
    bpy.ops.transform.resize(value=(1, 0.3, 1))
    #Z軸を中心に回転する
    bpy.ops.transform.rotate(value=math.pi*i*10/360,orient_axis='Z')
```


![スクリーンショット 2020-11-12 16.21.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654004/d235182a-ef73-12a2-a221-cd632d6519cd.png)



#1-2.トーラスに色をつけよう

◯1つの軸を中心に回転させた後に、別の軸を中心に回転させています。


```.py
import bpy
import math

#材質の定義
material = bpy.data.materials.new('Red')
material.diffuse_color = (1.0, 0.0, 0.0, 1.0)

for i in range(0,36):
    for j in range(0,36):
        bpy.ops.mesh.primitive_torus_add(
            location=(0, 0, 0),
            major_radius=1.0,
            minor_radius=0.01,
            )
        #Y軸方向に縮める
        bpy.ops.transform.resize(value=(1, 0.3, 1))
        #Z軸を中心に回転させる
        bpy.ops.transform.rotate(value=math.pi*j*10/360,orient_axis='Z')
        #Y軸を中心に回転させる
        bpy.ops.transform.rotate(value=math.pi*i*10/360,orient_axis='Y')
        #自分で定義した赤色を使う
        bpy.context.object.data.materials.append(material)

```
![スクリーンショット 2020-11-12 17.28.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654004/95083a11-db0c-a9cb-dd9f-a49f2568f7c0.png)





#2.サンプルコード

####立方体を回転させるコード

```.py
import bpy
#計算に必要なものがいろいろ入ってる
import math

#立方体を追加する関数
bpy.ops.mesh.primitive_cube_add(
    scale=(1, 1, 1),
    #引数の追加
    #math.piは180度のことなので math.pi * 1/6 = 30(度)
    #X軸を中心に30度回転させる
    rotation = (math.pi*1/6,0,0)
    )
```


####立方体を回転させて並べていくコード


```.py
import bpy
import math

#100回反復処理をする
for i in range(0,100):
    bpy.ops.mesh.primitive_cube_add(
        #少しずつ上にずらす
        location=(0, 0, i/50),
        scale=(1, 1, 0.05),
        #180 * i * 36(度)ずつずらしていく
        rotation = (0, 0, math.pi*i*10/360)
        )
```

####並べた立方体に色をつけるコード


```.py
import bpy
import math

#materialという変数を自分でつくる(materialは素材という意味)
material = bpy.data.materials.new('Red')
#色を定義する(R,G,B,A)
material.diffuse_color = (1.0, 0.0, 0.0, 1.0)

 #100回繰り返す
for i in range(0,100):
    bpy.ops.mesh.primitive_cube_add(
        #すこしずつ上にずらす
        location=(0, 0, i/50),
        scale=(1, 1, 0.05),
        #少しずつ回転させる
        rotation = (0, 0, math.pi*i*10/360)
        )
    #オブジェクトに自分で定義した色を追加する(appendは追加という意味)
    bpy.context.object.data.materials.append(material)
```


####トーラスを変形させるコード

```.py
import bpy

#トーラスを追加する関数
bpy.ops.mesh.primitive_torus_add(
    location=(0, 0, 0),
    major_radius=1.0,
    minor_radius=0.01,
    rotation=(0, 0, 0)
    )
#Y軸方向に縮める
bpy.ops.transform.resize(value=(1, 0.3, 1))
```



####トーラスを回転させて並べるコード

```.py
import bpy
import math

for i in range(0,36):
    bpy.ops.mesh.primitive_torus_add(
        location=(0, 0, 0),
        major_radius=1.0,
        minor_radius=0.01,
        )
    #Y軸方向に縮める
    bpy.ops.transform.resize(value=(1, 0.3, 1))
    #Z軸を中心に回転する
    bpy.ops.transform.rotate(value=math.pi*i*10/360,orient_axis='Z')
```



####トーラスに色をつけて、2つの軸を中心に回転させるコード

```.py
import bpy
import math

#材質の定義
material = bpy.data.materials.new('Red')
material.diffuse_color = (1.0, 0.0, 0.0, 1.0)

for i in range(0,36):
    for j in range(0,36):
        bpy.ops.mesh.primitive_torus_add(
            location=(0, 0, 0),
            major_radius=1.0,
            minor_radius=0.01,
            )
        #Y軸方向に縮める
        bpy.ops.transform.resize(value=(1, 0.3, 1))
        #Z軸を中心に回転させる
        bpy.ops.transform.rotate(value=math.pi*j*10/360,orient_axis='Z')
        #Y軸を中心に回転させる
        bpy.ops.transform.rotate(value=math.pi*i*10/360,orient_axis='Y')
        #自分で定義した赤色を使う
        bpy.context.object.data.materials.append(material)
```




#3.英単語まとめ

| 英単語 | 日本語訳 |
|:-----------|:------------|
|import       | 輸入する/手に入れる| 
|math       | 数学|
|mesh|頂点、辺、面の集合|
|scale|大きさ|
|primitive|原始的な|
|add|追加する|
|rotation|回転|
|pi|π( = 180度)|
|range|幅|
|cube|立方体|
|material|素材|
|diffuse|拡散、散乱|
|context|文脈、環境|
|object|もの、物体|
|data|情報|
|append|加える、追加する|
|major|大きな|
|minor|小さな|
|radius|半径|
|transform|変換|
|resize|大きさの変更|
|axis|軸|
|orient|方向|
|rotate|回転する|
|rotation|回転|
|value|値|
|location|位置、座標|
|operation|運用、操作|