オブジェクトを読み込んでコピーして並べる(Blender)

bl-sort-001

映画『ラブ&ピース』(2015) 長谷川 博己/麻生 久美子/西田 敏行

主人公が会社の同僚上司、街中の人、電車の中の人、テレビのコメンテーターからも馬鹿にされている、冒頭部分は全く意味が分からず、なんでテレビの人が一般市民を知ってるの?と。じっくり見ていたらようやく意味がわかりました。主人公ダメダメ感が出てますね。ダメダメな主人公は、ミドリガメを飼い始めます。カメにピカドンという名前をつけて、大きな夢を語ります。
そして、ストーリーが進みます。主人公の夢が叶い始める。どんどんビッグになっていく主人公は、スーパースターへ。
レンタルビデオのパッケージに、主人公の夢が叶って、そして、巨大カメ出現するようなことが書かれていて、くっそー意味わかんない!見るしかないなあ、と思って視聴してしまいました。楽しい映画でした。

今回見た映画とは関連しないのですが、Blender+Pythonで、オブジェクトのAppendとコピーと整列をしたいと思います。

スクリプトの最初の部分です。Cubeは、床にしますので、Floorという名前に変更しておきます。

import bpy

bpy.data.objects['Cube'].name = 'Floor'

立方体を平にして床にします。

bpy.data.objects['Floor'].location=(0,0,-1)
bpy.ops.transform.resize(value=(9,9,1))

オブジェクトをappendします。

bpy.ops.wm.append(directory="/home/takk/parasolset.blend/Object/",link=False,filename="Table")

appendしたオブジェクトをコピーしましょう。

for i in range(0,80):
        bpy.ops.object.duplicate()

テーブルを整列します。

x=0
y=0
for m in bpy.data.objects:
        if m.name[:5] == "Table":
                m.location = (x*2-8, y*2-8, 0)
                x = x + 1
                if x >= 9:
                        x = 0
                        y = y + 1

スクリプトをまとめると、このようになります。

     1	#!/bin/bash
     2	cat <<EOL>/tmp/tmp.py
     3	
     4	import bpy
     5	
     6	bpy.data.objects['Cube'].name = 'Floor'
     7	bpy.data.objects['Floor'].location=(0,0,-1)
     8	bpy.ops.transform.resize(value=(9,9,1))
     9	
    10	bpy.ops.wm.append(directory="/home/takk/parasolset.blend/Object/",link=False,filename="Table")
    11	
    12	for i in range(0,80):
    13	        bpy.ops.object.duplicate()
    14	
    15	x=0
    16	y=0
    17	for m in bpy.data.objects:
    18	        if m.name[:5] == "Table":
    19	                m.location = (x*2-8, y*2-8, 0)
    20	                x = x + 1
    21	                if x >= 9:
    22	                        x = 0
    23	                        y = y + 1
    24	
    25	EOL
    26	blender -P /tmp/tmp.py

bl-sort-002

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA