Blender: add-on ~ KJ Eye Through Hair v0.3.6 取扱説明書 ~ アニメの表現でよくある髪の毛越しに目を浮き上がせる(投影).

Image

Exact Ray / Triangle Kernel

共有Node Group名は「KJ_ETH_RayTriangleKernel_v021」です。

内部のRay / Triangle判定はMöller–Trumbore方式です。

Python側ではTriangleごとにA、Edge1、Edge2、Face NormalなどのStatic Valueを事前計算します。

Shader側ではView依存のRay Origin、Incoming、Ray Directionを動的に評価します。

概念的なHit条件は、determinantがepsilonより大きいこと、uとvがTriangle内部であること、u + vが1以下であること、tがDepth Marginより大きいこと、Facing条件を満たすことです。

Triangle HitのUnionはBalanced MAX Treeを使用します。

長いSerial MAX Chainへ戻してはいけません。

World-to-Local Transform Strategy

Target TriangleはTarget Local Coordinatesで保持します。

Target Objectを移動、回転、拡大縮小した場合でもTriangle Constant自体は作り直しません。

World SpaceのOccluder Shading RayをTarget Local Spaceへ変換するWorld-to-Local Constantsだけを更新します。

同じTarget ObjectにEye_L、Eye_R、Brow_L、Brow_Rが存在してもObject Transformは共通です。

そのためObject単位のW2L Blockを共有します。

関連関数は_target_world_to_local_components()、_build_target_world_to_local_rays()、_set_target_world_to_local_constants()、_ensure_master_object_ray()です。

Target Runtime Node Ownership

Master Node Group Prefixは「KJ_ETH_ViewDependentReveal_v021」です。

Triangle Kernelは「KJ_ETH_RayTriangleKernel_v021」です。

Per Target Surface Groupは「KJ_ETH_TargetSurface_v021」です。

Prefixにv021が残っているのはRuntime Identityの歴史的互換性によるものです。

Add-on Versionが0.3.6だからという理由だけでPrefixを単純Renameしてはいけません。

既存Blend FileとのMigrationへ影響する可能性があります。

Master Mask Union

Final Maskは有効なTarget Unit MaskのMAX unionです。

Object A / Group 1
Object A / Group 2
Object B / Group 1
Object B / Group 2
↓
MAX
↓
Final Target Mask

新しいTarget Objectだけを登録してGroupが0件の場合、そのObjectはMask 0相当として扱います。

他の既存Target Maskを無効にしてはいけません。

Incremental Add Target Group

v0.3.1以降では、Target Vertex Groupを追加した際にRuntime全体を再構築しません。

新規Target Unitだけを解析します。

そのUnitのTarget Surface Subgroupだけを構築または更新します。

既存のObject W2L Blockがあれば再利用します。

Master Target Nodeを追加または更新します。

最後に軽量なMAX Union / Outputだけを更新します。

Overlay CacheもTarget Unit単位で追加します。

Add Target中はHandler Suspend Transactionで処理します。

これによりAdd操作自身が発生させるDepsgraph Geometry通知を重複処理しません。

Transform Fast Path

Target ObjectのPure Transformでは_update_target_transform_only()を優先します。

変更されたObjectだけを処理します。

Matrix Signatureが変化したObjectだけW2Lを更新します。

Geometry Analysisは実行しません。

Solid Overlayは必要な場合だけ更新します。

Material Preview / RenderedではSolid Overlay更新を省略します。

Solid Overlay更新は最大約30fpsへThrottleします。

TransformとGeometry Flagが同時に通知された場合、Transformは即処理し、Geometry処理はDeferredへ回します。

コメント

コメントを残す

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

CAPTCHA