ハートのメッシュを作成するスクリプト(Add on)
1件表示
すべてのコメント一覧へ
投稿ツリー
- ハートのメッシュを作成するスクリプト(Add on) (Takeshi, 2011/7/29 22:36) «
- depth:
- 0
前の投稿
-
次の投稿
|
親投稿
-
子投稿なし
|
投稿日時 2011/7/29 22:36
Takeshi
居住地: 愛知
投稿数: 9
ハートのメッシュを作るblender2.5用のスクリプトを書きました。
こちらのサイトで紹介されているものを2.5用に書き直させていただきました。
Addonとしてインストールして使えます。
Add > Mesh > Heartとたどって使ってください
プロパティ
points:作成するハートの頂点の数を指定します
Scale of the heart:ハートの大きさを指定します
Heart influence:カージオイド曲線からハート型への変換の強さを指定します
Notch influence:ハートの切れ込みの強さを指定します
Elasticity:y軸方向の伸縮度を指定します
初めてのスクリプティングでド緊張ですが、どうかよろしくお願いします。
:download:add_mesh_heart_edge.zip
こちらのサイトで紹介されているものを2.5用に書き直させていただきました。
Addonとしてインストールして使えます。
Add > Mesh > Heartとたどって使ってください
プロパティ
points:作成するハートの頂点の数を指定します
Scale of the heart:ハートの大きさを指定します
Heart influence:カージオイド曲線からハート型への変換の強さを指定します
Notch influence:ハートの切れ込みの強さを指定します
Elasticity:y軸方向の伸縮度を指定します
初めてのスクリプティングでド緊張ですが、どうかよろしくお願いします。
bl_info = {
'name': 'Heart Mesh',
'author': 'takeshi',
'version': (0, 0, 1),
'blender': (2, 5, 8),
'api': 37702,
'location': 'View3D > Add > Mesh > Heart',
'description': 'Add Heart Mesh',
'warning': '',
'category': 'Add Mesh'}
#===================================================================================================
# Import
#===================================================================================================
import bpy
from bpy.props import *
from mathutils import *
from math import sqrt, sin, cos, pi
#============================================================================
#============================================================================
# Add Heart
#============================================================================
#============================================================================
def Create_mesh_object(context,verts,edges,faces,name):
scene = context.scene
obj_act = scene.objects.active
#Create new mesh
mesh = bpy.data.meshes.new(name)
#Make a mesh from a list of verts/edges/faces.
mesh.from_pydata(verts, edges, faces)
#Updata mesh geometory after adding stuff.
mesh.update()
from bpy_extras import object_utils
return object_utils.object_data_add(context,mesh,operator = None)
def Create_heart_edge_data(points, scale, heart_inf, notch_inf, elasticity):
verts=[]
edges=[]
fmin = -pi/2.0
fmax = 3.0*pi/2.0
for i in range(points):
f = fmin + (fmax-fmin)*float(i)/float(points)
t = heart_inf*sqrt(f+pi/2.0) - heart_inf*sqrt(3.0*pi/2.0-f) + (1.0-heart_inf*sqrt(2.0/pi))*f + heart_inf*sqrt(pi/2.0)
r = scale*(1.0 - sin(t))
x = r*(1.0+notch_inf*sin(f))*cos(f)
y = elasticity*r*(1.0+notch_inf*sin(f))*sin(f)
verts.append( (x,y,0.0) )
i0 = i
i1 = i+1
if i == points-1: i1 = 0 #end of loop
edges.append( (i0,i1) )
return verts, edges
class AddHeart(bpy.types.Operator):
bl_idname = "mesh.primitive_heart_add"
bl_label = "Add Heart"
bl_options = {'REGISTER', 'UNDO'}
points = IntProperty(name="Points",
description="Number of points for the heart",
min=2,
max=256,
default=32)
scale = FloatProperty(name="Scale of the heart",
description="Scale of the heart",
min=0.01,
max=9999.0,
default=5.0)
heart_inf = FloatProperty(name="Heart influence",
description="Influence of convert cardioid to heart",
min=0.01,
max=9999.0,
default=1.8)
notch_inf = FloatProperty(name="Notch influence",
description="Influence of Notch",
min=0.01,
max=1,
default=0.65)
elasticity = FloatProperty(name="Elasticity",
description="Elasticity of the Y-axis",
min=0.01,
max=9999.0,
default=1.0)
def execute(self, context):
verts, edges = Create_heart_edge_data(
self.points,
self.scale,
self.heart_inf,
self.notch_inf,
self.elasticity)
obj = Create_mesh_object(context, verts, edges, [], "Heart")
return {'FINISHED'}
#============================================================================
#============================================================================
# REGISTER
#============================================================================
#============================================================================
def menu_func_heart(self, context):
self.layout.operator(AddHeart.bl_idname, text="Heart", icon="PLUGIN")
def register():
bpy.utils.register_module(__name__)
bpy.types.INFO_MT_mesh_add.append(menu_func_heart)
def unregister():
bpy.utils.unregister_module(__name__)
bpy.types.INFO_MT_mesh_add.remove(menu_func_heart)
if __name__ == "__main__":
register()
:download:add_mesh_heart_edge.zip
投票数:7
平均点:10.00
ログイン
クイックリンク
2021/07/01版
●Blender.org
BlenderFoundation
- Blenderのダウンロード
- 公式チュート等
- 公式マニュアル(和訳)
●ニュース(英文)
BlenderNation
●Blenderコミュニティ
blenderartists.org
●Blender Q&A
- Blender Stack Exchange
●テストビルド
Buildbot(自動生成)
●開発関連
公式開発サイト
Blender開発blog
Blender Wiki
●Blender.org
BlenderFoundation
- Blenderのダウンロード
- 公式チュート等
- 公式マニュアル(和訳)
●ニュース(英文)
BlenderNation
●Blenderコミュニティ
blenderartists.org
●Blender Q&A
- Blender Stack Exchange
●テストビルド
Buildbot(自動生成)
●開発関連
公式開発サイト
Blender開発blog
Blender Wiki