BlenderのPlaneを16分割(subdiveで3分割)して頂点を25個にしたオブジェクトをobjファイルにエクスポートした後、コマンドで加工してみます。
| 準備するもの |
|
まずは、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オブジェクトで以下のような頂点の順序になっています。
ではOBJファイルを加工します。
最初に0の数が多くて扱いづらいので、00000を削除します。
takk@deb83:~$ sed 's/00000//g' -i wavefront.obj
下図の赤色部分の、Y(Blender座標でZ)を+2していきます。
数字の9が含まれない座標をすべて加工すれば良いので、
takk@deb83:~$ perl -pe 'unless(/9/){s/(\d+) 0.0 /$1 2.0 /}' -i wavefront.obj
2番目の数値の0.0を置換することでY座標(BlenderのZ座標)のみ置換されます。
加工したOBJファイルをインポートするとこのような図形が出来上がります。

コメント