続きです。
今回は読み込む地形をもっと大きなものにしてみます。地形データの作成は、Blenderでやりますが、頂点数が多いのでスカルプトモードで作成します。
まずBlenderでsubdivideで62分割したPlane(面が63×63、頂点が64×64)を用意します。
(Blenderを起動し、xで最初のCubeを削除、SHIFT+aで、Plane追加、s、0.5で半分に縮小、s、 63 ENTERで、63倍に拡大します。その後、EDITモードでSubdivideで62分割)
その後、sculptモードに変更し、symmetryのXをOFFして、作りたい地形になるように、Planeをマウスでドラッグしていきます。
作りたい地形になったら、エクスポートして64×64.objという名前で保存します。
10×10の時と同様に、以下のコマンドを実行し、頂点データの行だけフィルタリングして、すべてのデータを整数に変更します。
takk@deb9:~$ perl -naE 'if(shift@F eq "v"){@a=map{int$_}@F;say"@a"}' < 64x64.obj > 64x64.txt takk@deb9:~$
行数は頂点の数と同じく、64×64の4096になっているはずですので、wcで確認します。
takk@deb9:~$ wc -l !$ wc -l 64x64.txt 4096 64x64.txt takk@deb9:~$
合ってますね。次は、冒頭部分を確認しましょう。
takk@deb9:~$ head !$ head 64x64.txt -31 0 31 31 0 31 -31 0 -31 31 0 -31 -31 0 -30 -31 0 -29 -31 0 -28 -31 0 -27 -31 0 -26 -31 0 -25 takk@deb9:~$
整数化されたX Y Z座標のデータとなってますね。
続いて、座標データの後に、ブロックデータも追加して、C言語で読み込むデータにします。
takk@deb9:~$ sed 's/$/ 1/' !$ > world_map.txt sed 's/$/ 1/' 64x64.txt > world_map.txt takk@deb9:~$
headコマンドで座標データに加えて、ブロックデータである1という数値も追加されてることを確認します。
takk@deb9:~$ head !$ head world_map.txt -31 0 31 1 31 0 31 1 -31 0 -31 1 31 0 -31 1 -31 0 -30 1 -31 0 -29 1 -31 0 -28 1 -31 0 -27 1 -31 0 -26 1 -31 0 -25 1 takk@deb9:~$
あとは、このデータを使ってC言語+GLUTのプログラムを動かせば、このような画像が見られます。
コメント