Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.07.2011, 23:43   #1
Ulex
Непрофессионал
Участник клуба
 
Аватар для Ulex
 
Регистрация: 01.01.2008
Сообщений: 1,405
По умолчанию Мысли по поводу теней в 2D

Что то я как то раньше даже и не задумывался по поводу реалистичности теней, отбрасываемых объектами в изометрической проекции в 2D. А тут сидел рисовал паровоз с тенями и понял, что получилась то у меня какая-то несуразица. Вот выделил два непонятных для меня момента.
1. Неправильное искажение (а точнее полное отсутствие такового) геометрии отбрасываемой тени. Когда тень, отбрасываемая объектом, падает на другие объекты со сложной геометрией, то и тень тоже должна менять свою геометрию. А как добиться такого на обычных спрайтах с альфой - ума даже не приложу.
2. Неправильное уплотнение пересекающихся теней, отбрасываемых разными объектами. Т.е. тень то должна получаться единой и однородной, а получается, что она темнеет там где не следует.

Ну вот, высказался. У кого какие мысли по этому поводу? Как-то это можно победить в 2D (например на DirectX)?
Изображения
Тип файла: jpg Shadow2D.jpg (13.4 Кб, 117 просмотров)
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------
Страничка с моими программками http://ulex-masm.ru
Ulex вне форума Ответить с цитированием
Старый 30.07.2011, 02:55   #2
An1ka
C++,DirectX/OpenGL
Форумчанин
 
Регистрация: 09.01.2011
Сообщений: 422
По умолчанию

1. С плоскими тенями не сделать, не зря же они так называются Надо использовать "теневые объёмы" или "карты теней", но тут нужна геометрия, а 2D не дает геометрию.
2. Двойное наложение можно предотвратить использовав буфер трафарета.
Код:
Device->SetRenderState( D3DRS_STENCILENABLE,	true);
Device->SetRenderState( D3DRS_STENCILFUNC,	D3DCMP_EQUAL);
Device->SetRenderState( D3DRS_STENCILREF,	0x0);
Device->SetRenderState( D3DRS_STENCILMASK,	0xffffffff);
Device->SetRenderState( D3DRS_STENCILWRITEMASK,	0xffffffff);
Device->SetRenderState( D3DRS_STENCILZFAIL,	D3DSTENCILOP_KEEP);
Device->SetRenderState( D3DRS_STENCILFAIL,	D3DSTENCILOP_KEEP);
Device->SetRenderState( D3DRS_STENCILPASS,	D3DSTENCILOP_INCR); // increment to 1
// Рисуем тень 1
// Рисуем тень 2
Device->SetRenderState( D3DRS_STENCILENABLE,    false);
An1ka вне форума Ответить с цитированием
Старый 30.07.2011, 13:08   #3
Ulex
Непрофессионал
Участник клуба
 
Аватар для Ulex
 
Регистрация: 01.01.2008
Сообщений: 1,405
По умолчанию

Вот спасибо!
Доделаю рендер в текстуру, надо будет с трафаретами потренироваться.
Хотя мне кажется, на производительности сильно скажется такое рисование, не?
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------
Страничка с моими программками http://ulex-masm.ru
Ulex вне форума Ответить с цитированием
Старый 30.07.2011, 15:06   #4
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

Ulex, без лишних хлопот и потери производительности с тенями в 2D не разобраться. Я пошел по пути разумного создания карт, где стараюсь просто не ставить объекты так, чтобы они вызвали визуальное нарушение физики, ...по возможности. А персонаж пока в тени дерева так и отбрасывает свою тень, поскольку она сразу в анимации.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Несвоевременные мысли. (М. Горький) Rapid Свободное общение 11 01.12.2010 17:32
Чужие мысли в тему mihali4 Gamedev - cоздание игр: Unity, OpenGL, DirectX 1 16.01.2008 14:54
Мысли Elm0 Свободное общение 0 23.06.2007 21:42