![]() |
|
||||||||||
|
|||||
|
Доброго времени суток.
Начала работу над псевдо-3д во флеше. Выбор относительно API остановила на Альтернативе. По изучала ее, сделала первые уроки, пару других вещей. С AS 3.0 знакома хорошо. В общем, идея такова: создаем в ArchiCAD-е здание, импортируем его в 3ds max, там еще дорабатываем и далее грузим модель с флеша. В результате, человек будет ходить по комнатам, возможно, открывать двери. Отсюда вопрос - как нормально организовать ограничение перемещения - нельзя идти сквозь стены и т.д.? И вообще, есть ли советы по организации этой самой ходьбы? (или нет ничего лучше, чем поставить зрителя внутрь - по-моему lookAtXYZ - и просто сделать симпл контроллер) Ах, да, Альтернатива 7я - свежевышедшая. |
|
|||||
|
Регистрация: Jul 2008
Сообщений: 912
|
А почему это псевдо 3D? Альтернатива это не псевдо 3D.
Зачем столько заморочек ArchiCAD, потом 3D Max? Можно сразу всё в 3D Max'e сделать и экспортировать в формат который понимает альтернатива. Сейчас в альтернативе нет коллизий(столкновение), по этому нет физики, так что ходить не получится по домику. Хотя выкрутиться можно, есть способ который не даст проходить сквозь стены. Нужно сделать 2D разметку(карту) комнат и поместить туда 2Dобьект который будет детектить 2D коллизи и не сможет выйти за стены на 2D карте, потом координаты 3Dобьекта который должен ходить по дому привязываеш к 2Dобьекту который ходит по карте и всё управляем 2Dобьектом... 3Dоьект будет двигаться так-же как и 2Dобьект. Думаю, всё понятно? |
|
|||||
|
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
Пока альтернатива - "псевдо 3d", в смысле софтовый рендер.
Коллизии (ограничение перемещения ) не сложно и самому написать. Посмотрите, например, как сделана в демке стратегия карта проходимостей. Пускайте невидимый объект, за ним следящую камеру (хотя можно и просто камеру перемещать). объект уже проверяйте на столкновения. Могут конечно возникнуть разные косяки при сложных конфигурациях.. Например, камера за стенкой от ведомого объекта может оказаться при повороте угла зрения.
__________________
Отряд Котовскага |
|
|||||
|
Sintesis
Цитата:
Котяра Спасибо за идею - надо попробовать. |
|
|||||
|
Если в здании будет всего 1 этаж, можно свести все к проверке пересечения отрезка и окружности.
Стены-отрезки можно из 3dmax экспортить.
__________________
while(1) {} |
|
|||||
|
Так, а из макса портируем в колладу, а ее что, как простой xml грузить, потом - в парсер?
Позже private function xmlLoaded(event:Event) { if ((event.target as URLLoader) != null ) { var resp:XML=new XML(event.target.data); var parser:ParserCollada = new ParserCollada(); parser.parse(resp); for each (var obj:Object3D in parser.objects) { container.addChild(obj); } } } P.S: Двери из АрхиКАДа нещадно глючат, накладываясь на стены и косяки (в прямом смысле слова "косяки") - их стоит переделать в Максе. Кстати, всем огромное спасибо - все быстро и прекрасно работает ![]() Последний раз редактировалось demy; 09.11.2010 в 16:03. |
|
|||||
|
Отлично! Из этого следует, что и Quake I тоже "псевдо 3д" - там тоже софтверный рендер.
demy, почитайте про матрицы и векторы и их применение в 3-мерных вычислениях и вы легко сможете сами вычислять коллизии и много еще чего . |
|
|||||
|
Почитала матрицы и вектора - как они могут помочь конкретно в вычислении коллизий?
|
|
|||||
|
Регистрация: Jun 2009
Сообщений: 35
|
Можно как вариант использовать физический движок, например Box2D. Человек - окружность, стены - абсолютные твердые тела. Более того, с физикой дверей заморочек не будет вообще.
|
|
|||||
|
Цитата:
Но я делал параллельно 3д миру, некий 2д мир в котором определялись все коллизии. Всяко шустрее чем бокс2д этот. В вашем случае можно сделать типа битмап карту - вид сверху - стены черным цветом, там где ходить можно белым. Ну и проверять будущее положение(т.е. то куда вы хотите пойти) getPixel(x + dx, y + dy) проверять цвет. Если черный цвет то ходить нельзя, а если белый то можно.
__________________
зная будущее, хотя бы, на 10 минут вперед, можно покорить весь мир... |
![]() |
![]() |
Часовой пояс GMT +4, время: 17:06. |
|
|
« Предыдущая тема | Следующая тема » |
|
|