Blenderで素数階段(その2)

素数階段に数字を入れます。

準備するもの
  • Linux PC(確認環境はDebian 8.3 Jessie)
  • 端末ウィンドウ(ターミナルソフト)
  • Blender(確認環境はv2.72)

数字はテキストオブジェクトで作成します。

    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

pstairs-001

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA