Takunojiの日記

自分が勉強したプログラム技術メモ

Blender Control 〜オブジェクトの変形を頭から〜

前回は、さらっとオブジェクト作成したり変形したりました。

takunoji.hatenablog.com

そして、仕切り直して頭から行きます。
今回は、3Dビューの右端→f:id:Takunoji:20180322220410p:plainを上から下へ引っ張り上部にコンソールを開きます。一番下の「Python Console」をクリックします。下のようになるはずです。

f:id:Takunoji:20180322220531p:plain f:id:Takunoji:20180322220707p:plain

1:とりあえず、画面上の立方体(Cube)を削除します。
>> ob = bpy.data.objects['Cube']
>> bpy.context.scene.objects.unlink(ob)

2:板を作成します。(Plate)
>> bpy.ops.mesh.primitive_plane_add()
{'FINISHED'}

f:id:Takunoji:20180322222547p:plain

3: 板を縦にします。
・選択しているオブジェクトを確認
>> bpy.context.object
bpy.data.objects['Plane']
・オブジェクトを縦にします。
>>> bpy.ops.transform.rotate(value=math.radians(90), axis=(0,1,0))
{'FINISHED'}

中途半端ですが、ここで中断します。

f:id:Takunoji:20180323204620p:plain


一応、ここまでのコマンド入力結果を以下に示します。
--------------------------------------------------------------------------

>> ob = bpy.context.object
>>> bpy.context.scene.objects.unlink(ob)
>>> bpy.ops.mesh.primitive_plane_add()
{'FINISHED'}
>> import math
>>> bpy.ops.transform.rotate(value=math.radians(90), axis=(0,1,0))
{'FINISHED'}

--------------------------------------------------------------------------

ちょっと寄り道ですが、 緑色の業に関して、
math.radians(90) → 角度(自分らのわかる値)を数値(パソコンのわかる値)に変換します。

axis →タプルを設定しますが、(X軸, Y軸, Z軸)で「1」の部分を変更します。
   上の実行したコードはY軸に「1」があるのでY軸を中心に90度変更する
   という処理になります。

次はテクスチャを貼ります。
1. マテリアルを取得します。
名前の部分(TestMaterial)を用意されているものにしないとエラーになります。

f:id:Takunoji:20180323205942p:plain

>> mat = bpy.data.materials['TestMaterial']
Traceback (most recent call last):
File "<blender_console>", line 1, in <module>
KeyError: 'bpy_prop_collection[key]: key "TestMaterial" not found'

取得したマテリアルを変数に代入します。
>>> mat = bpy.data.materials['Material']
同様にマテリアルのテクスチャスロット追加して変数に代入
>>> slot = mat.texture_slots.add()
そしてテクスチャを変数に代入
>>> tex = bpy.data.textures.new("Kamon", 'IMAGE')

さらに、イメージファイルを読み込み
>>>img = bpy.data.images.load("~/BlenderPython/img/家紋/mouri-motonari-kamon.png")
そして、テクスチャにイメージを設定
tex.image = img
スロットに設定
>>> slot.texture = tex

マテリアルをオブジェクトに設定
>>> ob.data.materials.append(mat)

f:id:Takunoji:20180323223602p:plain

イメージが横向きになっているのがイマイチだが。。。一応完了!

※2018/03/23=>想定通りに行きませんでした、テストのキャッシュが残っており上記のように表示されていました。

→ob = bpy.context.objectをもう一度実行することでテクスチャが貼れます


以下は、今日叩いたコードです。
>> ob = bpy.data.objects['Cube']
>> bpy.context.scene.objects.unlink(ob)
>> bpy.ops.mesh.primitive_plane_add()
>> import math
>> bpy.ops.transform.rotate(value=math.radians(90), axis=(0,1,0))
>> mat = bpy.data.materials['Material']
>> slot = mat.texture_slots.add()
>> tex = bpy.data.textures.new("Kamon", 'IMAGE')
>> tex.image = img
>>> slot.texture = tex
>>> ob.data.materials.append(mat)

今日はここまでにします。