Обнаружение того, отражает ли матрица объект в OpenGL
Когда объект зеркально отражается (произведение каждой оси вектора масштаба < 0), режим отбраковки должен быть инвертирован, чтобы предотвратить визуальный артефакт. (Видна только обратная сторона)
Куб выглядит нормально, если scaleX > 0:
Но это выглядит странно, если scaleX < 0:
Мы можем инвертировать режим отбора, чтобы решить эту проблему.
gl.cullFace(gl.FRONT)
Тем не менее, я хотел бы проверить матрицу, следует ли инвертировать отбраковку или нет. Но из-за поворота я не уверен, как я могу это сделать.
Есть ли способ определить, отражает ли матрица объект?
1 ответ
Решение
Вы можете просто проверить, является ли определитель вашей матрицы трансформации отрицательным. Это также можно интерпретировать как изменение "руки" вашего координатного пространства.