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へ回します。


コメントを残す