Новости • Форум • Помощь • Поиск • Участники • Календарь • База |
Гость ( Вход | Регистрация ) | Выслать повторно письмо для активации |
Ответ Новая тема |
Mr.Core Профиль Статус: - Группа: Модераторы Рейтинг: 17 |
Здравствуйте пытаюсь написать айс ноду, для правильной работы необходимо выделять память под массив для промежуточных данных, которые должны существовать на протяжении всей симуляции, не знаю с какой стороны подойти Сейчас тыкаю GetUserData \ PutUserData методы из класса Контекста, главная проблема что при удалении выделенной памяти выбивает ошибку мол я пытаюсь почитсть память за границами выделенной Выделение памяти при инициализации ноды
Расширение памяти в зависимости от входных данных ( происходит в каждом кадре До начала основного просчета )
Потом собсно идет сам просчет, но я там все откоментил, поэтому ничего не просиходит в том келбеке и собсно сам процесс удаления
если код - явный быдлокод, ткните носом что не так делаю ;) ЗЫ терзают сомнения, что лучше юзать userdatablob вместо этого Спасибо |
||||||
maxFox Профиль Статус: нажиматель кнопок Группа: Элита Рейтинг: 17 |
Коекретно для Айс-ноды не знаю, на кастом операторе все просто: 1. ЮзерДата описывается, как класс пример:
2. Инициализируется в _init калбеке:
3. Удаление в _term калбеке:
думаю, что организация в айс-нодах идентична п.с. ну, конечно, класс может быль любой структуры, т.к. в Юзердата сохраняется только ссылка на инициализируемую структуру. |
||||||
Mr.Core Профиль Статус: - Группа: Модераторы Рейтинг: 17 |
Ага, спасибо большое, завтра буду пробовать :)
|
alCa Профиль Статус: слон Группа: Элита Рейтинг: 13 |
Привет всем.
сижу потихоньку ковыряю для кси плугин. айс ноду. Так вот никак не въеду как правильно забить 2д массив чтобы с ним в последствии производить расчёты. Понимаю что нужно использовать юзердату но вообще не понимаю как это работает. по примеру из СДК автодеска в колбеке беггин евалуейт пишу следующее CValue userData = in_ctxt.GetUserData(); ULONG nThreadCount = in_ctxt.GetEvaluationThreadCount(); std::vector<MATH::CVector3f >* pPointVector = NULL; if (userData.IsEmpty()) { pPointVector = new std::vector<MATH::CVector3f >; in_ctxt.PutUserData((CValue::siPtrType)pPointVector); } else { // Reuse the user data buffer if already created. pPointVector = (std::vector<MATH::CVector3f >*)(CValue::siPtrType)in_ctxt.GetUserData(); } if (pPointVector && pPointVector->size() < nThreadCount) { // Extend buffer if needed for (ULONG i = (ULONG)pPointVector->size(); i < nThreadCount; i++) { // Create a CSampleData object for each thread pPointVector->push_back(MATH::CVector3f()); } } тут как я понимаю происходит чтото типа инициализации 2д вектора дальше мне нужно забить этот вектор данными со входа ноды (поинтпозишены. они с каждым фрэймом прибавляютьбся ). вот тут я плыву. не могу понять где это делать и как. |
alCa Профиль Статус: слон Группа: Элита Рейтинг: 13 |
Опять я. Вопрос тот же, на входе ноды в айсе поинтпозишены которые мне нужно занести в массив .Далее я с этим маасивом буду производить расчёты. и потом эти расчёты нужно вывести обратно в айс ноде на выход. Может есть пример подходящий какой?
|
Mr.Core Профиль Статус: - Группа: Модераторы Рейтинг: 17 |
тебе надо что бы массив хранился между отдельными вызовами evaluate ноды ?
|
alCa Профиль Статус: слон Группа: Элита Рейтинг: 13 |
наверно да. рассчёты нужно производить сразу над всеми поинтпозишенами одновременно а не по порциям как это позволяет вызов evaluate.
|
Mr.Core Профиль Статус: - Группа: Модераторы Рейтинг: 17 |
Подробнее опиши что надо получить. Пример из сдк не в тему, там создают массив значений класса CSampleData, кол-во элементов массива равно кол-ву тредов, под мультипоток рассчитано
|
alCa Профиль Статус: слон Группа: Элита Рейтинг: 13 |
В айсе генерятся патиклы каждый фрэйм добавляються новые. Я завожу поинтпозишен на вход моей ноды. все поинтпозишены патиклов должны сохраниться в массив. Далее в теле кода с++ мне нужно произвести вычисления над всеми патиклами одновременно. По порциям как позволяет вызов эвалюэйт не годиться(ну может и можно как то и с этим работать но тогда я вообще закопаюсь, или я чегото не знаю). Далее полученный результат нужно выдать на выход моей ноды ,чтобы в айсе поинтпозишены этих патиклов получи новые значения.
Может ты делал чтото такое же когда писал свой плугин для Waterfall_FX. |
Mr.Core Профиль Статус: - Группа: Модераторы Рейтинг: 17 |
это физиковский который? линк на сорсы, может поможет чем-то
|
alCa Профиль Статус: слон Группа: Элита Рейтинг: 13 |
спс. буду курить
|
Ответ Новая тема |