Blender : add-on「Eye Look Driver」取扱説明書:黒目を白目スクリーン上でカメラ方向に滑らせる

Cropped d4cd7ac1381dc72b731d1c4cdf542dd3.png

はじめに

人物やキャラクターの目を作るとき、リアルな眼球として球体を使い、黒目や虹彩を眼球の一部として作る方法があります。

この方法は自然ですが、斜め方向から見ると、黒目が球面の奥へ回り込み、見えにくくなることがあります。特にアニメ調・イラスト調の表現では、「横を向いていても黒目の形を見せたい」という場面があります。

そこで本アドオン KenJin Eye Look Driver v1.4.0 では、黒目を回転させるのではなく、白目を模したスクリーン上で黒目を上下左右に滑らせる方式を採用しています。

黒目Objectは Location XLocation Z のdriverで制御され、カメラ方向に応じて白目スクリーン上を移動します。黒目ObjectにはShrinkwrap Modifierを併用することで、白目スクリーン表面に貼り付いたように見せることができます。

BlenderのDriverは、Driver Variablesを使ってプロパティやTransform Channelを参照できます。公式マニュアルでも、object dataをPython式で直接参照するよりDriver Variablesを使う方が依存関係を追跡しやすいと説明されています。本アドオンもこの考え方に合わせ、CameraやReference ObjectのTransform Channel、Pupil ObjectのCustom PropertyをDriver Variablesとして使用します。

要望があれば公開もあります.


このアドオンでできること

KenJin Eye Look Driver v1.4.0では、以下の操作ができます。

機能内容
黒目の左右移動Pupil ObjectのLocation Xをdriver制御
黒目の上下移動Pupil ObjectのLocation Zをdriver制御
カメラ方向追従CameraとReference Objectの位置差から方向を計算
白目スクリーン貼り付き黒目Object側にShrinkwrap Modifierを併用
左右別設定Left Eye / Right Eyeを個別に設定
片目だけApply左目だけ、右目だけ、設定済み側だけApply可能
中心点OffsetBase X Offset / Base Z Offsetで黒目の中心位置を調整
リアルタイム調整Offset、Range、Sensitivity、Min/MaxをNパネルから即時調整
値の保存Pupil ObjectのCustom Propertyに値を保存
add-on非起動時の保持.blend内のPupil Objectが設定値を保持

基本構造

推奨するObject構成は次のようになります。

Human / Head / Face
└─ Eye_Base.L ← Left Reference Object
├─ White_Screen.L ← Shrinkwrap Target
└─ Pupil.L ← Left Pupil Object

Human / Head / Face
└─ Eye_Base.R ← Right Reference Object
├─ White_Screen.R ← Shrinkwrap Target
└─ Pupil.R ← Right Pupil Object

Camera ← Camera Object

各Objectの役割

Object役割
Camera Object黒目が追随する方向の参照先
Pupil Object実際にLocation X/Z driverが入る黒目Object
Reference Object目の基準位置・方向を表すObject
White Screen白目を模した平面または曲面。Shrinkwrap Targetとして使う

なぜTrack ToではなくLocation Driverを使うのか

Track ToやDamped Trackは、Objectの向きをTarget方向へ向けるためのConstraintです。つまり、基本的には回転制御です。

しかし今回の目的は、黒目Objectを回転させることではありません。

目的は次です。

黒目の面の向きを保ったまま、
白目スクリーン上を上下左右に滑らせる。

これにより、実際の球体眼球では黒目が見えにくくなるような角度でも、黒目の見かけ形状を維持できます。


Shrinkwrapとの関係

黒目Objectには、必要に応じてShrinkwrap Modifierを設定します。

Pupil.L
└─ Shrinkwrap Modifier
Target = White_Screen.L

Shrinkwrap Modifierは、変更されるObjectの各頂点を別ObjectのSurfaceへ移動させるModifierです。Blender公式マニュアルでも、Shrinkwrap ModifierはObjectを別ObjectのSurfaceへ“収縮”させるためのModifierとして説明されています。

推奨設定

項目推奨
TargetWhite_Screen.L / White_Screen.R
MethodNearest Surface Point または Project
避けたいMethodNearest Vertex
Offset0.001〜0.005程度
白目スクリーン必要ならSubdivision Surfaceを追加

Nearest Vertex は近い頂点に寄るため、白目スクリーンの頂点数が少ない場合に段階的な動きになりやすいです。滑らかなスクリーン移動を狙う場合は、まず Nearest Surface Point または Project を試します。


コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA