レイキャストを使った目線リグの作り方

テクスチャを使って瞳を作ることってよくありますよね?
その時、目線のコントロールはどのように行っていますか?

目線のコントロールにコントロールリグの移動を使っている方は必見です!
これを機会に回転を使って目線をコントロールしてみましょう。

回転で行うことで目先にある対象物を見る時にコントロールがかなり楽になります。
目線をIKでコントロールできる…というイメージです。

ただ、残念なことにMaya標準機能だけで実装するのは難しいです。
今回はexprespyという素晴らしいノードを利用して実装しました。
※ Maya2020.4を利用しています。

Python API 2.0でアルゴリズムを解説

import maya.cmds as cmds
import maya.api.OpenMaya as api

selection_list = api.MSelectionList()
selection_list.add("projection_srfShape") # 仮想のNurbsSurfaceを入れる
dag = selection_list.getDagPath(0)
nurbs_srf = api.MFnNurbsSurface(dag) # MFnNurbsSurfaceの機能を使うための関数セット

ray_source = api.MPoint() #レイを打ちはじめるポイント、始点、MPointを引数なし指定 = 原点(0,0,0)
ray_dir = cmds.getAttr("rayDirection.translate")[0] # レイを打つ方向、rayDirectionは方向を持つロケーター
ray_dir = api.MVector(ray_dir) 
hit_point, hit_u, hit_v = \
    nurbs_srf.intersect(ray_source, ray_dir)
cmds.setAttr("hit_point.translate", *list(hit_point)[:3]) # hit_pointというロケーターにセット

exprespyをダウンロード&インストール

以下、githubからダウンロードしましょう。
説明がとても丁寧に書かれているのでインストール方法はこちらでは割愛します。
https://github.com/ryusas/maya_exprespy

また、サンプルシーンの中も高度なテクニックが詰まっています。
サンプルを見るだけで面白いですよ。

exprespyを使っての実装

やっていることはPython API 2.0のものとほぼ同じです。
DagObjectの取得が簡単にできるようになっています。よって、MSelectionListらへんはexprespyでは書かなくてOK!ということです。

srf = projection_srfShape.local # nurbsSurfaceのlocal(outputGeometry)を取得
rayStart = api.MPoint(eye.translate)
rayDir = api.MVector(rayDirection.translate)
fnNurbsSurface = api.MFnNurbsSurface(srf)
point, u, v = fnNurbsSurface.intersect(rayStart, rayDir)
eye_p2d.translateFrameU = u - 0.5 # eye_p2dは目のテクスチャのplace2dTextureノードです。
eye_p2d.translateFrameV = v - 0.5

動かす時の注意点!

今回の動画では原点で動くようにしただけです。
よって、原点からジョイント(eye)をそのまま動かすと挙動がおかしくなります。
それは、rayDirectionというロケーターが置き去りになるからです。

目の関連のジョイント、方向ベクトルのロケーター、これらをグループ化して動かせば問題ないでしょう。

関連記事

  1. GDC2018の講演から学ぶ『Horizon Zero Dawn』四足動物の後ろ足IK

    2021-01-04

  2. キューブ1個で15分で作る!ビル景観のプロトタイピング!

    2021-07-21

  3. Mayaでスキンウェイトを手早くつける3つの方法

    2020-11-24

  4. 基本的なシーンをチェックするスクリプト10選!

    2021-11-24

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

コメント

ABOUT

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

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

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

限定情報会員

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


免責事項

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

3DCGBOOK出版

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







スポンサー

ページ上部へ戻る