Выбор лучей от первого лица

Привет :) Я искал несколько недель и не нашел решения. Подскажите, пожалуйста, как реализовать выбор луча при использовании камеры от первого лица. Где именно в формуле вы должны включить направление камеры ?? Если у кого-то есть какое-либо решение или рабочий код, пожалуйста, прокомментируйте

Большое Вам спасибо


person user614573    schedule 12.02.2011    source источник
comment
Возможный дубликат: stackoverflow.com/questions/2093096/implementing-ray-picking   -  person Adrian McCarthy    schedule 13.02.2011


Ответы (1)


Этот сайт объяснит это намного лучше, чем я мог бы

http://www.toymaker.info/Games/html/picking.html

Действительно хороший сайт.

person thecoshman    schedule 12.02.2011
comment
этот сайт не помогает, потому что в этом примере это стационарная (за неимением лучшего слова) камера и позиция. Но спасибо - person user614573; 13.02.2011
comment
Эм ... ты что? Нет. Он берет вектор для направления, в котором смотрит камера, а затем проверяет его на пересечение со всеми объектами и сортирует их по расстоянию, возвращая попадание в шкаф. Это та же функция, что и для движущейся или неподвижной камеры. Как вы сохраняете положение и направление своих камер? - person thecoshman; 13.02.2011
comment
Извините моя ошибка. Я использую класс DXUTCamera, потому что большая часть моей программы основана на XACTGame из DirectX SDK. Где именно здесь - ›toymaker.info/Games/html/picking.html принимает ли вектор за направление камеры? Еще раз, спасибо :) - person user614573; 13.02.2011
comment
Ааа, я вижу здесь вашу проблему. Когда я использовал это, я использовал свой собственный класс камеры. Я не специалист по XACT, но уверен, что так или иначе вы сможете прочитать вектор направления камеры от него. Также имейте в виду, что связанный учебник позволяет вам перемещать мышь по экрану без перемещения камеры, поэтому вы можете щелкнуть что-нибудь в углу экрана, поэтому, если у вас есть камера в стиле FPS, управляемая с помощью мыши , вы можете пропустить несколько первых небольших фрагментов этого руководства. - person thecoshman; 13.02.2011
comment
Я нашел функцию, которая возвращает направление камеры, но единственное, что я точно не знаю, что мне нужно изменить. Как вы сказали, я могу пропустить первые несколько бит, но я не совсем уверен, что мне нужно изменить / отредактировать. Какие-либо предложения? спасибо еще раз :) - person user614573; 13.02.2011
comment
Вы в основном хотите посмотреть на пересечение лучевой сетки. В DirectX есть несколько встроенных функций, позволяющих проверять, пересекает ли луч сетку. Я думаю, что это руководство делает забавные вещи, например, удерживает луч в статическом пространстве и перемещает экран вокруг него назад ... если вы понимаете, о чем я. По сути, данные вашей модели хранятся в локальных кооперативах, как и вы, поэтому вам нужно преобразовать их оба в коордады мирового пространства, чтобы вы могли проверить их на столкновение. - person thecoshman; 13.02.2011
comment
ну спасибо, но разве у меня еще не будет 2 создать луч? Это та часть, которую я до сих пор не понимаю полностью. Я думаю, что могу правильно сделать столкновение, но я до сих пор не знаю, как построить луч - person user614573; 13.02.2011
comment
о, ну, «луч» - это точка в пространстве [начало луча] (где находится ваша камера) и направление [направление луча] (куда он направлен). Так что это всего лишь два вектора. DirectX на самом деле не использует определенный класс лучей, вы просто передаете его в двух векторах. - person thecoshman; 13.02.2011
comment
Что ж, моя проблема заключается в том, чтобы просто выяснить, какие числа мне нужно вставить, чтобы получить эти два вектора. Например, как мне это изменить - ›toymaker.info/Games/html/picking.html. Я пытался пару недель, но не могу этого понять. Я не совсем уверен, что мне нужно изменить, чтобы это работало для меня. Я знаю, что для координаты мыши это просто высота и ширина / 2, чтобы получить центр. Я также знаю положение камеры в мире, но оттуда я не уверен, что менять - person user614573; 13.02.2011