![]() |
|
Модераторы: Rickert, Alexeis, BorisVorontsov |
![]()
|
|
| VampirDX |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 24.5.2007 Где: Россия, Москва Репутация: нет Всего: нет |
После создания треугольника, он рисуется перед нами лицевой стороной, вроде как это просто общепринято. Но при повороте камеры вокруг треугольника, можно увидеть его оборотную сторону, которая конечно же не отличается от лицевой. Задача состоит в том, чтобы можно было определить сторону треугольника - лицевую или оборотную, покрасить их..допустим в разные цвета.
Есть у кого какие-нибудь идеи? |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 5 Всего: 459 |
Нарисовать 2 треугольника отстающих друг от друга на малую величину вдоль нормали. каждый из них покрасить в свой цвет. При этом можно отключить отрисовку полигонов повернутых к нам обратной стороной. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| VampirDX |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 24.5.2007 Где: Россия, Москва Репутация: нет Всего: нет |
Alexeis а если, допустим, треугольников 10 тысяч, и система требовательна к ресурсам?
|
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 5 Всего: 459 |
VampirDX, полигон нельзя покрасить 2 раза. Это должны быть 2 полигона.
Много полигонов часто делают из-за того что не используют сглаживание. Например при включенном сглаживании цилиндр в основании которого 6ти/12ти гранник выглядит так как если бы там была окружность или эллипс. Но 10 тысяч полигонов это еще не смертельная величина. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| VampirDX |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 24.5.2007 Где: Россия, Москва Репутация: нет Всего: нет |
Alexeis да, не спорю, но в связи со слабой машиной - любой лишний полигон смертелен...
|
|||
|
||||
| VampirDX |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 24.5.2007 Где: Россия, Москва Репутация: нет Всего: нет |
так что, совсем нет идей как, без создания лишних треугольников, определить, на какую сторону смотрит камера?
|
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 5 Всего: 459 |
Определить, то запросто, по нормали, вопрос в том, чтобы отобразить. Можно выключить отрисовку обратных сторон, тогда они будут видны только когда повернуты нормалью к тебе иначе будет пустота. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| VampirDX |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 24.5.2007 Где: Россия, Москва Репутация: нет Всего: нет |
отображение....скажем так...когда камера смотрит на заднюю часть, треугольник вообще не должен рисоваться...а про цвет..думал, так будет просто нагляднее показать...
|
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 5 Всего: 459 |
Отсечение, насколько я помню включается GL_CULL_FACE
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| VampirDX |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 24.5.2007 Где: Россия, Москва Репутация: нет Всего: нет |
Alexeis а как по нормали определить, на какую сторону камера смотрит?
|
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 5 Всего: 459 |
Если нормаль с вектором камеры составляют угол косинус которого меньше 1 (от 90 до 270) то треугольник виден иначе он не виден и не рисуется. OpenGL сам его не будет рисовать в режиме GL_CULL_FACE. Я там глянул можно по разному рисовать лицевую обратную стороны. Например Лицевую закрашивать, а обратную каркасно. glPolygonMode -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| VampirDX |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 24.5.2007 Где: Россия, Москва Репутация: нет Всего: нет |
Alexeis ладно, спасибо большое, ночью займусь тогда.
тему пока не помечу решенной, может более конкретный вопрос появится. |
|||
|
||||
| VampirDX |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 24.5.2007 Где: Россия, Москва Репутация: нет Всего: нет |
так...попробовал посмотреть, как все это выглядит на деле. А на деле все, как всегда, почти хорошо. По какой-то причине, первый и последний треугольник, из 5-ти (по описанию рисования) , он путает, т.е. определяет их передние стороны как задние.
|
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 5 Всего: 459 |
Нормали неверно рассчитаны. При вычислении нормалей важен порядок вершин по которым вычисляются вектора. От этого зависит получиться внешняя нормаль или внутренняя. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| VampirDX |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 24.5.2007 Где: Россия, Москва Репутация: нет Всего: нет |
Alexeis тогда получается, как можно подстраховать подсчеты? Вручную ведь все нормали не просчитаешь, когда их сотни тысяч. Или только перед занесением в vertex просчитывать нормали на предмет аномалий?
|
|||
|
||||
![]()
|
| Вы можете найти полезным что... | |
|
|
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |