Модераторы: Rickert
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Рисование объекта поверх других без пересечения, типа того как это сделано в FPS играх 
V
    Опции темы
EgoBrain
Дата 13.1.2009, 05:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 23.3.2008
Где: Комната

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



Как реализовать рисование объекта поверх всех других? То есть как это делают например
в шутерах от первого лица: руки персонажа и оружие никогда не пройдут сквозь другие объекты
и не пересекуться (не находятся в буфере глубины, если можно так выразиться)...
PM MAIL ICQ Skype   Вверх
Rickert
Дата 14.1.2009, 10:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

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



EgoBrain, в половине шутеров эти самые руки - тоже объекты, зафиксированные за координатами камеры и направлением взгляда и они таки пересекать окружающий мир могут.
Смысл по сабжу: рисуем окружающий мир, отключаем буффер глубины, рисуем модель рук (как в шутерах), включаем буффер глубины, выводим кадр. Примерно и на вскидку так будет.


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
EgoBrain
Дата 14.1.2009, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 23.3.2008
Где: Комната

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



У меня была точно такая же идея. Наверное я не правильно алгоритм строил...
Код

//--Некое событие формы для отображения сцены--
...
device.Clear(/*Производим очистку кадра + буфера глубины*/...);

device.BeginScene(); //--Начали сцену--

//--Нарисовали все что "в глубине"--

device.PresentationParameters.EnableAutoDepthStencil = false;

//--Нарисовали обрубки рук :)--

device.PresentationParameters.EnableAutoDepthStencil = true; //--Вернули буфер--

device.EndScene();

device.Present(); //--Показали представление--
...

Хороша была задумка, да ведать я ее до ума не довел, или она нерабочая... руки все равно сквозь проходят!
Вспомнил, надаже вроде сбрасывать устройство Reset(), можно ли это делать при формировании сцены? В общем мне кажется Вам нада сделать проект и самому попробовать, чтоб мне потом сказать как делать  smile Не сочтите за грубость.

Добавлено через 13 минут и 51 секунду
З.Ы. По поводу шутеров, наверное Вы всетаки мало играли в классику (типа Counter-Strike), там модель любого персонажа и то, что видет игрок от первого лица разные вещи, персонаж (если смотреть со стороны) может вполне себе проходить сковзь другие объекты, если подойдет вплотную, а от первого лица в то же время - нет, то есть это разные объеты и раздельно рисуются (как то хитро), там даже они наверное плоские.

Это сообщение отредактировал(а) EgoBrain - 14.1.2009, 14:29
PM MAIL ICQ Skype   Вверх
Rpahut
Дата 15.1.2009, 00:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


0xdeadbeef
*


Профиль
Группа: Участник
Сообщений: 243
Регистрация: 9.4.2006

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



Гугель подсказывает мне, что EnableAutoDepthStencil = true создает DepthStencilSurface. А EnableAutoDepthStencil = false -  не создает smile 
Чтобы включать-отключать проверку глубины, есть RenderState.DepthBufferFunction. Юзайте его.

ЗЫ Отключать проверку наверное не стоит. Лучше после отрисовки мира очистить буфер глубины и тогда рисовать руки.

Это сообщение отредактировал(а) Rpahut - 15.1.2009, 00:44
--------------------
C/C++ GameDevRSS Раздела программирования игрOpenGL - уроки от NeHeКак продать идею?
PM MAIL   Вверх
Rickert
Дата 15.1.2009, 04:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

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



Цитата(EgoBrain @  14.1.2009,  14:19 Найти цитируемый пост)
З.Ы. По поводу шутеров, наверное Вы всетаки мало играли в классику (типа Counter-Strike), там модель любого персонажа и то, что видет игрок от первого лица разные вещи, персонаж (если смотреть со стороны) может вполне себе проходить сковзь другие объекты, если подойдет вплотную, а от первого лица в то же время - нет, то есть это разные объеты и раздельно рисуются (как то хитро), там даже они наверное плоские.

Померяемся у кого длинее? smile Я с 6 лет, последние 16 лет пуляю. Начинал с первого Принца Персии и играл во все революционные шутеры, так что можете поверить smile
Я не сказал что у всех шутеров оружие проваливается. Я сказал: что у некоторых. +иногда идёт вообще реализации столкновений таких моделей.
А что это за язык такой, на котором вы пишите?


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
EgoBrain
Дата 15.1.2009, 11:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 23.3.2008
Где: Комната

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



Цитата(Rickert @ 15.1.2009,  04:28)
А что это за язык такой, на котором вы пишите?

Вопрос и издевкой или подковыркой? В посте же идет блок "Код C#".
Rpahut, можно выписку примера?  smile 
PM MAIL ICQ Skype   Вверх
Rickert
Дата 15.1.2009, 11:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

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



Цитата(EgoBrain @  15.1.2009,  11:00 Найти цитируемый пост)
Вопрос и издевкой или подковыркой? В посте же идет блок "Код C#".

