#opengl
#opengl
Вопрос:
Мне было интересно, как я мог бы взять вершины каждой сферы, хранящиеся в моем буфере, и вычислить нормали к каждой из них отдельно. Возможно ли это сделать в OpenGL?
Ответ №1:
OpenGL обычно используется для визуализации сеток, а не для их вычисления. А нормали являются частью данных сетки. Обычно за предоставление нормалей отвечает создатель сетки.
В случае сферы нормали чертовски просты для идеального вычисления. Для заданного положения вектора P на сфере, центром которого является C, нормалью является norm(P - C)
, где norm
нормализует вектор.
Комментарии:
1. мой центр равен (0,0,0), который является нулевым вектором
2. @TrtTrt: Тогда это упрощает вычисление, да?
3. о, хорошо. Я думал, что это вызовет проблемы
4. @TrtTrt Убедитесь, что вы полностью понимаете, что такое нормаль и какими свойствами она должна обладать. Затем убедитесь, что вы полностью понимаете решение Nicol для вычисления нормалей к сферам и почему оно работает. А затем подумайте еще раз, может ли это вызвать проблемы, когда центр равен (0,0,0), будь то концептуальные или математические. (И, наконец, примите и проголосуйте за этот совершенно правильный ответ.)
5. @TrtTrt: Вы не можете рисовать нормали. Вы можете рисовать треугольники; вы можете рисовать линии. Вы можете рисовать линии, которые случайно указывают вдоль направления нормалей, но это не происходит само по себе. Вы должны на самом деле это сделать. В любом случае, это совершенно другой вопрос, поэтому вы должны задать его.