6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

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

Last updated at Posted at 2020-11-12

目次

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

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

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

◯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

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


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


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


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

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

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 運用、操作
6
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?