これは古いリファレンスです。このドキュメントはメンテナンスされていません。
あたらしいリファレンスは こちら

ライブラリ

目次

スクリプト開発のためのオリジナル関数のライブラリ。

ライブラリ サンプル

Pythonライブラリ

get_vec_x_mat vec3の値にマトリクスをかける
get_add_vec vec3とvec3の加算
get_sub_vec vec3とvec3の減算
get_vec_mul_n vec3と実数の乗算
get_vec_div_n vec3と実数の除算
get_vec_mag vec3の大きさ(距離)を求める
get_vec_unit vec3の単位ベクトルを求める
switch_obj スイッチジョイントを名称で操作する

JavaScriptライブラリ

get_widget_path widgetまでのパス

Pythonライブラリ詳細

  • get_vec_x_mat
    • vec3の値にマトリクスをかける
戻り値 : vec3
引数 : vec3
引数 : matrix
引数 : int : 移動量の計算 : 0:移動量を計算しない、1:移動量を計算する(デフォルト) : 省略可能
  • 変換マトリクスをかけた座標値を取得するライブラリです。
引数3つめの「移動量の計算」はデフォルトで有効となっており、通常指定する必要はありません。
移動量を無視する場合に「0」を指定します。
変換のかかったパート内の形状の各種座標をグローバル座標系に変換する場合などに使用します。
def get_vec_x_mat (v, m,n=1):
	new_vec = []
	for i in xrange(3):
		new_vec.append(v[0]*m[0][i] + v[1]*m[1][i] + v[2]*m[2][i] + n*m[3][i])
	return new_vec

#ローカル座標からワールド座標に変換するマトリクスを、コントロールポイント「0」番にかけます。
shape = xshade.scene().active_shape()
#座標取得
vec = shape.control_point(0).position
#ローカル座標からワールドに変換するマトリクスを取得
ltw = shape.local_to_world_matrix
#ワールド座標に変換した座標を取得する。(引数3つ目は省略)
w_vec = get_vec_x_mat(vec, ltw)
#確認出力
print 'local=',vec
print 'world=',w_vec

  • get_add_vec
    • vec3とvec3の加算
戻り値 : vec3
引数 : vec3
引数 : vec3
  • vec3同士の加算を行うライブラリです。
def get_add_vec(va, vb):
	return (va[0]+vb[0], va[1]+vb[1], va[2]+vb[2])

#2つのvec3の加算を行います。
vec_a = (10, 20, 30)
vec_b = (100, 200, 300)
print get_add_vec(vec_a, vec_b)

  • get_sub_vec
    • vec3とvec3の加算
戻り値 : vec3
引数 : vec3
引数 : vec3
  • vec3同士の減算を行うライブラリです。
def get_sub_vec(va, vb):
	return (va[0]-vb[0], va[1]-vb[1], va[2]-vb[2])

#2つのvec3の減算を行います。
vec_a = (100, 200, 300)
vec_b = (10, 20, 30)
print get_sub_vec(vec_a, vec_b)

  • get_vec_mul_n
    • vec3と実数の乗算
戻り値 : vec3
引数 : vec3
引数 : 実数
  • vec3と実数の乗算を行うライブラリです。
def get_vec_mul_n(v, n):
	return (v[0]*n, v[1]*n, v[2]*n)

#vec3と実数の乗算を行います。
vec = (100, 200, 300)
n = 2
print get_vec_mul_n(vec, n)

  • get_vec_div_n
    • vec3と実数の除算
戻り値 : vec3
引数 : vec3
引数 : 実数
  • vec3と実数の除算を行うライブラリです。
実数が「0」の場合、もとのvec3を返します。
def get_vec_div_n(v, n):
	if n == 0.0: return v
	return (v[0]/n, v[1]/n, v[2]/n)

#vec3と実数の除算を行います。
vec = (100, 200, 300)
n = 2
print get_vec_div_n(vec, n)

  • get_vec_mag
    • vec3の大きさ(距離)を求める
戻り値 : float
引数 : vec3
  • vec3の大きさを求めるライブラリです。
平方根の計算を行うために、mathモジュールをインポートしています。
def get_vec_mag(vec):
	import math
	return math.sqrt(vec[0]**2 + vec[1]**2 + vec[2]**2)

#vec3の大きさを求めます。
vec = (100, 200, 300)
print get_vec_mag(vec)

  • get_vec_unit
    • vec3の単位ベクトルを求める
戻り値 : float3
引数 : vec3
  • vec3の単位ベクトルを求めるライブラリです。
平方根の計算を行うために、mathモジュールをインポートしています。
def get_unit_list(vec):
	import math
	v_m = math.sqrt(vec[0]**2 + vec[1]**2 + vec[2]**2)
	return list((vec[0] / v_m, vec[1] / v_m, vec[2] / v_m))

#vec3の単位ベクトルを求めます。
vec = (100, 200, 300)
print get_vec_unit(vec)
v_m(大きさ)を求める部分を別ライブラリ(get_vec_mag)に行わせる方法もあります。
def get_vec_mag(vec):
	import math
	return math.sqrt(vec[0]**2 + vec[1]**2 + vec[2]**2)

def get_unit_list(vec):
	v_m = get_vec_mag(vec)
	return list((vec[0] / v_m, vec[1] / v_m, vec[2] / v_m))

#vec3の単位ベクトルを求めます。
vec = (100, 200, 300)
print get_vec_unit(vec)

  • switch_obj
    • スイッチジョイントを名称で操作する
引数 : string : ジョイント名
引数 : string : 形状名
  • シーン中の、特定の名称を持った全てのスイッチジョイントで、特定の名称の形状にセットするライブラリです。
スイッチジョイントのジョイント値はint型ですが、このライブラリを用いることで、スイッチジョイントに含まれている形状の名称で、スイッチジョイントを操作することが可能になります。
たくさんのスイッチジョイントを同時に操作する必要がある場合に使用してください。
  • ブラウザ上で上から順番に探索し、先に見つかった形状にセットします。
形状名が見つからない場合はジョイント値を変更しません。
def switch_obj(j_name, act_name):
	## 同じ名称のオブジェクトを取得する
	t = scene.get_shapes_by_name(j_name)

	## 
	for x in range(len(t)):

		## スイッチジョイントかどうかを判断する
		if t[x].is_switch_effector:
			sw_element = t[x].son
			sw_ind = 0
			while sw_element.has_bro:

			## 指定オブジェクトの弟形状を指定する
				sw_element = sw_element.bro

				## スイッチジョイントに含まれている、変更対称の形状をアクティブにする
				if sw_element.name == act_name:
					t[x].switch_effector.selection = sw_ind
					break
				else:
					sw_ind = sw_ind + 1


Widgetライブラリ詳細

  • get_widget_path
    • widgetまでのパス
戻り値 : file_path
  • widgetの上位フォルダまでのパスを返します。
プラットフォームを自動判別します。
function get_widget_path() {
	if (navigator.platform.indexOf("Win") != -1) {
		index_path = location.pathname.replace(/^\x2f([A-Z]:)/, "$1").replace(/%20/g, " ");
		return index_path.slice(0,-11);
	} else {
		index_path = location.pathname;
		return index_path.slice(0,-10);
	}
}


Shade Widgetリファレンス
ライブラリ/サンプル
ツールボックス