はじめに
人物やキャラクターの目を作るとき、リアルな眼球として球体を使い、黒目や虹彩を眼球の一部として作る方法があります。
この方法は自然ですが、斜め方向から見ると、黒目が球面の奥へ回り込み、見えにくくなることがあります。特にアニメ調・イラスト調の表現では、「横を向いていても黒目の形を見せたい」という場面があります。
そこで本アドオン KenJin Eye Look Driver v1.4.0 では、黒目を回転させるのではなく、白目を模したスクリーン上で黒目を上下左右に滑らせる方式を採用しています。
黒目Objectは Location X と Location 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可能 |
| 中心点Offset | Base 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として説明されています。
推奨設定
| 項目 | 推奨 |
|---|---|
| Target | White_Screen.L / White_Screen.R |
| Method | Nearest Surface Point または Project |
| 避けたいMethod | Nearest Vertex |
| Offset | 0.001〜0.005程度 |
| 白目スクリーン | 必要ならSubdivision Surfaceを追加 |
Nearest Vertex は近い頂点に寄るため、白目スクリーンの頂点数が少ない場合に段階的な動きになりやすいです。滑らかなスクリーン移動を狙う場合は、まず Nearest Surface Point または Project を試します。


コメントを残す