OneonetのPyBE

Python,Blender,Excelのいろいろ

Blender x Python で作るガンダムハンマー

トーラス(ドーナッツみたいなやつね)、ICO球、円錐を組み合わせてガンダムハンマーを作ってみました。実物より少しトゲが多くなっていますが、このぐらいのほうがかっこいいかなということにしときます。

まずクサリの部分はトーラスを隙間を開けて並べて、その隙間にちょうど収まるように、かつ90度(2π*90/360≒1.57)ずらしで配置します。今回は2mのクサリを2.6m間隔で配置し、90度回転+1.3m差としました。

肝心のトゲトゲはインスタンス化機能を利用しています。球を親として円錐を各面に張り付けることでガンダムハンマーっぽい構造になります。円錐の大きさがそのままトゲトゲの大きさになりますので、高さを変えてみると面白いと思います。

リッジドボディを設定すればこれでピラミッドとか壊せそうです。

#blender 2.93.1で動作確認
import bpy

for item in bpy.data.meshes:
    bpy.data.meshes.remove(item)

bpy.ops.mesh.primitive_cone_add(radius1=1, radius2=0, depth=4,enter_editmode=False, align='WORLD', location=(0, 55.5, 0), scale=(1, 1, 1))
bpy.ops.mesh.primitive_ico_sphere_add(enter_editmode=False, align='WORLD', location=(0, 55.5, 0), scale=(5, 5, 5))
bpy.context.object.instance_type = 'FACES'

bpy.data.objects['円錐'].select_set(True)
bpy.data.objects['ICO球'].select_set(True)
bpy.ops.object.parent_set(type='OBJECT', keep_transform=True)

for i in range(0,20):
    bpy.ops.mesh.primitive_torus_add(location=(0, i*2.6, 0), major_radius=1.0, minor_radius=0.2, rotation=(0, 0, 0))

for i in range(0,20):
    bpy.ops.mesh.primitive_torus_add(location=(0, i*2.6+1.3, 0), major_radius=1.0, minor_radius=0.2, rotation=(0, 1.57, 0))

f:id:oneonet:20220316151709p:plain