three.js — принцип коллизии камер

Как я понял единственный способ вычислить коллизии с three.js это intersectObjects с лучом...

Я создал объект, который включает в себя основные элементы коллизии: землю, стены, объекты, лестницы. с управлением от первого лица. Я пошел с идеей, что я должен вычислить вектор поворота на основе направления, в котором в данный момент движется камера, но на самом деле это не работает, и я не вижу, где ошибка.

Я ожидал, что камера не сможет пройти сквозь землю, стены и предметы, с которыми она окажется в столкновении.

Вы можете увидеть код здесь


person Laurane Bernard    schedule 12.01.2013    source источник
comment
в чем вопрос? что именно вы ожидали по сравнению с тем, что происходит?   -  person tucuxi    schedule 13.01.2013
comment
Я ожидал, что камера не сможет пройти сквозь землю, стены и предметы, с которыми она окажется в столкновении. лестница, чтобы увидеть, можем ли мы поднять камеру ... Я пытаюсь понять, как именно происходит столкновение с three.js и что мы можем и не можем делать. Я читал много примеров столкновения двух объектов, но ничего не нахожу в предложенных случаях...   -  person Laurane Bernard    schedule 13.01.2013


Ответы (1)


В three.js нет автоматического обнаружения столкновений.

Теперь вы реализуете raycasting с помощью Raycaster, а не Ray:

Raycaster.intersectObjects( objects, recursive );

Вы также должны контролировать высоту камеры самостоятельно.

три.js р.54

person WestLangley    schedule 12.01.2013
comment
хорошо, я изменил, но я думаю, что мой метод не годится, потому что это не работает - person Laurane Bernard; 13.01.2013
comment
Ваша подпрограмма detectCollision() не вызывается. Кроме того, здесь мы можем ответить на конкретные вопросы, но не можем отлаживать ваш код за вас. - person WestLangley; 13.01.2013
comment
Здесь я предложил посмотреть, может ли raycaster примениться к окружению для определения коллизионного меша на примере, который часто возникает как вопрос, но после того, что я прочитал, так и не нашел ответа... Я новичок и до сих пор ошибки звери. если никто не объясняет, как функции three.js ходят, учатся их использовать. Прошло три дня с тех пор, как я попробовал коды, которые я нахожу для понимания .... - person Laurane Bernard; 13.01.2013
comment
Я изменил принцип: я использовал camMesh в качестве аватара камеры и куб в качестве wallMesh. Я хочу прикрепить камеру как camMesh. camMesh помещается в wallMesh. принцип состоит в том, чтобы вычислить луч, который начинает camMesh и останавливает движение, когда он сталкивается с wallMesh. этот метод лучше или нет? - person Laurane Bernard; 14.01.2013
comment
Насколько я понимаю, то, что вы предлагаете, звучит нормально. Также изучите карты столкновений или маски столкновений. Вероятно, вам следует принять этот ответ и опубликовать новый вопрос, чтобы больше людей могли вам помочь. - person WestLangley; 14.01.2013
comment
на самом деле, я ищу решение конфликта любого физического двигателя только для первого лица, чтобы интегрировать его в control.js. и в html вы сказали, является ли сетка сплошной (истинное столкновение) или нет. судя по моим чтениям three.js, этот метод похож на метод raycaster Vestor 4: цель, действительно ли это возможно? Я не знаю этот метод просмотра карты столкновений после того, как я прочитал, кажется, что он скорее адаптируется к миру 2d, верно? если есть интересные ссылки на карту столкновений, мне интересно... - person Laurane Bernard; 15.01.2013
comment
Я могу решить только три проблемы с .js. Пожалуйста, сделайте еще один пост, если у вас есть другие вопросы. Удачи!. - person WestLangley; 16.01.2013