Заранее очень извиняюсь, что задаю вопрос, ответ на который при нормальных условиях заведомо можно найти в поисковике за полчаса, но у меня у меня форсмажорные обстоятельства, инета почти нет.
Требуется неким образом отрендерить объём, трехмерную текстуру, в реалтайме. Каждый тексель текстуры полупрозрачен, в конце концов должно получиться что-то вроде цветастого облака, в духе такого:
Предпочтительный язык - С++, GAPI - OpenGL, целевая машина - mid-end, то есть встроенные видеокарты не интересуют.
Разыскивается любой материал по сабжу, который вы, товарищи, сочтёте подходящим, будь то сэмплы или пейперы. Ещё раз прошу прощения, смогу заглядывать в этот тред в лучшем случае раз в день на пять минут, не более, поэтому очень хотелось бы увидеть не ссылки на запрос поисковику, а прямые, чтобы можно было сказать спасибо и поставить их качаться на ночь.
NVSDK GL 10.5 render2texture3D
CUDA SDK: Volume rendering
Огромное спасибо за наводки, но это GPRS, причём не мой. Не думаю, что качать весь NVSDK ради одного сэмпла будет оптимальным решеним. Может заваляся у кого standalone пейпер или сэмпл?
Suslik
Можно же отдельно примеры качать: http://developer.download.nvidia.com/SDK/10.5/Samples/render_texture_3D.zip
Linderdaum Engine
http://www.linderdaum.com/home/index.php?title=Main_Page
скрины
http://www.gamedev.ru/proj/?id=9
http://www.linderdaum.com/home/index.php?title=Demos
качать
http://www.linderdaum.com/home/index.php?title=Downloads
исходники целиком ~30мб
http://www.linderdaum.com/Downloads/Linderdaum_0.5.89a_test190709.SDK.zip
патч с волюм рендерингом кажися (~2мб)
http://www.linderdaum.com/Downloads/Linderdaum_0.5.89_src_only.zip
Demiurg-HG
> CUDA SDK: Volume rendering
ну а рисуется куб через что ?
эх, вы...
Suslik
http://http.developer.nvidia.com/GPUGems/gpugems_ch39.html
http://http.developer.nvidia.com/GPUGems/gpugems_ch40.html
Громадное спасибо, товарищи, выручили. Пейперы от NVidia решают. Если кому ещё понадобится, вот ещё ссылка на чей-то бложик с сэмплом: "Raycasting for dummies"
Снова я, снова с проблемами. Имеется плохая вольюм дейта: она низкого разрешения(80x80x80max) и неслабо размазана. При попытке её рендерить стандартным подходом получаем следующее:
то есть в принципе видно, но не ахти как здорово.
подскажите плз техники, чтобы эту самую вольюм дейту можно было отрендерить понаглядней. я пытался прикрутить что-то в духе диффуза, но как-то так себе вышло. наверно, я что-то делал не так.
примени какой нибудь фильтр контрастности( к объему, а не к исходному изображению)
Можешь попробовать прозрачность взять под логарифм.
У тебя же 3D куб -> Воксили. тупа трассировкой лучей объем данных небольшое на GNU будет быстро.
Дальше все завесит от задачи.
Статичен ли куб или меняется, как часто меняется(допустимы задержки при смене)
Нужно тока отрендить 1 раз быстро или нужна возможность вращать.
даже если данные генерить самому, достаточно контрастные, то у отрендеренного, например, шара, не "чувствуется" объём. он выглядит почти как круг.
статичен он или нет, можно крутить камеру или нельзя, какая там вычислительная сложность - сейчас речь вообще не об этом. я интересуюсь, куда копать, чтобы стало красивее.
Покопай в сторону вокселей отображение рентгеновских снимков.
В рентгеновских снимках объем не увидишь на статичных картинках.
Обычно используют ортогональную проекции(объема все равно не увидишь глубина маленькая) но ближайшие воксели подсвечивают сильней чем дальние при вращение дает эфект объема.
А тебе нужно что то вроде рентгеновского 3D снимка отобразить или просто сцену?.
Если посмотреть на сцену чайника в первом посте то можно заметить что чем больше угол нормали полигона с осью z(или y- в даль от наблюдателя) темь ярче светиться полигона.
Suslik
> не "чувствуется" объём. он выглядит почти как круг.
Может, стоит считать, что функция плостности хранит не яркость свечения, а скаттеринг?
Типа:
Ну или интегрировать вдоль луча из камеры яркости вокселей, как "диффузное отражение" источника света от изоповерхности в этом вокселе.
В любом случае источник света не должен находиться в той же точке, что и камера.
RPGman
> Может, стоит считать, что функция плостности хранит не яркость свечения, а скаттеринг?
немного не понял суть
> Ну или интегрировать вдоль луча из камеры яркости вокселей, как "диффузное отражение" источника света от изоповерхности в этом вокселе
именно этим сейчас и занят. я не понимаю в чём дело, упёрся в совершенно мутные баги: при направлении диффузного источника света(0, 1, 0) всё относительно ничего, стоит его повернуть (1, 0, 0), как всё становится резко очень плохо. думаю.
Тема в архиве.