Blenderで地形データを作る(その2)

続きです。

エクスポートしたファイルをheadしてみます。頭の方に、座標データが格納されています。

takk@deb9:~/tmp$ head 10x10.obj
# Blender v2.79 (sub 0) OBJ File: ''
# www.blender.org
mtllib 10x10.mtl
o Plane
v 0.100000 0.000000 9.100000
v 9.100000 0.000000 9.100000
v 0.100000 0.000000 0.100000
v 9.100000 0.000000 0.100000
v 0.100000 0.000000 1.100000
v 0.100000 0.000000 2.100000
takk@deb9:~/tmp$

各行の先頭にvとあるので、きっと頂点座標のデータだと思いますが、念のため、どのようなデータがあるのか確認。10×10のデータなので100行ある情報が頂点座標のデータになりますね。

takk@deb9:~/tmp$ cut -b-2 10x10.obj | uniq -c
      2 #
      1 mt
      1 o
    100 v
      5 vn
      1 us
      1 s
     81 f
takk@deb9:~/tmp$

vから始まる行が100行なので、これが頂点座標のデータということで決まり。

vから始まる行のみ抽出して、整数化したデータに整形します。一か所だけ頂点を真上に伸ばした箇所があるはずです。

takk@deb9:~/tmp$ perl -naE 'if(shift@F eq "v"){@a=map{int$_}@F;say"@a"}' < 10x10.obj
0 0 9
9 0 9
0 0 0
9 0 0
0 0 1
0 0 2
0 0 3
0 0 4
0 0 5
5 0 8

~省略~

5 0 7
5 0 6
5 0 5
5 1 4
5 0 3
5 0 2
5 0 1

~省略~

8 0 6
8 0 5
8 0 4
8 0 3
8 0 2
8 0 1
takk@deb9:~/tmp$

ありました。5 1 4という座標が、真上に伸ばした座標と思われます。

今確認したデータをファイルへ保存します。

takk@deb9:~/tmp$ !!>out.txt
perl -naE 'if(shift@F eq "v"){@a=map{int$_}@F;say"@a"}' < 10x10.obj>out.txt
takk@deb9:~/tmp$

次回、このデータを取り込んで3D表示します。

Leave a Reply

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

CAPTCHA