Skip to content

Instantly share code, notes, and snippets.

@Hoikohroh
Created December 12, 2014 10:35
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Hoikohroh/981f6b2dee82a3b8e225 to your computer and use it in GitHub Desktop.
Save Hoikohroh/981f6b2dee82a3b8e225 to your computer and use it in GitHub Desktop.
Maxscript:Create_ConstraintBone
/*
更新履歴
v20140313
選択フィルタ未選択時のエラー修正
v20140130_2
選択フィルタのエラーを修正
ボーンサイズ指定可能
アップノード初期設定をペアレントに
アップノード基本軸をYに修正
v20140130
英語表記に変更
選択フィルタ実装
(選択フィルタONでヘルパー以外選択不可能に)
v20131110
ボーンのサイズを1に指定
ボーン作成時、ストレッチの暴走を修正 (座標を.transform.posで取得)
v20131106
ダイアログ化
アップノード選択オプション (ワールド/親)追加
(作成済みボーンのアップノード修正は外部スクリプトで)
v20131012
初版
*/
try destroyDialog Roll_CreateBone catch()
Rollout Roll_CreateBone ""
(
--Filter
fn Hpr_filt obj = superclassof obj == helper
checkbutton btn_Create "Create!!" width:90 height:35 offset:[0,3]
checkbox chk_Filter "Use Filter" align:#center checked:true
Group""(
radiobuttons rdo_Upnode "Upnode" labels:#("World", "Parent") default:2
spinner spn_size "Size" range:[0.01,50,1] width:70
)
on btn_Create changed true do(
max select none
if chk_Filter.state then (
Start = pickObject filter:Hpr_filt)
else (
Start = pickObject())
Repeat = true
while Repeat do
(
try
(
if chk_Filter.state then (
End = pickObject rubberBand:Start.transform.pos filter:Hpr_filt)
else (
End = pickObject rubberBand:Start.transform.pos )
TempBone = BoneSys.createBone Start.transform.pos End.transform.pos [0,0,1]
TempBone.position.controller = Position_Constraint()
TempBone.position.controller.AppendTarget Start 50
TempBone.rotation.controller = LookAt_Constraint()
TempBone.rotation.controller.appendTarget End 50
TempBone.rotation.controller.lookat_vector_length = 0
TempBone.rotation.controller.StoUP_axis = 1
TempBone.width = spn_size.value
TempBone.height = spn_size.value
if rdo_Upnode.state == 2 then
(
TempBone.rotation.controller.pickUpNode = Start
TempBone.rotation.controller.upnode_world = false
TempBone.boneFreezeLength = false
)
if ParentBone != undefined then (TempBone.parent = ParentBone)
ParentBone = TempBone
)
catch
(
if ParentBone != undefined then
(
EndBone = BoneSys.createBone Start.transform.pos Start.transform.pos [0,0,1]
EndBone.position.controller = Position_Constraint()
EndBone.position.controller.AppendTarget Start 50
EndBone.parent = ParentBone
in coordsys parent EndBone.rotation = (quat 0 0 0 0)
EndBone.width = spn_size.value
EndBone.height = spn_size.value
EndBone.length = spn_size.value
)
Repeat = false
)
Start = End
)
btn_Create.checked = false
)
)
createDialog Roll_CreateBone 150 150
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment