вычислить нормали к вершинам сферы

#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: Вы не можете рисовать нормали. Вы можете рисовать треугольники; вы можете рисовать линии. Вы можете рисовать линии, которые случайно указывают вдоль направления нормалей, но это не происходит само по себе. Вы должны на самом деле это сделать. В любом случае, это совершенно другой вопрос, поэтому вы должны задать его.