BlenderでOBJファイルを使う(その1)

BlenderのPlaneを16分割(subdiveで3分割)して頂点を25個にしたオブジェクトをobjファイルにエクスポートした後、コマンドで加工してみます。

準備するもの
  • Linux PC(確認環境はDebian 8.3 Jessie)
  • 端末ウィンドウ(ターミナルソフト)
  • Blender(確認環境はv2.72)

まずは、Blenderで最初のCubeオブジェクトを削除〜Plane作成〜objのエクスポートまで。

takk@deb83:~$ cat bl-export-obj.sh
     1	#!/bin/bash
     2	cat <<EOL>/tmp/tmp.py
     3	
     4	import bpy
     5	
     6	bpy.ops.object.delete()
     7	
     8	bpy.ops.mesh.primitive_plane_add()
     9	bpy.ops.transform.resize(value=(9,9,1))
    10	bpy.ops.object.mode_set(mode='EDIT')
    11	bpy.ops.mesh.subdivide(number_cuts=3)
    12	
    13	bpy.ops.export_scene.obj(filepath='wavefront.obj')
    14	
    15	EOL
    16	blender -P /tmp/tmp.py
takk@deb83:~$ . bl-export.sh

エクスポートしたOBJファイルを確認してみます。

takk@deb83:~$ cat -n wavefront.obj
     1	# Blender v2.72 (sub 0) OBJ File: ''
     2	# www.blender.org
     3	mtllib wavefront.mtl
     4	o Plane
     5	v -9.000000 0.000000 9.000000
     6	v 9.000000 0.000000 9.000000
     7	v -9.000000 0.000000 -9.000000
     8	v 9.000000 0.000000 -9.000000
     9	v -9.000000 0.000000 -4.500000
    10	v -9.000000 0.000000 0.000000
    11	v -9.000000 0.000000 4.500000
    12	v -4.500000 0.000000 9.000000
    13	v 0.000000 0.000000 9.000000
    14	v 4.500000 0.000000 9.000000
    15	v 9.000000 0.000000 4.500000
    16	v 9.000000 0.000000 -0.000000
    17	v 9.000000 0.000000 -4.500000
    18	v 4.500000 0.000000 -9.000000
    19	v -0.000000 0.000000 -9.000000
    20	v -4.500000 0.000000 -9.000000
    21	v -4.500000 0.000000 4.500000
    22	v -4.500000 0.000000 -0.000000
    23	v -4.500000 0.000000 -4.500000
    24	v 0.000000 0.000000 4.500000
    25	v -0.000000 0.000000 -0.000000
    26	v -0.000000 0.000000 -4.500000
    27	v 4.500000 0.000000 4.500000
    28	v 4.500000 0.000000 -0.000000
    29	v 4.500000 0.000000 -4.500000
    30	usemtl None
    31	s off
    32	f 25 13 4 14
    33	f 5 19 16 3
    34	f 19 22 15 16
    35	f 22 25 14 15
    36	f 1 8 17 7
    37	f 7 17 18 6
    38	f 6 18 19 5
    39	f 8 9 20 17
    40	f 17 20 21 18
    41	f 18 21 22 19
    42	f 9 10 23 20
    43	f 20 23 24 21
    44	f 21 24 25 22
    45	f 10 2 11 23
    46	f 23 11 12 24
    47	f 24 12 13 25

5行目(①)〜29(㉕)行目までがPlaneの頂点座標です。Planeオブジェクトで以下のような頂点の順序になっています。
bl-obj16-001

ではOBJファイルを加工します。
最初に0の数が多くて扱いづらいので、00000を削除します。

takk@deb83:~$ sed 's/00000//g' -i wavefront.obj

下図の赤色部分の、Y(Blender座標でZ)を+2していきます。
bl-obj16-003
数字の9が含まれない座標をすべて加工すれば良いので、

takk@deb83:~$ perl -pe 'unless(/9/){s/(\d+) 0.0 /$1 2.0 /}' -i wavefront.obj

2番目の数値の0.0を置換することでY座標(BlenderのZ座標)のみ置換されます。

加工したOBJファイルをインポートするとこのような図形が出来上がります。
bl-obj16-004

Leave a Reply

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

CAPTCHA