![]() |
Ходить по сцене
Доброго времени суток.
Начала работу над псевдо-3д во флеше. Выбор относительно API остановила на Альтернативе. По изучала ее, сделала первые уроки, пару других вещей. С AS 3.0 знакома хорошо. В общем, идея такова: создаем в ArchiCAD-е здание, импортируем его в 3ds max, там еще дорабатываем и далее грузим модель с флеша. В результате, человек будет ходить по комнатам, возможно, открывать двери. Отсюда вопрос - как нормально организовать ограничение перемещения - нельзя идти сквозь стены и т.д.? И вообще, есть ли советы по организации этой самой ходьбы? (или нет ничего лучше, чем поставить зрителя внутрь - по-моему lookAtXYZ - и просто сделать симпл контроллер) Ах, да, Альтернатива 7я - свежевышедшая. |
А почему это псевдо 3D? Альтернатива это не псевдо 3D.
Зачем столько заморочек ArchiCAD, потом 3D Max? Можно сразу всё в 3D Max'e сделать и экспортировать в формат который понимает альтернатива. Сейчас в альтернативе нет коллизий(столкновение), по этому нет физики, так что ходить не получится по домику. Хотя выкрутиться можно, есть способ который не даст проходить сквозь стены. Нужно сделать 2D разметку(карту) комнат и поместить туда 2Dобьект который будет детектить 2D коллизи и не сможет выйти за стены на 2D карте, потом координаты 3Dобьекта который должен ходить по дому привязываеш к 2Dобьекту который ходит по карте и всё управляем 2Dобьектом... 3Dоьект будет двигаться так-же как и 2Dобьект. Думаю, всё понятно? |
Пока альтернатива - "псевдо 3d", в смысле софтовый рендер.
Коллизии (ограничение перемещения ) не сложно и самому написать. Посмотрите, например, как сделана в демке стратегия карта проходимостей. Пускайте невидимый объект, за ним следящую камеру (хотя можно и просто камеру перемещать). объект уже проверяйте на столкновения. Могут конечно возникнуть разные косяки при сложных конфигурациях.. Например, камера за стенкой от ведомого объекта может оказаться при повороте угла зрения. |
Sintesis
Цитата:
Котяра Спасибо за идею - надо попробовать. |
Если в здании будет всего 1 этаж, можно свести все к проверке пересечения отрезка и окружности.
Стены-отрезки можно из 3dmax экспортить. |
Так, а из макса портируем в колладу, а ее что, как простой xml грузить, потом - в парсер?
Позже Код AS3:
P.S: Двери из АрхиКАДа нещадно глючат, накладываясь на стены и косяки (в прямом смысле слова "косяки") - их стоит переделать в Максе. Кстати, всем огромное спасибо - все быстро и прекрасно работает :yahoo: |
Цитата:
demy, почитайте про матрицы и векторы и их применение в 3-мерных вычислениях и вы легко сможете сами вычислять коллизии и много еще чего :victory:. |
Почитала матрицы и вектора - как они могут помочь конкретно в вычислении коллизий?
|
Можно как вариант использовать физический движок, например Box2D. Человек - окружность, стены - абсолютные твердые тела. Более того, с физикой дверей заморочек не будет вообще.
|
Цитата:
Но я делал параллельно 3д миру, некий 2д мир в котором определялись все коллизии. Всяко шустрее чем бокс2д этот. В вашем случае можно сделать типа битмап карту - вид сверху - стены черным цветом, там где ходить можно белым. Ну и проверять будущее положение(т.е. то куда вы хотите пойти) getPixel(x + dx, y + dy) проверять цвет. Если черный цвет то ходить нельзя, а если белый то можно. |
Тут конечно не всё настолько просто. Для некоторых объектов придется еще просчитывать "разумность" действия (это когда рука поворачиваясь проходит сквозь стену, например). Но и это вполне себе решаемо.
|
Цитата:
Э.. Теперь есть очень глупы вопрос - при определении столкновения, как остановить камеру/персонажа и заставить двигаться вдоль стены, а не просто печально стоять, уткнувшись в эту самую стену? |
demy, я же сказал, используйте физ-движок Box2D, все проблемы исчезнут разом. Производительность в маленьком "левеле" не испортит.
|
Цитата:
у меня весь процесс идет так: в "каждом кадре": 1. игровой движок перерасчитывает(сдвигает/удаляет/добавляет) 3д объекты, задает им свойства и тд. 2 физический движок проверяет каждый с каждым объектом() на столкновение, если хотя бы часть одного объекта находится в другом объекте то они раздвигаются в разные стороны на вектор проникновения / 2(т.е. на равные расстояния) и получается если объект идет например под 45 градусов к стене то он в нее проникает и отталкивается и тем самым скользит по стене 3 трехмерный двиг рисует сцену еще плюс "двух миров" в том что можно на лету убирать / добавлять объекты и не нужно все 3д объекты проверять на столкновения(некоторые 3д объекты чисто для дизайна) |
| Часовой пояс GMT +4, время: 01:45. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.