Пардон, у меня сейчас Опера, она криво работает с тэгами кода, у меня он выделен в просто "Код" smile


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
Rpahut
Дата 15.1.2009, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


0xdeadbeef
*


Профиль
Группа: Участник
Сообщений: 243
Регистрация: 9.4.2006

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



Цитата

Rpahut, можно выписку примера?  smile  

Нельзя. Я с C# незнаком, равно как и с DX и его производными. Если это XNA то вам суда.
--------------------
C/C++ GameDevRSS Раздела программирования игрOpenGL - уроки от NeHeКак продать идею?
PM MAIL   Вверх
EgoBrain
Дата 18.1.2009, 10:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 23.3.2008
Где: Комната

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



Вопрос пока остается открытым...
PM MAIL ICQ Skype   Вверх
arilou
Дата 19.1.2009, 00:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


Профиль
Группа: Экс. модератор
Сообщений: 2646
Регистрация: 15.7.2004
Где: город-герой Минск

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



EgoBrain, писал бы на XNA. MDX не поддерживается и не развивается. 

Ну или хотя бы на SlimDX


--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
EgoBrain
Дата 20.1.2009, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 23.3.2008
Где: Комната

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



Цитата(arilou @ 19.1.2009,  00:35)
EgoBrain, писал бы на XNA. MDX не поддерживается и не развивается. 

Ну или хотя бы на SlimDX

Да а причем тут язык? Мне алгоритм нужен для решения задачи, все вполне достижимо на DX 9.0 c...
PM MAIL ICQ Skype   Вверх
arilou
Дата 23.1.2009, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


Профиль
Группа: Экс. модератор
Сообщений: 2646
Регистрация: 15.7.2004
Где: город-герой Минск

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



EgoBrain, где ты увидел слово "язык"? речь идет об используемом для 3D фреймворке. MDX НЕ развивается и НЕ поддерживается Микрософтом, в отличие от XNA либо SlimDX. Но всё они поддерживают DX 9.0c

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

Это сообщение отредактировал(а) arilou - 23.1.2009, 15:52


--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
EgoBrain
Дата 25.1.2009, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 23.3.2008
Где: Комната

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



Друзья, вы были правы, ответ был дан, просто у меня руки не дошли, чайники как всегда хотят чтоб им пальцем показали. Вам спасибо за терпимость с нами smile
Кстати по нескольку раз повторять не нужно, что MDX не поддерживается MS-ом, я это и так прекрасно знаю, но разве он будет вреден для изучения? Имхо перейти после него на ХНА или обычный/нормальный директ будет проще, чем без знаний MDX, но дело не в этом, просто я уже начал проект на MDX для института.
Кому интересно: в MDX у RenderState есть свойство ZBufferEnable, легким движением рук ставим значение в false, и ничего больше не нада, никаких функций вызывать! И еще один момент для директщиков всех мастей: между выключением-включением буфера глубины необходимо перестроить порядок вершин в устройстве на CounterClockwise (против часовой стрелки), конечно это не даст 100% желаемого результата, но максимально приблизит к нему. Всем спасибо, думаю можно закрыть тему. Первая мысль после полученого: "Отлично, то что нада!" Пишите под директ и наслаждайтесь!
З.Ы.  smile  Нехочется ради этого отдельную тему делать, но вот вопрос такой: посоветуйте хороший 3-д конвертер (из MAX/3DS в .X), за который покупать не нада, скачал 3D Object Converter 4.20 - очень хорошая программа, но ключ нада для регистрации... smile 

Это сообщение отредактировал(а) EgoBrain - 25.1.2009, 13:58
PM MAIL ICQ Skype   Вверх
arilou
Дата 25.1.2009, 19:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


Профиль
Группа: Экс. модератор
Сообщений: 2646
Регистрация: 15.7.2004
Где: город-герой Минск

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



Цитата(EgoBrain @  25.1.2009,  13:48 Найти цитируемый пост)
Нехочется ради этого отдельную тему делать


но все таки лучше сделать, чтобы соотетствовать правилам форума  smile 


--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
Rickert
Дата 26.1.2009, 04:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

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



EgoBrain, пометь тему, как решённую.


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование игр, графики и искуственного интеллекта"
Rickert

НА ЗЛОБУ ДНЯ: Дорогие посетители, прошу обратить внимание что новые темы касающиеся новых вопросов создаются кнопкой "Новая тема" а не "Ответить"! Любые оффтопиковые вопросы, заданные в текущих тематических темах будут удалены а их авторы, при рецедиве, забанены.

  • Литературу, связанную с программированием графики, обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы связанные с программированием графики и мультимедии на языках С++ и Delphi
  • Вопросы по реализации алгоритмов рассматриваются здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rickert.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программирование игр, графики и искусственного интеллекта | Следующая тема »


 




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


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

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