素数階段に数字を入れます。
| 準備するもの |
|
数字はテキストオブジェクトで作成します。
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


コメント