Realistic Oceans Using Mesh Deformation!

like I said, bones would be grouped in to multiple tables, so you could have 50+ bones per table and only check one of them (preferably center). Make a second camera with a FOV of ~100 (or more), and have that camera be checking if a group of bones is in view or not. The impact of this for me is negligible, and is significantly compensated with the performance gains.

example:

local BoneGroups = {
   {bone1, bone2, etc.};
   {bone1, bone2, etc.};
   {bone1, bone2, etc.};
   {bone1, bone2, etc.};
};
local AcceptedBoneGroups = {1, 2, 3, 4};

for i, V in pairs(AcceptedBoneGroups) do 
    for _, P in pairs(BoneGroups[V]) do
        -- transform bones
    end
end

you would refresh the AcceptedBoneGroups table before transforming the bones.

5 Likes