« 2010年11月 | メイン | 2011年1月 »

●Shade書捨てスクリプト

2010年12月 9日    

Shade12が発売になりましたね
今まで10.5を使っていましたがアップデートして色々試してみています
ただ自分の使うスクリプトでクラッシュしたりするので移行はまだまだ先かな
ムービーを作るのに使う使い捨てスクリプトをメモ

最初にバインド設定したものの上の階層の設定を足したい場合に使うスクリプト

# coding: utf-8
#選択形状でループ
for shape_ in xshade.scene().active_shapes:
	#コントロールポイントでループ
	for i in xrange(shape_.total_number_of_control_points):
		#ポリゴンメッシュのみを処理対象に
		if shape_.type != 7 :continue
		vind_list = []
		#頂点のバインドの数を取得
		target = shape_.vertex(i)
		bind_num = target.skin.number_of_binds
		for j in xrange(bind_num):
			bind = target.skin.get_bind(j)
vind_list.append([bind.shape,bind.weight]) target.skin.append_bind() #target.skin.get_bind(0).shape = target.skin.get_bind(0).shape.parent #0番のバインドを削除する for j in xrange(bind_num): target.skin.get_bind(j+1).shape = vind_list[j][0]
target.skin.get_bind(j+1).weight = vind_list[j][1]
shape_.update_skin_bindings()

Shade12から追加されたプリミティブ形状を作成するスクリプト
スクリプトではカプセル形状を親子階層になったボールジョイントの位置に作成

# coding: utf-8
#xshade.scene().create_primitive_capsule(None,「プリミティブ:0,自由曲面:1,ポリゴンメッシュ:3」,True,「U方向の分割数:16」,「V方向の分割数:16」,「開始位置の中心座標」,「直径」, 1, 「終了位置の相対座標」)
scene_ = xshade.scene()
shape_ = xshade.scene().active_shape()
if shape_.type == 2 and shape_.part_type == 10:
	if shape_.parent.type == 2 and shape_.parent.part_type == 10:
		point1 = shape_.parent.ball_joint.position
		point2 = shape_.ball_joint.position
		pos_2 = map((lambda x,y:x-y),point2,point1)
		size1 = shape_.ball_joint.size
		scene_.create_primitive_capsule(None,3,True,20,16,point1,size1,1,pos_2)

座標変換とかには対応してないので

ボールジョイントを回転等をさせると明後日の位置に作成されてしまいますがメモってとこで