リボンリグの作り方について詳しく解説しちゃいます!

資料

動画のトピックス

・リガーに必須!NURBS!
・リボンリグって何よ?
・実際に作ってみよう
・事例紹介:GDCの講演から

動画内で作業を効率的に行うために作ったコード

from maya import cmds

#Dash
#l(5.0, -5.0)

# jointOrient 0 0 0
joints = cmds.ls(selection=True, type="joint")
for joint in joints:
    cmds.setAttr("{}.jointOrient".format(joint), 0.0, 0.0 ,0.0)

# リネーム
nodes = cmds.ls(selection=True)
for i, node in enumerate(nodes):
    cmds.rename(node, "ribbon_ctrl{}".format(i))
    
# 親空間を作成する
nodes = cmds.ls(selection=True)
for node in nodes:
    joint = cmds.createNode("joint", name=node.replace("_ctrl", "_ctrlSpace"), parent=node)
    cmds.parent(joint, world=True)
    cmds.parent(node, joint)
    cmds.setAttr("{}.drawStyle".format(joint), 2)

# 選択したノードの子にジョイントを作成する
nodes = cmds.ls(selection=True)
for i, node in enumerate(nodes): 
    cmds.joint(node, name="ribbon_bindJoint{}".format(i))
    cmds.setAttr(".radius", 0.2)
    
# コントローラーを作成する
nodes = cmds.ls(sl=True)
for node in nodes:
    circle = cmds.circle(ch=False, radius=0.4)[0]
    circle_shape = cmds.listRelatives(circle, shapes=True)[0]
    cmds.parent(circle_shape, node, r=True, shape=True)
    
# drawStyleをNoneにする
nodes = cmds.ls(selection=True, type="joint")
for node in nodes:
    cmds.setAttr("{}.drawStyle".format(node), 2)

リボンリグの事例

18分辺り、独自のマッスルシステムにジョイントを拘束している

GDC 2019 : Animation Bootcamp: Animating the Main Villain in ‘Marvel’s Spider-Man’ (or “What, I’m Rigging HOW Many Legs?!”)

リグ関連のオススメ書籍

関連記事

  1. Dashスクリプトで等間隔&ランダム配置

    2022-10-13

  2. Maya Bifrostでプロシージャルリギング

    2024-03-27

  3. リガーに必須の講演資料や書籍4選!

    2020-12-23

  4. Qt DesignerでサクッとGUI作っちゃおう!

    2021-06-27

コメントをお待ちしています。

コメント

ABOUT

テクニカルアーティストの為のまとめサイトです。

本サイトでは、『YouTube ✕ Blog』を中心に
情報発信をしていきます。

また、テクニカルアーティストとしての様々な
ライフハック記事も投稿予定です。

限定情報会員

PATREONでは、限定情報やサンプルファイルの配布も行っています。登録頂けると更新頑張れます。支援の方よろしくお願いします。


免責事項

本ウェブサイト内で公開している全ての情報の有用性や安全性については当方は一切の保証を与えるものではありません。
利用したことによって引き起こる直接および間接的な損害に対して当方は一切責任を負うものではありません。
全て自己責任でご使用ください。

3DCGBOOK出版

BOOTHで技術書を販売利しております。







スポンサー

ページ上部へ戻る