На нашем форуме вы можете получить приватный чит для игры Euro Truck Simulator 2. Подробности по ссылке ниже:
Тема с читом на Euro Truck Simulator 2
Авторизация  
Senpai

Проверка видимости directx 9 (directx visibility check)

Рекомендуемые сообщения

Здравствуйте, возникла необходимость проверять видимость какого-то объекта или игрока. То есть, вижу ли я его или он находится за стеной.
Как реализовать такое, используя только directx sdk ? Просто видел реализацию с использованием сдк движка игры или внутриигровой функции.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
41 минуту назад, Senpai сказал:

Как реализовать такое, используя только directx sdk ?

 

Никак. Хотя, стоп, есть же z буфер. Но это не проверка видимости, просто значение действующее на все предметы, которое говорит устройству кого рисовать, а кого нет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
3 часа назад, partoftheworlD сказал:

 

Никак. Хотя, стоп, есть же z буфер. Но это не проверка видимости, просто значение действующее на все предметы, которое говорит устройству кого рисовать, а кого нет.

То есть можно, имея свои координаты и координаты точки, видимость которой надо проверить ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
4 минуты назад, Senpai сказал:

То есть можно, имея свои координаты и координаты точки, видимость которой надо проверить ?

Нет, для такой проверки нужны лучи трассировки и это фитча движка.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
9 минут назад, partoftheworlD сказал:

Нет, для такой проверки нужны лучи трассировки и это фитча движка.

ну, если я хочу для gta san andreas такое сделать? 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
В 22.02.2019 в 22:01, Senpai сказал:

ну, если я хочу для gta san andreas такое сделать? 

Есть какой-то способ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
7 часов назад, Senpai сказал:

ну, если я хочу для gta san andreas

Конечно есть! Если коротко - берёшь объект - узнаёшь его размер. После - делаешь "луч" как его можно назвать - От объекта двигаешься координатами к игроку по прямому вектору, проверяешь не стоит ли там чего - если стоит (стена например) проверяешь левый угол объекта, потом правый, верх низ, все дела. (Это всё жрёт кучу времени и памяти) и так ты узнаешь только видимость центра объекта и его сторон, (делать больше лучшей это убиться веником). Так же тебе надо проверить находится ли объект в видимости камеры. Если все условия удовлетворены - объект видим, если нет - не видим (или за какой нибудь стеклом и тд). Можно пойти другим путём. Узнать каждые координаты тайлов вокруг персонажа, стены, пол и тд. Их размер и геометрию. После = исходя из этого, опять же по всяким сложным формулам вычисляешь находится ли часть объекта в зоне видимости, лучше проверять по периметру, это тоже будет жрать кучу ресурсов. А и не забывай что у тебя не 1 объект (вероятно) а куча, так что с такими проверками игра станет слайд шоу =).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
20 часов назад, inaginary сказал:

Конечно есть! 

Спасибо за ответ. Всё было бы уже не так плохо, если бы имелся доступ к функции, отправляющей луч..

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
2 часа назад, Senpai сказал:

доступ к функции, отправляющей луч

Так ты её сделай - луч, это всего лишь перебор позиций и проверка есть на них чего или нет

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Думаю, это то что нужно, если захочется все самому делать, но я предпочел бы использовать функцию движка, это быстрее и надежней.


http://gamedev.stackexchange.com/questions/18436/most-efficient-aabb-vs-ray-collision-algorithms

http://web.cse.ohio-state.edu/~shen.94/681/Site/Slides_files/basic_algo.pdf

http://www.cosinekitty.com/raytrace/raytrace_ebook.pdf

 

Последняя ссылка помогла мне разобраться в трассировке лучей, что помогло в нахождении функции движка.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
В данном топике никто не постил уже 4 месяца. Пости здесь только если твой вопрос точно совпадает с темой данного топика.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Предпросмотр
Авторизация