Модераторы: Rickert, Alexeis, BorisVorontsov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Degenerate triangles by glDisable(GL_CULL_FACE), Вырожденные треугольники в стрипах. 
:(
    Опции темы
Magistrus
Дата 26.8.2013, 11:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Жив
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 14.6.2006
Где: г. Одесса

Репутация: нет
Всего: 1



В OpenGl  в режиме glDisable(GL_CULL_FACE) отображаются вырожденные треугольники в стрипах, подскажите пожайлуста, как можно этого избежать. 

Отображение двух сторон примитива необходимо. Добавление второй обратной геометрии не приемлимо.


--------------------
~ вот такая вот загагулина ~ 
PM MAIL WWW ICQ Skype   Вверх
Bitter
Дата 26.8.2013, 13:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный лентяй
***


Профиль
Группа: Завсегдатай
Сообщений: 1209
Регистрация: 15.8.2004
Где: Харьков, Ukraine

Репутация: 1
Всего: 27



Что такое вырожденные треугольники в стрипах?
PM MAIL ICQ Skype   Вверх
Alexeis
Дата 26.8.2013, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 5
Всего: 459



Bitter, Есть 2 метода для уменьшения размеров массива вершин GL_TRIANGLE_STRIP / GL_TRIANGLE_FAN . Фактически в обеих методах первые 2е вершины берутся из предыдущего треугольника. Стрип дает ленту, фан дает звезду. А вырожденные значит 3 точки на одной линии.

Magistrus, вырожденные треугольники как-то неправильно отображаются? Может им просто нужно задать правильные нормали?


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Bitter
Дата 26.8.2013, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный лентяй
***


Профиль
Группа: Завсегдатай
Сообщений: 1209
Регистрация: 15.8.2004
Где: Харьков, Ukraine

Репутация: 1
Всего: 27



Цитата(Alexeis @  26.8.2013,  14:17 Найти цитируемый пост)
вырожденные треугольники как-то неправильно отображаются?

Ок как могут вообще правильно отображаться вырожденные треугольники? Если три точки на одной прямой то это по-моему явно какой-то косяк геометрии. И какая может быть нормаль к отрезку?
PM MAIL ICQ Skype   Вверх
Alexeis
Дата 26.8.2013, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 5
Всего: 459



Цитата(Bitter @  26.8.2013,  16:10 Найти цитируемый пост)
 И какая может быть нормаль к отрезку? 

  Можно посчитать нормаль как среднее арифметическое 2х нормалей соседних невырожденных треугольников.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Bitter
Дата 26.8.2013, 21:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный лентяй
***


Профиль
Группа: Завсегдатай
Сообщений: 1209
Регистрация: 15.8.2004
Где: Харьков, Ukraine

Репутация: 1
Всего: 27



А если вырожденных два или больше подряд? smile
PM MAIL ICQ Skype   Вверх
Magistrus
Дата 27.8.2013, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Жив
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 14.6.2006
Где: г. Одесса

Репутация: нет
Всего: 1



Цитата(Alexeis @ 26.8.2013,  14:17)

Magistrus, вырожденные треугольники как-то неправильно отображаются? Может им просто нужно задать правильные нормали?


Они отображаются правильно - в виде линии, но хотелось бы чтобы они не отображались вовсе.

Добавлено @ 12:14
Цитата(Bitter @ 26.8.2013,  15:10)
Цитата(Alexeis @  26.8.2013,  14:17 Найти цитируемый пост)
вырожденные треугольники как-то неправильно отображаются?

Ок как могут вообще правильно отображаться вырожденные треугольники? Если три точки на одной прямой то это по-моему явно какой-то косяк геометрии. И какая может быть нормаль к отрезку?


вырожденные треугольники нужны для соеденения нескольких стрипов в один, когда геометрии нельзя соеденить треугольником. 

Правильное отображение вырожденного треугольника это линия, соеденяющая стрипы. 

Это сообщение отредактировал(а) Magistrus - 27.8.2013, 12:16
--------------------
~ вот такая вот загагулина ~ 
PM MAIL WWW ICQ Skype   Вверх
Bitter
Дата 27.8.2013, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный лентяй
***


Профиль
Группа: Завсегдатай
Сообщений: 1209
Регистрация: 15.8.2004
Где: Харьков, Ukraine

Репутация: 1
Всего: 27



Magistrus, а можно скриншот? Интересно как это выглядит
PM MAIL ICQ Skype   Вверх
Magistrus
Дата 27.8.2013, 13:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Жив
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 14.6.2006
Где: г. Одесса

Репутация: нет
Всего: 1



Magistrus, а можно скриншот? Интересно как это выглядит

glDisable(GL_CULL_FACE)
user posted image
glEnabel(GL_CULL_FACE)
user posted image
--------------------
~ вот такая вот загагулина ~ 
PM MAIL WWW ICQ Skype   Вверх
Alexeis
Дата 27.8.2013, 13:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 5
Всего: 459



Ну гугл выдает решение с glEnable(GL_PRIMITIVE_RESTART)​  http://www.opengl.org/wiki/Vertex_Renderin...imitive_Restart
Т.е. не использовать вообще вырожденные треугольники. 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Bitter
Дата 27.8.2013, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный лентяй
***


Профиль
Группа: Завсегдатай
Сообщений: 1209
Регистрация: 15.8.2004
Где: Харьков, Ukraine

Репутация: 1
Всего: 27



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

Еще вариант, не знаю поможет ли, попробовать рисовать переднюю и заднюю часть отдельно с включенным отсечением. То есть сначала рисуем треугольниси CW потом CCW. Ну или наоборот
PM MAIL ICQ Skype   Вверх
Magistrus
Дата 27.8.2013, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Жив
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 14.6.2006
Где: г. Одесса

Репутация: нет
Всего: 1



Цитата(Bitter @  27.8.2013,  13:56 Найти цитируемый пост)
Ну в данном случае похоже что геометрия построена не правильно, даже используя стрип, можно построить этот прямоугольник без таких швов. Ну и в конце концов можно использовать обычный способ отрисовки треугольников, тогда таких косяков не будет.


Геометрия поступает из внешнего источника и я ее отображаю как есть. Т.е. изменять геометрию нельзя.

Цитата(Bitter @  27.8.2013,  13:56 Найти цитируемый пост)
Еще вариант, не знаю поможет ли, попробовать рисовать переднюю и заднюю часть отдельно с включенным отсечением. То есть сначала рисуем треугольниси CW потом CCW. Ну или наоборот 


Я упоминал в начале темы, что добаление дополнительной геометрий не возможно, опять же из-за политики отображать все как есть.

Добавлено через 6 минут и 33 секунды
Цитата(Alexeis @  27.8.2013,  13:47 Найти цитируемый пост)
Т.е. не использовать вообще вырожденные треугольники.  


К сожелению это не поможет, так как вырожденные треугольники есть в исходных данных и удаление их из индексов, приводит к неправильному отображению сцены.
--------------------
~ вот такая вот загагулина ~ 
PM MAIL WWW ICQ Skype   Вверх
Alexeis
Дата 27.8.2013, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 5
Всего: 459



Magistrus, так не просто удалять, а перезапускать стрип при помощи glEnable(GL_PRIMITIVE_RESTART)​ . Я сам не пробовал, но в вики пишут, что В OpenGL 3.1 как раз ввели этот механизм для устранения "дегнератов".


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Magistrus
Дата 27.8.2013, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Жив
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 14.6.2006
Где: г. Одесса

Репутация: нет
Всего: 1



Цитата(Alexeis @  27.8.2013,  14:40 Найти цитируемый пост)
Magistrus, так не просто удалять, а перезапускать стрип при помощи glEnable(GL_PRIMITIVE_RESTART)​ . Я сам не пробовал, но в вики пишут, что В OpenGL 3.1 как раз ввели этот механизм для устранения "дегнератов". 


Не помогает :(

user posted image

да и мне нужна поддержка OpenGl 2.0  и выше


Это сообщение отредактировал(а) Magistrus - 27.8.2013, 17:17
--------------------
~ вот такая вот загагулина ~ 
PM MAIL WWW ICQ Skype   Вверх
Bitter
Дата 27.8.2013, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный лентяй
***


Профиль
Группа: Завсегдатай
Сообщений: 1209
Регистрация: 15.8.2004
Где: Харьков, Ukraine

Репутация: 1
Всего: 27



Цитата(Magistrus @  27.8.2013,  14:09 Найти цитируемый пост)
Я упоминал в начале темы, что добаление дополнительной геометрий не возможно, опять же из-за политики отображать все как есть.

Так это не дополнительная геометрия, она остается той же самой, просто рендер этой геометрии делайте два раза, первый раз с включенным отображением GL_CW, а второй раз с GL_CCW. Если я не ошибаюсь это делает функция glFrontFace

Это сообщение отредактировал(а) Bitter - 27.8.2013, 17:47
PM MAIL ICQ Skype   Вверх
Ответ в темуСоздание новой темы Создание опроса
Вы можете найти полезным что...
Alexeis
Rickert
  • Английская документация по DirectX лежит где-то здесь.
  • Английская документация по OpenGL лежит где-то там.
  • Гейм-дев у нас обсуждают где-то тут

Ждём вас! С уважением, Alexeis, Rickert.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема »


 




[ Время генерации скрипта: 0.0994 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.