素数階段に数字を入れます。
準備するもの |
|
数字はテキストオブジェクトで作成します。
38 bpy.ops.object.text_add(rotation=(0,0,0),location=pos) 39 bpy.context.object.data.materials.append(green) 40 bpy.context.object.data.body="%d" % num
少しだけ階段より上にして、数字が浮き出るように配置します。
44 bpy.ops.transform.translate(value=(0,-0.6,1.1))
階段のオブジェクトは、コピーではなく、毎回Cubeを追加して変形させています。
24 bpy.ops.mesh.primitive_cube_add(location=pos) 25 bpy.ops.transform.resize(value=(7,1,1))
全ソースです。
1 #!/bin/bash 2 cat <<EOL>/tmp/tmp.py 3 4 import bpy,math 5 6 bpy.data.materials['Material'].diffuse_color=(0, 0.7, 1) 7 bpy.data.materials['Material'].emit=0.1 8 9 red=bpy.data.materials.new("red") 10 red.diffuse_color=(1, 0, 0) 11 12 yellow=bpy.data.materials.new("yellow") 13 yellow.diffuse_color=(1,1,0) 14 15 green=bpy.data.materials.new("green") 16 green.diffuse_color=(0,1,0) 17 18 bpy.ops.transform.resize(value=(999, 999, 0.5)) 19 20 pos=bpy.context.object.location 21 22 num=2 23 while num < 300: 24 bpy.ops.mesh.primitive_cube_add(location=pos) 25 bpy.ops.transform.resize(value=(7,1,1)) 26 27 for i in range(num-1,0,-1): 28 if i < 2: 29 bpy.context.object.data.materials.append(red) 30 bpy.ops.transform.translate(value=(0,2,2)) 31 break 32 if (num % i) == 0: 33 bpy.context.object.data.materials.append(yellow) 34 bpy.ops.transform.translate(value=(0,2,0)) 35 break 36 37 pos=bpy.context.object.location 38 bpy.ops.object.text_add(rotation=(0,0,0),location=pos) 39 bpy.context.object.data.materials.append(green) 40 bpy.context.object.data.body="%d" % num 41 bpy.context.object.data.extrude=0.1 42 bpy.context.object.data.size=1.8 43 bpy.context.object.data.align="CENTER" 44 bpy.ops.transform.translate(value=(0,-0.6,1.1)) 45 46 num = num + 1 47 48 EOL 49 blender -P /tmp/tmp.py
コメント