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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [C / OpenGL] Определение стороны треугольника 
:(
    Опции темы
VampirDX
Дата 5.11.2010, 14:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 105
Регистрация: 24.5.2007
Где: Россия, Москва

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



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

Есть у кого какие-нибудь идеи?
PM MAIL   Вверх
Alexeis
Дата 5.11.2010, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


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

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



Цитата(VampirDX @  5.11.2010,  15:41 Найти цитируемый пост)
чтобы можно было определить сторону треугольника - лицевую или оборотную, покрасить их..допустим в разные цвета.

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


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

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

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


Шустрый
*


Профиль
Группа: Участник
Сообщений: 105
Регистрация: 24.5.2007
Где: Россия, Москва

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



Alexeis а если, допустим, треугольников 10 тысяч, и система требовательна к ресурсам?

PM MAIL   Вверх
Alexeis
Дата 5.11.2010, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


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

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



VampirDX, полигон нельзя покрасить 2 раза. Это должны быть 2 полигона.
  
Цитата(VampirDX @  5.11.2010,  17:03 Найти цитируемый пост)
а если, допустим, треугольников 10 тысяч

  Много полигонов часто делают из-за того что не используют сглаживание. Например при включенном сглаживании цилиндр в основании которого 6ти/12ти гранник выглядит так как если бы там была окружность или эллипс.
  Но 10 тысяч полигонов это еще не смертельная величина.


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

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

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


Шустрый
*


Профиль
Группа: Участник
Сообщений: 105
Регистрация: 24.5.2007
Где: Россия, Москва

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



Alexeis да, не спорю, но в связи со слабой машиной - любой лишний полигон смертелен...
PM MAIL   Вверх
VampirDX
Дата 6.11.2010, 01:57 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 105
Регистрация: 24.5.2007
Где: Россия, Москва

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



так что, совсем нет идей как, без создания лишних треугольников, определить, на какую сторону смотрит камера?
PM MAIL   Вверх
Alexeis
Дата 6.11.2010, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


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

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



Цитата(VampirDX @  6.11.2010,  02:57 Найти цитируемый пост)
определить, на какую сторону смотрит камера? 

  Определить, то запросто, по нормали, вопрос в том, чтобы отобразить. Можно выключить отрисовку обратных сторон, тогда они будут видны только когда повернуты нормалью к тебе иначе будет пустота.


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

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

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


Шустрый
*


Профиль
Группа: Участник
Сообщений: 105
Регистрация: 24.5.2007
Где: Россия, Москва

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



отображение....скажем так...когда камера смотрит на заднюю часть, треугольник вообще не должен рисоваться...а про цвет..думал, так будет просто нагляднее показать...
PM MAIL   Вверх
Alexeis
Дата 6.11.2010, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


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

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



  Отсечение, насколько я помню включается GL_CULL_FACE 


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

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

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


Шустрый
*


Профиль
Группа: Участник
Сообщений: 105
Регистрация: 24.5.2007
Где: Россия, Москва

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



Alexeis а как по нормали определить, на какую сторону камера смотрит?
PM MAIL   Вверх
Alexeis
Дата 6.11.2010, 17:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


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

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



Цитата(VampirDX @  6.11.2010,  17:40 Найти цитируемый пост)
Alexeis а как по нормали определить, на какую сторону камера смотрит? 

  Если нормаль с вектором камеры составляют угол косинус которого меньше 1 (от 90 до 270) то треугольник виден иначе он  не виден и не рисуется. OpenGL сам его не будет рисовать в режиме GL_CULL_FACE. Я там глянул можно по разному рисовать лицевую обратную стороны. Например Лицевую закрашивать, а обратную каркасно. glPolygonMode


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

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

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


Шустрый
*


Профиль
Группа: Участник
Сообщений: 105
Регистрация: 24.5.2007
Где: Россия, Москва

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



Alexeis ладно, спасибо большое, ночью займусь тогда.
тему пока не помечу решенной, может более конкретный вопрос появится.
PM MAIL   Вверх
VampirDX
Дата 7.11.2010, 21:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 105
Регистрация: 24.5.2007
Где: Россия, Москва

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



так...попробовал посмотреть, как все это выглядит на деле. А на деле все, как всегда, почти хорошо. По какой-то причине, первый и последний треугольник, из 5-ти (по описанию рисования) , он путает, т.е. определяет их передние стороны как задние. 
PM MAIL   Вверх
Alexeis
Дата 8.11.2010, 02:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


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

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



Цитата(VampirDX @  7.11.2010,  22:32 Найти цитируемый пост)
По какой-то причине, первый и последний треугольник, из 5-ти (по описанию рисования) , он путает, т.е. определяет их передние стороны как задние.  

  Нормали неверно рассчитаны. При вычислении нормалей важен порядок вершин по которым вычисляются вектора. От этого зависит получиться внешняя нормаль или внутренняя.


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

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

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


Шустрый
*


Профиль
Группа: Участник
Сообщений: 105
Регистрация: 24.5.2007
Где: Россия, Москва

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



Alexeis тогда получается, как можно подстраховать подсчеты? Вручную ведь все нормали не просчитаешь, когда  их сотни тысяч. Или только перед занесением в vertex просчитывать нормали на предмет аномалий?
PM MAIL   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Вы можете найти полезным что...
Alexeis
Rickert
  • Английская документация по DirectX лежит где-то здесь.
  • Английская документация по OpenGL лежит где-то там.
  • Гейм-дев у нас обсуждают где-то тут

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

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


 




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


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

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