Модераторы: Rickert
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Пересечение объектов и вычитание множеств, Вырезка одного объекта из другого 
:(
    Опции темы
EgoBrain
Дата 21.2.2009, 11:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 23.3.2008
Где: Комната

Репутация: 1
Всего: 2



Вобщем задача такая: объекты пересекаются, и один исключает кусок другого с возможностью восстановления этого куска, и с учетом того, что таких "вырезов/восстановлений" сколько угодно, как это реализовано в 3Д-Максе. Ну например я помещаю в сцену объект, и он пересекая другой делает в нем дыру, потом я решил изъять из сцены загруженные объект и дыра в первом объекте зарастает, вобщем как-то так. smile

Добавлено через 4 минуты и 49 секунд
Практическое применение: первый объект это некое помещение (комната), а второй объект допустим дверь или окно, и когда я добавляю новое окно, оно проделывает дыру в стене помещения, потом если я вдруг решил убрать окно дыра должна зарасти.
PM MAIL ICQ Skype   Вверх
Mazzi
Дата 23.2.2009, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Правильный
**


Профиль
Группа: Комодератор
Сообщений: 825
Регистрация: 3.4.2003

Репутация: 4
Всего: 21



1) установи приоритеты у объектов(выше должен быть у вырезающего, ниже у обрезаемого smile )
2) создаёшь новый объект (как обрезаемый, только с дыркой), старый прячешь.
3) на сцене отображаешь новый объект.

В случае удаления вырезающего объекта(двери), удаляешь новый объект, показываешь старый.

Удачи!

Добавлено через 7 минут и 21 секунду
Забыл написать об признаке связи между объектами, который нужен при удалении режущего объекта.Приоритеты тоже для этого.


--------------------
Мне нужны помощники.
PM MAIL WWW   Вверх
EgoBrain
Дата 24.2.2009, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 23.3.2008
Где: Комната

Репутация: 1
Всего: 2



А как в коде сделать? Пишу на MDX.
PM MAIL ICQ Skype   Вверх
Mazzi
Дата 24.2.2009, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Правильный
**


Профиль
Группа: Комодератор
Сообщений: 825
Регистрация: 3.4.2003

Репутация: 4
Всего: 21



Я  MDX  не знаю. 


--------------------
Мне нужны помощники.
PM MAIL WWW   Вверх
EgoBrain
Дата 25.2.2009, 03:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 23.3.2008
Где: Комната

Репутация: 1
Всего: 2



Цитата(Mazzi @ 24.2.2009,  13:17)
Я  MDX  не знаю.

Ну а в С++ Direct-3D можно пример?  smile 
Что такое приоритет объекта и как с ним работать, или это понятие придумано конкретно для данного случая  smile  ?

Это сообщение отредактировал(а) EgoBrain - 25.2.2009, 03:42
PM MAIL ICQ Skype   Вверх
Mazzi
Дата 25.2.2009, 10:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Правильный
**


Профиль
Группа: Комодератор
Сообщений: 825
Регистрация: 3.4.2003

Репутация: 4
Всего: 21



Цитата(EgoBrain @ 25.2.2009,  03:41)
Цитата(Mazzi @ 24.2.2009,  13:17)
Я  MDX  не знаю.

Ну а в С++ Direct-3D можно пример?  smile 
Что такое приоритет объекта и как с ним работать, или это понятие придумано конкретно для данного случая  smile  ?

У меня нет конкретной реализации того, что тебе нужно и нет желания эту реализацию делать. 
Я подал тебе идею реализации как я это вижу. 
Приоритеты придуманы мной для определения последовательности действий при изменении условий.
То есть, какой объект скрывать, какой показывать (при удалении двери в твоём примере).

Например: изначально есть параллелепипед. Мы добавляем на сцену цилиндр который проходит сквозь наш параллелепипед и должен проделать в нём(в параллелепипеде) отверстие.
Наши действия: строим новый объект в виде параллелепипеда с отверстием, присваиваем ему приоритет 1, отображаем его на сцене, присваиваем ему ссылку на исходный параллелепипед, который сейчас скрываем. Приоритет исходного параллелепипеда увеличиваем на 1.

После удаления цилиндра процесс обратный.


--------------------
Мне нужны помощники.
PM MAIL WWW   Вверх
EgoBrain
Дата 25.2.2009, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 23.3.2008
Где: Комната

Репутация: 1
Всего: 2



Цитата(Mazzi @ 25.2.2009,  10:16)
Наши действия: строим новый объект в виде параллелепипеда с отверстием

Дык в принципе вопрос и заключался в основном в в этом - как просчитать новый объект с отверстием?
З.Ы. За идею спасибо.

Это сообщение отредактировал(а) EgoBrain - 25.2.2009, 12:39
PM MAIL ICQ Skype   Вверх
Rickert
Дата 26.2.2009, 08:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: 6
Всего: 52



EgoBrain, Задача непростая. Сам сидел над ней около месяца. Делал всё вручную, через аналитическую геометрию:
0) Берём дверь и стену, ищем "контур пересечения". На выходе: набор вершин контура.
1) Соединяем все вершины стороны стены и вершины контура. Отбрасываем пересекающиеся прямые.
2) Строим из полученных прямых треугольники, которые и будут треугольниками нашей новой стороны стены.
Это кратко. Кода много сотен строк будет (у меня - около тысячи, с учётом всех готовых функций анал. геом + переброска текстуры) smile 
Что происходит по сути? Ты берёшь вершины стены, вершины контура и особым образом треангулируешь в плоскости.

