Тут не совсем понятно, зачем считать каждое дерево отдельно? Берем лесной массив, ограничиваем его кубом. Любое столкновение со стороной куба-это столкновение с деревом. Проверка элементарная.
А отдельно стоящих деревьев не так много в жизни. Те, что есть тоже ограничиваем кубом. Все. Вопрос с деревьями решен.
Ошибка разработчиков в том, что они используют speedTree, и им приходится снижать количество деревьев для производительности на средних настройках графики. А должно быть так, что независимо от настроек количество деревьев у всех одинаково. Но для этого придется speedTree выбросить.