エンドレスな素数遊びですが、今回は素数階段の延長で、オブジェを作ります。
素数が現れたら、右に90度回転し上がっていく階段です。
準備するもの |
|
#!/bin/bash cat <<EOL>/tmp/tmp.py import bpy,math bpy.data.materials['Material'].diffuse_color=(0, 0.7, 1) bpy.data.materials['Material'].emit=0.1 red=bpy.data.materials.new("red") red.diffuse_color=(1, 0, 0) yellow=bpy.data.materials.new("yellow") yellow.diffuse_color=(1,1,0) green=bpy.data.materials.new("green") green.diffuse_color=(0,1,0) bpy.ops.transform.resize(value=(999, 999, 0.5)) pos=bpy.context.object.location forwards=[(0,2,0),(2,0,0),(0,-2,0),(-2,0,0)] ups=[(0,2,2),(2,0,2),(0,-2,2),(-2,0,2)] forward=forwards.pop(0) forwards.append(forward) up=ups.pop(0) ups.append(up) num=2 while num < 500: bpy.ops.mesh.primitive_cube_add(location=pos) bpy.ops.transform.resize(value=(1,1,1)) for i in range(num-1,0,-1): if i < 2: bpy.context.object.data.materials.append(red) bpy.ops.transform.translate(value=up) forward=forwards.pop(0) forwards.append(forward) up=ups.pop(0) ups.append(up) break if (num % i) == 0: bpy.context.object.data.materials.append(yellow) bpy.ops.transform.translate(value=forward) break pos=bpy.context.object.location bpy.ops.object.text_add(rotation=(0,0,0),location=pos) bpy.context.object.data.materials.append(green) bpy.context.object.data.body="%d" % num bpy.context.object.data.extrude=0.1 bpy.context.object.data.size=1.0 bpy.context.object.data.align="CENTER" bpy.ops.transform.translate(value=(0,-0.6,1.1)) num = num + 1 EOL blender -P /tmp/tmp.py
コメント