Это сообщение отредактировал(а) Rickert - 26.2.2009, 08:08


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
EgoBrain
Дата 26.2.2009, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 23.3.2008
Где: Комната

Репутация: 1
Всего: 2



Цитата(Rickert @ 26.2.2009,  08:02)
EgoBrain, Задача непростая. Сам сидел над ней около месяца. Делал всё вручную, через аналитическую геометрию:
0) Берём дверь и стену, ищем "контур пересечения". На выходе: набор вершин контура.
1) Соединяем все вершины стороны стены и вершины контура. Отбрасываем пересекающиеся прямые.
2) Строим из полученных прямых треугольники, которые и будут треугольниками нашей новой стороны стены.
Это кратко. Кода много сотен строк будет (у меня - около тысячи, с учётом всех готовых функций анал. геом + переброска текстуры) smile 
Что происходит по сути? Ты берёшь вершины стены, вершины контура и особым образом треангулируешь в плоскости.

Если стандартного готового способа нет, то я тогда заброшу эту задачу, так как времени нет и проект не коммерческий, да и вообще, если уже проффесионалы говорят что задача не простая то нечего мне начинающему чайнику с ней возиться, есть более простые и еще не освоенные smile .  Rickert, Вы бы проект выложили и тему можно решенной делать smile

Это сообщение отредактировал(а) EgoBrain - 26.2.2009, 12:41
PM MAIL ICQ Skype   Вверх
Rickert
Дата 26.2.2009, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: 6
Всего: 52



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

Это сообщение отредактировал(а) Rickert - 26.2.2009, 12:44


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
EgoBrain
Дата 27.2.2009, 04:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 23.3.2008
Где: Комната

Репутация: 1
Всего: 2



Цитата(Rickert @ 26.2.2009,  12:42)
EgoBrain, извините, не могу: проект коммерческий.
В OpenGL есть стандартные функции по логическому вычитанию одного объекта из другого, но это только видимость будет и много косяков.

Похоже тут уже конкретно выводится 1 из минусов OpenGl по сравнению с DirectX?  smile А так тема пусть открыта будет, вдруг кто-нить свыше на нее наткнется и что-то путное напишет smile

Это сообщение отредактировал(а) EgoBrain - 27.2.2009, 04:19
PM MAIL ICQ Skype   Вверх
Rpahut
Дата 1.3.2009, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


0xdeadbeef
*


Профиль
Группа: Участник
Сообщений: 243
Регистрация: 9.4.2006

Репутация: 5
Всего: 7



EgoBrain, вы по поводу минусов opengl полегче, а то я ща начну вам возражать... Или DX сильно помог вам в вашей задаче? smile 

И вобще сразу в дебри конструктивной геометрии лезть не нужно. Дырку в стене можно проделать по типу портала или трафарет-зеркала. Например отрендерить то что за стенкой в текстуру или еще куда и на стену наклеить. Конечно и здесь будет только видимость, но что еще вы от графической библиотеки хотели? И косяки не исключены, но косяки, как правило, вина программиста а не программы.
--------------------
C/C++ GameDevRSS Раздела программирования игрOpenGL - уроки от NeHeКак продать идею?
PM MAIL   Вверх
Rickert
Дата 1.3.2009, 16:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: 6
Всего: 52



Вариационное исчисление насчитывает множество решений одной и той же задачи smile 


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
EgoBrain
Дата 2.3.2009, 03:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 23.3.2008
Где: Комната

Репутация: 1
Всего: 2



Цитата(Rickert @ 1.3.2009,  16:42)
Вариационное исчисление насчитывает множество решений одной и той же задачи smile

Не полохо было бы когда множество решений приводят к одному результату, а не как предложил Rpahut - текстуру налепить, что это совсем не то, так дело не пойдет. Буду пока довольствоваться окнами и дверьми пересекающимися со стенами.
З.Ы. По поводу OpenGl не хотел ни кого обижать.

Это сообщение отредактировал(а) EgoBrain - 2.3.2009, 03:54
PM MAIL ICQ Skype   Вверх
Rickert
Дата 2.3.2009, 05:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: 6
Всего: 52



Так, народ, для Холиваров у нас есть. раздел и там даже тема есть аля "dx vs ogl".


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование игр, графики и искуственного интеллекта"
Rickert

НА ЗЛОБУ ДНЯ: Дорогие посетители, прошу обратить внимание что новые темы касающиеся новых вопросов создаются кнопкой "Новая тема" а не "Ответить"! Любые оффтопиковые вопросы, заданные в текущих тематических темах будут удалены а их авторы, при рецедиве, забанены.

  • Литературу, связанную с программированием графики, обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы связанные с программированием графики и мультимедии на языках С++ и Delphi
  • Вопросы по реализации алгоритмов рассматриваются здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rickert.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программирование игр, графики и искусственного интеллекта | Следующая тема »


 




[ Время генерации скрипта: 0.0588 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.