Quest3D - Русскоязычное сообщество

Quest3D => Программирование => Тема начата: Fares от 26 Января 2010, 20:01:35



Название: Вопрос по созданию канала
Отправлено: Fares от 26 Января 2010, 20:01:35
Если создаешь для канала функцию, которая будет использоваться много, она пишется в .cpp файле или создается .h файл описывающий реализацию этой функции?


Название: Re: Вопрос по созданию канала
Отправлено: DimiS от 27 Января 2010, 12:01:33
по нормальному в срр файле, хотя в большинстве случаев компилятор схавает и в h файле


Название: Re: Вопрос по созданию канала
Отправлено: Fares от 27 Января 2010, 19:28:42
Спасиба ))))


Название: Re: Вопрос по созданию канала
Отправлено: Fares от 28 Января 2010, 14:18:20
Еще вопросик, мне нужно чтобы канал находил точку пересечения луча и тела. Dimis не знаешь где может быть описание этого алгоритма?


Название: Re: Вопрос по созданию канала
Отправлено: Sqwer от 28 Января 2010, 16:51:48
http://www.gamedev.ru/code/forum/?ai


Название: Re: Вопрос по созданию канала
Отправлено: Fares от 08 Февраля 2010, 21:42:48
Опять вопрос ))) Как сделать, чтобы значение выдаваемое канал изменялось? Например я задаю цикл в канале и чтобы выходящее значение менялось, там 0...1000 и чтобы все это было видно, а не просчитывалось сразу


Название: Re: Вопрос по созданию канала
Отправлено: Fares от 17 Марта 2010, 22:25:47
Всем, привет. Кто знает, как сделать, чтобы набор матриц стал массивом? Чтобы я, например, в одном цикле мог просмотреть информацию из нескольких матриц?


Название: Re: Вопрос по созданию канала
Отправлено: Sqwer от 17 Марта 2010, 23:18:19
Серёг, думаю можно сделать это в самом канале. именно там создать массив матриц.

Но как вариант  сделать несколько подключаемых типов "МАТРИЦА" , при обращении к каналу он будет вытягивать значения матриц которые к нему подсоедены, жаль что это актуально только при малом количестве матриц.


Название: Re: Вопрос по созданию канала
Отправлено: Fares от 18 Марта 2010, 00:00:31
Вот в этом и прикол как создать массив из матриц. А вытягивать из каждой отдельной.... Тут ты заранее должен будешь знать их максимальное количество


Название: Re: Вопрос по созданию канала
Отправлено: DimiS от 18 Марта 2010, 15:43:35
Всем, привет. Кто знает, как сделать, чтобы набор матриц стал массивом? Чтобы я, например, в одном цикле мог просмотреть информацию из нескольких матриц?

вопрос не очень понятен, что за набор матриц, набор чаилдов твоего канала? или у тебя внутри канала есть какой то набор матриц? или как вобще?


Название: Re: Вопрос по созданию канала
Отправлено: Fares от 17 Мая 2010, 14:06:21
У меня тут два вопросика: первое как посчитать количество матриц подсоединенных к каналу и второй. У меня в канале происходит расчет пути, как обойти препятствие. Он у меня находит точки обхода и все нормально работает. Но вопрос, как сделать визуализацию. Чтобы после того, как канал просчитал эти точки, он плавно провел по ним тело (из канала выходит матрица, которая должна быть подсоединена к этому телу).


Название: Re: Вопрос по созданию канала
Отправлено: Ruslan от 17 Мая 2010, 15:05:42
Интересно посмотреть.. есть пример?
Наверное в твой канал, нужно подать индекс нужной тебе матрицы, и уже из канала возвращять матрицу, соответственно индексу.


