Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.08.2010, 10:57   #1
Simply-Art
Программист и
Участник клуба
 
Аватар для Simply-Art
 
Регистрация: 29.10.2006
Сообщений: 1,265
По умолчанию Нормали в OpenGL

Такая ситуация, рисую я карту, но не по треугольникам, а по квадратам. Код привожу с абстрактными переменными, так как в моем исходном вы точно не разберетесь. PX1,...,PX4, PY1,...,PY4, PZ1,...,PZ4 - это массивы точек, чтобы понятней было первая точка пространства в квадрате это PX1[1],PY1[1],PZ1[1] и так далее до PX4[1],PY4[1],PZ4[1] вот это координаты первого квадрата. Собственно код:
Код:
 
glBegin (GL_QUADS);
   for i:=1 to n do
    begin
     glVertex3f(PX1[i],PY1[i],PZ1[i]);
     glVertex3f(PX2[i],PY2[i],PZ2[i]);
     glVertex3f(PX3[i],PY3[i],PZ3[i]);
     glVertex3f(PX4[i],PY4[i],PZ4[i]);
     allN:=GetNormals(); // функция, которую я не могу сделать
     glNormal3fv(@allN);
GetNormals() у меня есть только для трех точек, но приведу пример такой, если квадрат с такими координатами (0,0,0), (1,1,0), (1,0,1), (0,0,1) привожу рисунок ниже. На нем слева показана проекция квадрата, точки что лежат в плоскости XoZ выделены красным, но из рисунка видно что это далеко не квадрат, и сам OpenGL при прорисовке квадрата с такими координатами, рисует то что мы видим справа, то есть разбивает на 2 треугольника.
Вот, теперь вопрос, как вычислить нормаль к такой "фигуре" или придется всю карту рисовать треугольниками?
Изображения
Тип файла: bmp графика.bmp (28.0 Кб, 150 просмотров)
Simply-Art вне форума Ответить с цитированием
Старый 25.08.2010, 14:43   #2
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

А как ты себе вообще представляешь саму эту штуковину? Она же в конце концов драйвером или чем ещё, не знаю, будет разбита на 2 треугольника, а разбить можно четырьмя способами. Ну, два из них маловероятны, учитывая, что квадраты должны нормально разбиваться, остаются два.

Последний раз редактировалось Somebody; 25.08.2010 в 14:56.
Somebody вне форума Ответить с цитированием
Старый 25.08.2010, 18:08   #3
Simply-Art
Программист и
Участник клуба
 
Аватар для Simply-Art
 
Регистрация: 29.10.2006
Сообщений: 1,265
По умолчанию

Цитата:
Сообщение от Somebody Посмотреть сообщение
будет разбита на 2 треугольника, а разбить можно четырьмя способами. Ну, два из них маловероятны, учитывая, что квадраты должны нормально разбиваться, остаются два.
4 способа это только в другом пространстве, не из нашего мира
Я просто думал есть некая автоматическая функция для задания нормалей для таких фигур, ведь он ее все-же разбивает, думал и нормали он автоматом сможет разбить на две. Может кто сможет подсказать, если нет так буду переделывать весь код, что поделаешь.
Simply-Art вне форума Ответить с цитированием
Старый 26.08.2010, 12:10   #4
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

Цитата:
Сообщение от Simply-Art Посмотреть сообщение
4 способа это только в другом пространстве, не из нашего мира
Действительно, 4 - это в другом, в нашем 6. Кроме вершин 1 и 3, 2 и 4, можно ещё разбить по 1 и 2, 2 и 3, 3 и 4, 4 и 1.
Он её разбивает, но никто же не знает как. А если на соседнем компе он по-другому разобьёт, это нормально будет?
Somebody вне форума Ответить с цитированием
Старый 26.08.2010, 12:14   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

да и треугольники всеж быстрее рисуются
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 26.08.2010, 17:51   #6
Simply-Art
Программист и
Участник клуба
 
Аватар для Simply-Art
 
Регистрация: 29.10.2006
Сообщений: 1,265
По умолчанию

Ладно судя по всему на это нет другого решения - как чертить треугольниками
Simply-Art вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
opengl alhon Gamedev - cоздание игр: Unity, OpenGL, DirectX 2 10.10.2013 15:02
OpenGL revaldo666 Общие вопросы C/C++ 2 22.07.2010 10:39
OpenGL Paul_AG Общие вопросы C/C++ 3 02.02.2010 20:28
Нахождение нормали к ребру прямоугольника dr.Chas Общие вопросы по программированию, компьютерный форум 1 05.01.2010 21:16
OpenGL Paul_AG C++ Builder 20 14.09.2009 19:07