В настоящее время мои рекламные щиты реализованы путем вычисления угла между объектом и камерой.
Совершенно неверный подход.Обычная перспективная проекция OpenGL - плоскопараллельная.Таким образом, это означает, что вы обычно хотите, чтобы ваш рекламный щит был копланарным относительно вашей ближней / дальней плоскости отсечения.
Это проще всего сделать, взяв инверсию верхней левой 3 × 3 части преобразования мира в глаза.матрица, и используйте X любых Y столбцов этого в качестве базовых векторов для ваших квадратов билбордов.
Как это происходит, обратные матрицы вращения - это транспонирование.Поэтому просто возьмите векторы первой и второй строк матрицы преобразования камеры (только первые 3 элемента каждый) и используйте их в качестве основы для своих рекламных щитов.Не связывайтесь с тригонометрией или углами, тогда вы лаете не на то дерево.
Об перекрытии обычно заботятся глубинным тестированием.Для полупрозрачной геометрии отключите глубину записи и предварительно сортируйте свою геометрию далеко-близко.