Название: Re: Вопрос по созданию канала
Отправлено: DimiS от 20 Мая 2010, 12:31:42
по поводу первого, если ты пользуешь анлимитед линкинг то тебе наверно нужна эта функа GetChildLinkPositionCount, посмотри в сдк
ну а по второму, если ты можешь получить позицию матрицы в момент времени(основываясь на какой то скорости и твоему пути), то тебе надо каждый раз при возвращении матрицы собирать её из этой позиции и каких то поворотов. Хеадинг можно получить если строить вектор от предыдущей позиции до нынешней.


Название: Re: Вопрос по созданию канала
Отправлено: Fares от 23 Мая 2010, 15:10:51
Я пробовал делать дампингом. Типа есть нулевая точка на входе канала и ей соответствует первая на выходе. Через дампинг, координаты нулевой точки превращаются в первую, и канал перепроверив координаты, заменяет первую точку на выходе второй. Дальше опять дампингом идет движение ко второй точки и на выходе канала появляются координаты третей и т.д. Но там есть фишка, дампинг работает не точно. Например нужно чтобы координата была 5.0, а он останавливается на 4.999(9) и все. Поэтому его тут не поиспользуешь.

DimiS, там чуть-чуть по другому работает. Есть начальная точка и конечная, канал бросает луч, находит с какой гранью в первую очередь он пересекается и делает точку обхода этой грани. Начальная точка запоминается, а получившееся точка обхода становится начальной. И снова срабатывает функция. До тех пор пока между начальной и конечной точкой не будут пересечения. Таким образом у меня получается список этих точек и вот по ним мне нужно провести мой например шарик. Дампингом как я рассказал не сделать, вот я и спрашиваю, какие еще возможны варианты.


Название: Re: Вопрос по созданию канала
Отправлено: DimiS от 24 Мая 2010, 12:08:03
ну так вот у тебя есть список точек, тебе нужно хранить индекс последней достигнутой точки(т.е. в начале у тебя индекс 0) и расстояние которое ты прошел от неё. В каждом цикле ты увеличиваешь пройденное расстояние и проверяешь не превысило ли это расстояние до след точки, если да то увеличиваешь индекс и пересчитываешь расстояние от последней точки. Ну а когда тебе нужно получать текущую позицию то берешь точку по сохранённому индексу и по индексу+1 и находишь положение точки между ними имея расстояние. Если понадобится могу расписать подробнее как.


Название: Re: Вопрос по созданию канала
Отправлено: Fares от 25 Мая 2010, 14:12:11
А, ну да, можно так. Мне приходила эта идея, но правда чуть по другому. Как и ты и говорил, я прибавлял число, но из-за неточности квеста, этих сотых и тысячных, при сравнении координат, происхдили лаги. Попробую, надеюсь что-нить толковое выйдет, спасибо )))


Название: Re: Вопрос по созданию канала
Отправлено: DimiS от 25 Мая 2010, 15:47:46
Квест тут не причём. Просто надо понимать что есть определённая частота с которой происходит обновление, и у тебя нету никакой гарантии что какое-то обновление произойдёт точно в момент совпадения координат. Гораздо вероятнее что совпадение координат должно было бы произойти где то между двумя кадрами.
И так в любой системе риалтайм рендеринга.


Название: Re: Вопрос по созданию канала
Отправлено: Ruslan от 25 Мая 2010, 16:05:59
Значения float нужно сравнивать примерно так:

#define EPSILON   0.0001f
bool Compared(float value1, float value2)
{
if (fabs(fabsf(value1)-fabsf(value2)) <= EPSILON) return true;
else return false;
}



Название: Re: Вопрос по созданию канала
Отправлено: Fares от 28 Мая 2010, 11:22:20
DimiS, Ruslan спасибо за идеи, все заработало ))))


Название: Re: Вопрос по созданию канала
Отправлено: Fares от 31 Мая 2010, 14:18:11
Люди, проблема. В квесте делаю программу, подцепляю в нее созданный канал, но он не сохраняется и соответственно создаваемая программа не работает. Каке могут быть причины, что он не сохраняет созданный мной канал?