Planeオブジェクトをさらに細かく分割して、文字を浮かばせてみます。
準備するもの |
|
最初にsubdivideで20分割したPlaneをOBJファイルで保存します。
takk@deb83:~$ cat -n bl-export-obj20.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=(21,21,1)) 10 bpy.ops.object.mode_set(mode='EDIT') 11 bpy.ops.mesh.subdivide(number_cuts=20) 12 13 bpy.ops.export_scene.obj(filepath='wavefront.obj') 14 15 EOL 16 blender -P /tmp/tmp.py takk@deb83:~$ . bl-export-obj20.sh
このような内容のOBJファイルが生成されます。
takk@deb83:~$ cat wavefront.obj # Blender v2.72 (sub 0) OBJ File: '' # www.blender.org mtllib wavefront.mtl o Plane v -21.000000 0.000000 21.000000 v 21.000000 0.000000 21.000000 v -21.000000 0.000000 -21.000000 v 21.000000 0.000000 -21.000000 v -21.000000 0.000000 -19.000000 v -21.000000 0.000000 -17.000000 v -21.000000 0.000000 -15.000000 v -21.000000 0.000000 -13.000000 v -21.000000 0.000000 -11.000001 v -21.000000 0.000000 -9.000001 v -21.000000 0.000000 -7.000001 v -21.000000 0.000000 -5.000000 v -21.000000 0.000000 -3.000000 v -21.000000 0.000000 -1.000000 v -21.000000 0.000000 1.000000 v -21.000000 0.000000 3.000000 v -21.000000 0.000000 5.000000 v -21.000000 0.000000 7.000000 v -21.000000 0.000000 8.999999 v -21.000000 0.000000 10.999999 v -21.000000 0.000000 12.999999 (省略)
小数点以下の数字が扱いにくいので丸めます。
takk@deb83:~$ perl -pe 's/([\.\d]+)/int($1+0.5)/ge if/^v/' -i wavefront.obj
bannerコマンドを使って盛り上がらせる座標を算出するスクリプトを作成して、
takk@deb83:~$ cat bl-obj-banner.sh 1 open(BANNER,"banner $ARGV[0] |"); 2 $y=0; 3 while(<BANNER>){ 4 print; 5 $x=0; 6 foreach(split //,$_){ 7 if(/#/){ 8 $x1=$x*6+2-21; 9 $x2=$x*6+4-21; 10 $y1=$y*6+2-21; 11 $y2=$y*6+4-21; 12 push @banner,"$x1 0 $y1"; 13 push @banner,"$x1 0 $y2"; 14 push @banner,"$x2 0 $y1"; 15 push @banner,"$x2 0 $y2"; 16 } 17 $x++; 18 } 19 $y++; 20 } 21 close(BANNER); 22 23 while(<STDIN>){ 24 $line =$_; 25 foreach $xy (@banner){ 26 if($line =~ /^v $xy$/){ 27 $line =~ s/(\-?)(\d+) 0/$1$2 4/; 28 } 29 } 30 print $line; 31 }
実行します。
cat wavefront.obj | perl bl-obj-banner.pl 5 > aa.obj
実行したOBJをインポートすると、引数で指定した一文字が浮かび上がってきます。
コメント