![]() |
|
Модераторы: Rickert |
![]()
|
|
| EgoBrain |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 23.3.2008 Где: Комната Репутация: 1 Всего: 2 |
Вобщем задача такая: объекты пересекаются, и один исключает кусок другого с возможностью восстановления этого куска, и с учетом того, что таких "вырезов/восстановлений" сколько угодно, как это реализовано в 3Д-Максе. Ну например я помещаю в сцену объект, и он пересекая другой делает в нем дыру, потом я решил изъять из сцены загруженные объект и дыра в первом объекте зарастает, вобщем как-то так.
Добавлено через 4 минуты и 49 секунд Практическое применение: первый объект это некое помещение (комната), а второй объект допустим дверь или окно, и когда я добавляю новое окно, оно проделывает дыру в стене помещения, потом если я вдруг решил убрать окно дыра должна зарасти. |
|||
|
||||
| Mazzi |
|
|||
|
Правильный ![]() ![]() Профиль Группа: Комодератор Сообщений: 825 Регистрация: 3.4.2003 Репутация: 4 Всего: 21 |
1) установи приоритеты у объектов(выше должен быть у вырезающего, ниже у обрезаемого
2) создаёшь новый объект (как обрезаемый, только с дыркой), старый прячешь. 3) на сцене отображаешь новый объект. В случае удаления вырезающего объекта(двери), удаляешь новый объект, показываешь старый. Удачи! Добавлено через 7 минут и 21 секунду Забыл написать об признаке связи между объектами, который нужен при удалении режущего объекта.Приоритеты тоже для этого. -------------------- Мне нужны помощники. |
|||
|
||||
| EgoBrain |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 23.3.2008 Где: Комната Репутация: 1 Всего: 2 |
А как в коде сделать? Пишу на MDX.
|
|||
|
||||
| Mazzi |
|
|||
|
Правильный ![]() ![]() Профиль Группа: Комодератор Сообщений: 825 Регистрация: 3.4.2003 Репутация: 4 Всего: 21 |
Я MDX не знаю.
-------------------- Мне нужны помощники. |
|||
|
||||
| EgoBrain |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 23.3.2008 Где: Комната Репутация: 1 Всего: 2 |
Ну а в С++ Direct-3D можно пример? Что такое приоритет объекта и как с ним работать, или это понятие придумано конкретно для данного случая Это сообщение отредактировал(а) EgoBrain - 25.2.2009, 03:42 |
|||
|
||||
| Mazzi |
|
||||
|
Правильный ![]() ![]() Профиль Группа: Комодератор Сообщений: 825 Регистрация: 3.4.2003 Репутация: 4 Всего: 21 |
У меня нет конкретной реализации того, что тебе нужно и нет желания эту реализацию делать. Я подал тебе идею реализации как я это вижу. Приоритеты придуманы мной для определения последовательности действий при изменении условий. То есть, какой объект скрывать, какой показывать (при удалении двери в твоём примере). Например: изначально есть параллелепипед. Мы добавляем на сцену цилиндр который проходит сквозь наш параллелепипед и должен проделать в нём(в параллелепипеде) отверстие. Наши действия: строим новый объект в виде параллелепипеда с отверстием, присваиваем ему приоритет 1, отображаем его на сцене, присваиваем ему ссылку на исходный параллелепипед, который сейчас скрываем. Приоритет исходного параллелепипеда увеличиваем на 1. После удаления цилиндра процесс обратный. -------------------- Мне нужны помощники. |
||||
|
|||||
| EgoBrain |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 23.3.2008 Где: Комната Репутация: 1 Всего: 2 |
Дык в принципе вопрос и заключался в основном в в этом - как просчитать новый объект с отверстием? З.Ы. За идею спасибо. Это сообщение отредактировал(а) EgoBrain - 25.2.2009, 12:39 |
|||
|
||||
| Rickert |
|
|||
|
Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: 6 Всего: 52 |
EgoBrain, Задача непростая. Сам сидел над ней около месяца. Делал всё вручную, через аналитическую геометрию:
0) Берём дверь и стену, ищем "контур пересечения". На выходе: набор вершин контура. 1) Соединяем все вершины стороны стены и вершины контура. Отбрасываем пересекающиеся прямые. 2) Строим из полученных прямых треугольники, которые и будут треугольниками нашей новой стороны стены. Это кратко. Кода много сотен строк будет (у меня - около тысячи, с учётом всех готовых функций анал. геом + переброска текстуры) Что происходит по сути? Ты берёшь вершины стены, вершины контура и особым образом треангулируешь в плоскости. Это сообщение отредактировал(а) Rickert - 26.2.2009, 08:08 -------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
| EgoBrain |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 23.3.2008 Где: Комната Репутация: 1 Всего: 2 |
Если стандартного готового способа нет, то я тогда заброшу эту задачу, так как времени нет и проект не коммерческий, да и вообще, если уже проффесионалы говорят что задача не простая то нечего мне начинающему чайнику с ней возиться, есть более простые и еще не освоенные Это сообщение отредактировал(а) EgoBrain - 26.2.2009, 12:41 |
|||
|
||||
| Rickert |
|
|||
|
Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: 6 Всего: 52 |
EgoBrain, извините, не могу: проект коммерческий.
В OpenGL есть стандартные функции по логическому вычитанию одного объекта из другого, но это только видимость будет и много косяков. Это сообщение отредактировал(а) Rickert - 26.2.2009, 12:44 -------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
| EgoBrain |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 23.3.2008 Где: Комната Репутация: 1 Всего: 2 |
Похоже тут уже конкретно выводится 1 из минусов OpenGl по сравнению с DirectX? Это сообщение отредактировал(а) EgoBrain - 27.2.2009, 04:19 |
|||
|
||||
| Rpahut |
|
|||
![]() 0xdeadbeef ![]() Профиль Группа: Участник Сообщений: 243 Регистрация: 9.4.2006 Репутация: 5 Всего: 7 |
EgoBrain, вы по поводу минусов opengl полегче, а то я ща начну вам возражать... Или DX сильно помог вам в вашей задаче?
И вобще сразу в дебри конструктивной геометрии лезть не нужно. Дырку в стене можно проделать по типу портала или трафарет-зеркала. Например отрендерить то что за стенкой в текстуру или еще куда и на стену наклеить. Конечно и здесь будет только видимость, но что еще вы от графической библиотеки хотели? И косяки не исключены, но косяки, как правило, вина программиста а не программы. --------------------
C/C++ GameDevRSS Раздела программирования игрOpenGL - уроки от NeHeКак продать идею? |
|||
|
||||
| Rickert |
|
|||
|
Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: 6 Всего: 52 |
Вариационное исчисление насчитывает множество решений одной и той же задачи
-------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
| EgoBrain |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 23.3.2008 Где: Комната Репутация: 1 Всего: 2 |
Не полохо было бы когда множество решений приводят к одному результату, а не как предложил Rpahut - текстуру налепить, что это совсем не то, так дело не пойдет. Буду пока довольствоваться окнами и дверьми пересекающимися со стенами. З.Ы. По поводу OpenGl не хотел ни кого обижать. Это сообщение отредактировал(а) EgoBrain - 2.3.2009, 03:54 |
|||
|
||||
| Rickert |
|
|||
|
Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: 6 Всего: 52 |
Так, народ, для Холиваров у нас есть. раздел и там даже тема есть аля "dx vs ogl".
-------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
![]()
|
| Правила форума "Программирование игр, графики и искуственного интеллекта" | |
|
|
НА ЗЛОБУ ДНЯ: Дорогие посетители, прошу обратить внимание что новые темы касающиеся новых вопросов создаются кнопкой "Новая тема" а не "Ответить"! Любые оффтопиковые вопросы, заданные в текущих тематических темах будут удалены а их авторы, при рецедиве, забанены.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rickert. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Программирование игр, графики и искусственного интеллекта | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |