Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Программирование игр, графики и искусственного интеллекта > Параллелепипед описывающий объект и его объем


Автор: EgoBrain 11.2.2009, 12:50
Друзья, подскажите как выполнить вычисление параллелепипеда описывающего объект, ну или почитать чего про это. Это используется во 
многих программах, в том числе и в включенных в пакет DirectX SDK. А так же хотелось бы получить готовый алгоритм вычисления объема "свободного места" в этом объеме для других объектов. Нашел функцию Geometry.ComputeBoundingBox и еже с ней, там как я понял полезная инфа - Вектор нижнего левого угла и Вектор правого верхнего, но чет использовать ее я не смог :( В общем думаю вопрос ясен.

Автор: Rpahut 11.2.2009, 23:22
Это наверное луна в созвездии девы так влияет smile Люди чо с вами?
http://msdn.microsoft.com/en-us/library/bb323919(VS.85).aspx

Цитата

А так же хотелось бы получить готовый алгоритм вычисления объема "свободного места" в этом объеме для других объектов.

Меняю на исходники висты HP smile 

ЗЫ Вот http://www.tech-archive.net/Archive/Development/microsoft.public.win32.programmer.directx.managed/2004-08/0079.html еще примерчик.

Автор: EgoBrain 15.2.2009, 13:37
Цитата(Rpahut @ 11.2.2009,  23:22)
Цитата

А так же хотелось бы получить готовый алгоритм вычисления объема "свободного места" в этом объеме для других объектов.

Меняю на исходники висты HP smile 

Я думал этот велосипед уже давно колесит по алгоритмам программ всех 3д-кодеров.

Автор: Rpahut 15.2.2009, 21:01
Вычисление свободного объема внутри BB? Ну это достаточно необычный велосипед.

Автор: EgoBrain 16.2.2009, 03:07
Ну вот у меня внутри этого параллелепипеда находятся разные объекты, которые представляют собой динамический массив специального типа данных ObjectItem (мой класс), там хранятся разные данные (стандартные хар-ки объекта и сам Mesh-объект с материалами и текстурами), если я добавлю в свой класс ObjectItem метод вычисления BoxBounding, то у меня будут параллелепипеды всех объектов и их центры, вот как с такими данными вычислить влезает ли новый объект в заданный объем?

Автор: Rickert 16.2.2009, 05:51
EgoBrain, смысл bounding box в том, чтобы упростить вычисления: засунуть объект в коробку, пересечения с которой получить намного менее затраней, чем со всей моделью, ввиду разницы в кол-ве граней/полигонов. Вычисление же объёмов сложных тел - задача непосильная, и не применяется в геймдеве.
Цитата(EgoBrain @  16.2.2009,  03:07 Найти цитируемый пост)
Ну вот у меня внутри этого параллелепипеда находятся разные объекты

Откуда они там берутся? Смысл bounding box'а опять-таки теряется, ибо там должен быть один объект - mesh модели, для которой он расчитан.

Автор: EgoBrain 16.2.2009, 09:54
Вы наверное меня не правильно поняли. Для начала - причем тут геймдев? Тут только геймдев обсуждается? Имеется параллелепипед представляющий некую ограниченную емкость, есть возможность добавлять в эту емкость и удалять из нее объекты, необходимо перед каждым добавлением расчитывать есть ли возможность туда объект впихнуть или нет. Вот я и думаю расчитывать БаундингБокс для каждого объекта и смотреть не пересекается ли он с БаундингБоксами других объектов, только как реализовать пока незнаю. 

Автор: Rickert 16.2.2009, 11:10
EgoBrain, ану вот теперь ясно.
Но тут у вас будет ещё проблема в чём: у вас может быть объём достаточный для добавления след. объекта, но всё будет зависеть от того как он распределён. Задача не тривиальная. Я так на вскидку не скажу решения, надо обмыслить.

Автор: Rpahut 16.2.2009, 20:04
Если вершина одного ББ внутри другого - то это пересечение. Если просто нужно определить влезает/не влезает, то этого достаточно.

Автор: Rickert 17.2.2009, 02:05
Rpahut, тут другая задача у человека: есть параллелипипид и есть другой набор параллелипипидов, которые в различные моменты рождаются внутри первого: задача состоит в том, чтобы узнать "влезет ли в первый параллелипипид след. параллелипипид, который должен появиться?".

Автор: EgoBrain 18.2.2009, 06:24
Пока что я понял только одно - не умею доходчиво объяснять, Rickert, спасибо за понимание smile 

Автор: Rickert 18.2.2009, 06:38
EgoBrain, вы просто торопитесь и от того часть слов выскакивает из текста. Перед постом просто перечитывайте своё сообщение и старайтесь дать как можно больше информации. Много слов, при объяснении вопроса, не бывает, а вот мало - как видите, бывает.
Сам недавно убедился: правильно заданный вопрос - половина ответа.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)