PMG

Форумы по созданию игр
Текущее время: 26 апр 2024 00:39

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 42 ]  На страницу 1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: Полупрозрачность в OpenGL (сортировка)
СообщениеДобавлено: 16 июл 2005 05:27 
Не в сети
Любитель
Аватара пользователя

Зарегистрирован: 16 июл 2005 04:00
Сообщения: 41
Откуда: Санкт-Петербург
Сейчас работаю с OpenGL и возникли проблемы с рендерингом полупрозрачных треугольников. Сортировку от дальнего к ближнему до пользователя я реализовал. Но видно, неточно рассчитываю расстояние. Считал и до центра тяжести треугольника и до каждой из его вершин. На удаленных треугольниках все работает нормально, а на приближенных друг к другу, сбивается порядок (артефакты на screenshot'е).

Не могли бы мне что-нибудь посоветовать? На одном из форумов послали на nvidia.com, колдовать со слоями (порядконезависимая прозрачность), но для меня, выложенная там статья (да и без какого-либо исходника) слишком сложна. Буду благодарен любому совету. Заранее спасибо.

ScreenShot:
Изображение


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 18 июл 2005 09:44 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
Кинь ссылку на статью.
Каким из двух методов ты пользовался:
Цитата:
The first method is to disable depth buffer writes (effectively making the z-buffer readonly)
when drawing transparent objects. The objects are still tested against the z-buffer,
so opaque objects can still occlude them, but the transparent objects themselves don’t
update the z-buffer, so they can never occlude anything else. You disable depth buffer
writes by passing GL_FALSE to glDepthMask(), as follows:
glDepthMask(GL_FALSE);
You turn depth buffer writes back on with GL_TRUE.
Unfortunately, this works only with some blending operations, such as simple additive
blending (for example, using a source and destination blend factor of GL_SOURCE_ALPHA,
GL_ONE, respectively). In most blending operations, the order the fragments are drawn in
makes a difference.
The second method of dealing with transparent object order is to sort them based on distance
from the viewer and draw the more distant objects first. This can generally be done
fairly quickly and cheaply, since the number of transparent objects in your world will usually
be fairly small.

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 18 июл 2005 09:46 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
Похоже у тебя проблема на стыках объектов? Или в пределах одного объекта?

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 19 июл 2005 00:45 
Не в сети
Любитель
Аватара пользователя

Зарегистрирован: 16 июл 2005 04:00
Сообщения: 41
Откуда: Санкт-Петербург
Сама страничка. Ссылка на файл со статьей (*.pdf - 993 кб)
Более упрощенная версия тут

Может ты (вы) разберешься (...тесь). Если выйдет, накатай (те) в форум о результатах. Заранее спасибо.

То, что на screenshot'е, получено вторым из описанных тобой (вами) методов. Z-сортировкой.

А артефакты - это неправильная последовательность вывода треугольников из разных моделей на малых расстояниях. В том числе и на пересечениях моделей... НО! Треугольники выводятся независимо от самих моделей. Модели разбиваются на состовляющие полиговы, полиговы сортируются и выводятся на рендеринг... Сначала все непрозрачные, а потом полупрозрачные в порядке от удаленных в ближним. Так что "проблема на стыках" и "в пределах одного объекта".


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 19 июл 2005 00:48 
Не в сети
Любитель
Аватара пользователя

Зарегистрирован: 16 июл 2005 04:00
Сообщения: 41
Откуда: Санкт-Петербург
Блин! Я не сразу понял... Треугольники из разных моделей глючат. Проскакивают, то из одной, то из другой. Но как раз не те, что надо. Кстати, при другом угле обзора, глюки данного участка пропадают. И появляются на другом пересечении.


Последний раз редактировалось DarkAngel 04 авг 2005 10:48, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 19 июл 2005 11:29 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
Что значит глючат? Как проскакивают?

Раз ты считаешь от viewera, то соответствено при разном угле просмотра имеешь глюк. Но свой глюк! Скорее всего.

Тебе надо реально посмотреть на цифры, которые ты получаешь, в частности на расстояние от viewera до глюкующих полигонов.

И потом не пойму, почему глюкующие полигоны не прозрачны? Или мне так кажется?

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 19 июл 2005 11:30 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
Насчет статьи у меня есть предложение: может ее перевести?

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 19 июл 2005 17:33 
Не в сети
Любитель
Аватара пользователя

Зарегистрирован: 16 июл 2005 04:00
Сообщения: 41
Откуда: Санкт-Петербург
С переводом - это не ко мне. Я её в общих чертах еле-еле понял.
А с треугольниками... Они прозрачные. Просто выводятся не в том порядке, вот и кажутся непрозрачными.
Расстояние смотреть бессмыслено. Так как не знаю до чего это расстояние олжно быть. Знаю от камеры, но до какой части треугольника, так и не понял.

Кстати, реализовал BSP-конвейер. Правда, он на рендеринг выдает раз в 10-12 больше полигонов, чем было в исходном. Да и формирование дерева - ОЧЕНЬ долго. до 4-6 минут при нескольуих моделях. И рендеринг раз в 5-7 медленней, чем при сортировке.

Но вот сравнение:
Изображение

ПРОСТИТЕ, ЧТО ТАКОЙ ШИРОКИЙ РИСУНОК


Последний раз редактировалось DarkAngel 19 июл 2005 17:36, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 19 июл 2005 17:33 
Не в сети
Любитель
Аватара пользователя

Зарегистрирован: 16 июл 2005 04:00
Сообщения: 41
Откуда: Санкт-Петербург
А если получится перевести статью, скажу СПАСИБО за ссылку на перевод


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 20 июл 2005 10:40 
Не в сети
Любитель
Аватара пользователя

Зарегистрирован: 16 июл 2005 04:00
Сообщения: 41
Откуда: Санкт-Петербург
Magic Wolf, посмотри исходник с примером к статье... Может он тебе поможет в понимании сути.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 20 июл 2005 12:32 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
Переводить пока некогда ;(. Я подумал может тебе хочется разобраться со статьей, тогда можно тебе сделать просто черновой перевод, а я потом его добью.

BSP формируется действительно долго ;(.

У тебя треугольники пересекаются? Если нет, то проще, если пересекаются, то их придется бить. Надо найти у треугольников zmax&zmin во всем трем точкам. Фактически это оболочка треугольника. Потом берешь и сортируешь по zmax, т.е. максимальное удаление - вывод первым.

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Только сейчас заметил ответ. Sorry.
СообщениеДобавлено: 04 авг 2005 09:52 
Не в сети
Любитель
Аватара пользователя

Зарегистрирован: 16 июл 2005 04:00
Сообщения: 41
Откуда: Санкт-Петербург
MagicWolf писал(а):
У тебя треугольники пересекаются? Если нет, то проще, если пересекаются, то их придется бить. Надо найти у треугольников zmax&zmin во всем трем точкам. Фактически это оболочка треугольника. Потом берешь и сортируешь по zmax, т.е. максимальное удаление - вывод первым.
Пересекаются. Правда, я плохо поимаю алгоритм определения, пересекаются ли треугольлники. (хотя, вроде на algolist.manual.ru видел) Сечется ли треугольник плостостью (BSP-конвейер) это понятно. А вот с треугольник-треугольник... А не геморно ли это будет? В смысле, для проца?? Треугольников то много...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 04 авг 2005 13:34 
Не в сети
Постоянный
Аватара пользователя

Зарегистрирован: 10 фев 2005 12:21
Сообщения: 51
Откуда: Красноярск
А это ничего, если переводить будет тот, кто не программирует на С++ с OpenGL?
Я знал, что ничего! :)
Вобщем, я начну в свободное время переводить.
Заодно узнаю ваше мнение о моём английском. :P


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 04 авг 2005 13:54 
Не в сети
Любитель
Аватара пользователя

Зарегистрирован: 16 июл 2005 04:00
Сообщения: 41
Откуда: Санкт-Петербург
ENGor писал(а):
А это ничего, если переводить будет тот, кто не программирует на С++ с OpenGL?
Я знал, что ничего! :)
Вобщем, я начну в свободное время переводить.
Заодно узнаю ваше мнение о моём английском. :P
Лично я буду БЛАГОДАРЕН! Очень хочется увидеть не машинный перевод. Просто там могут быть (и есть) терминалогия комп. графики. Может завести в тупик. Если понадобится, я постараюсь помочь. (у меня только технический английский хоть на каком-то, отличном от нуля уровне)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 04 авг 2005 13:56 
Не в сети
Любитель
Аватара пользователя

Зарегистрирован: 16 июл 2005 04:00
Сообщения: 41
Откуда: Санкт-Петербург
Только please, переводи если начнешь вот это (http://developer.nvidia.com/attach/6545), то что не упрощенная версия.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 42 ]  На страницу 1, 2, 3  След.

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 74


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB