22 Сентября 2024, 04:40:44
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Навигация по форуму







guest3d
Quest3D - Русскоязычное сообщество > Quest3D > Программирование > Newton Physics + OO Interface
Newton Physics + OO Interface
(Прочитано 6010 раз)
  [1]
Печать
DimiS | **** | Старожил | Сообщений: 284 | « 14 Августа 2008, 15:59:23 »
Newton Physics + OO Interface |
0
тема в основном по програмированию
Мне нужно построить систему для удобной работы с объектами, которые взаимодействуют между собой с помощью Newton Physics. Для этого я описал три интерфейса: IRenderable(содержит методы Init, Update, Render); IPhysical(содержит поля: матрица resetPos и Newton Body); IObjectsManager(содержит список всех объектов и вызывает им апдейт и рендер). В принципе все мои объекты наследуют оба интерфейса(IRenderable+IPhysical), и их можно было бы совместить, но думаю все мои беды не от этого).

Рендер объектов реализован по простому -- вызывается 3Д обжект к которому подключен необходимый сюрфейс и ньютон боди из интерфейса(т.е. к нему нужно ещё коннектить THIS). Первый глюк с которым я столкнулся, это что после резета все объекты, которые хранились в списке моего менеджера, появляются в одной точке. Причём это реально разные боди, они по разному колизятся и расползаются в разные стороны, но с какого то перепугу появляются все в одной точке. Так я это мозгом и не смог понять. Решение -- при резете удаляю все объекты из списка и создаю заново. Костыль, но меня пока устраивает.
Далее мне надо было прилепить Hinge joint к одному из классов. Поэтому для него я создал ещё один интерфейс, который должен был хранить этот ченел Newton Hinge. Проблема оказалась в том что этот ченел нельзя добавить как поле в интерфейс, просто потому что его нету в списке тех ченелов которые можно добавлять. Другие джоинты есть, а этого нету))) Ну этот глюк я хотябы понимаю от чего мог произойти, и это просто баг который в будущем исправят.
Последнее на что я напоролся -- мне нужно было сделать проверку позиции своего объекта, т.е в апдейте постоянно проверять, а не нахожусь ли я недалеко от ...какой то точки например. Так вот при любом обращении к своему полю ньютон бади оно резетится в стартовую позицию... Там конечно много всяких ченелов которые я не подключаю к нему кроме THIS, но я не знаю как ещё мне получить ту матрицу, которую возвращяет ньютон бади, не обращяясь к самому ньютон бади

Понимаю что написал не совсем внятно, но не знаю как расписать по-понятнее, спрашивайте. Надеюсь найдутся люди которые делали нечто подобное и может быть подскажут как победить эти проблемы

П.С: версия квеста 4.1.2
 
  [1]
Печать
 
Quest3D - Русскоязычное сообщество > Quest3D > Программирование > Newton Physics + OO Interface
Перейти в: