RenderedParticlesList

Разговоры на любые темы

RenderedParticlesList

Сообщение izimar » Ср авг 15, 2012 6:50 pm

Здравствуйте, в данный момент пробую и использовать MP с собственным врапером, но возникли проблемы .

Magic_OpenFileInMemory
Magic_LoadEmitter
Magic_CreateAtlasesForEmitters
Magic_CreateFirstRenderedParticlesList - и вот здесь количество постоянно нулевое. все хендлеры и сам партикл валидные, уже пол дня колупаю...

при последующих :
Magic_Update и Magic_CreateNextRenderedParticlesList ситуация не меняется.

не подскажите в чем может быть загвоздка?
izimar
 
Сообщения: 14
Зарегистрирован: Ср авг 15, 2012 6:27 pm

Re: RenderedParticlesList

Сообщение Odin_KG » Чт авг 16, 2012 2:30 am

не подскажите в чем может быть загвоздка?

Я бы подсказал, но пока информации недостаточно. Надо уточнять.

Вообще вот этими функциями грузите:
Magic_OpenFileInMemory
Magic_LoadEmitter
Magic_CreateAtlasesForEmitters

// Этой функцией выполняете все действия по обработке эмиттера
Magic_Update (здесь подается приращение времени в качестве аргумента, проверьте, чтобы там не 0 был, должно быть число в миллисекундах порядка 30)

// Этими визуализируете:
Magic_CreateFirstRenderedParticlesList
Magic_CreateNextRenderedParticlesList

Перед началом работы вызываете:
Magic_SetCleverModeForAtlas(true);
Аватара пользователя
Odin_KG
Administrator
Administrator
 
Сообщения: 833
Зарегистрирован: Чт янв 15, 2009 2:57 pm

Re: RenderedParticlesList

Сообщение izimar » Чт авг 16, 2012 2:34 pm

именно так и делаю, только Magic_CreateFirstRenderedParticlesList
Magic_CreateNextRenderedParticlesList постоянно возвращает count 0,
+ еще у меня включен Magic_SetLoopMode(emiter_,MAGIC_LOOP ); , если его закоментировать - то через 10 сек. Update начинает возвращать false, т.е. как и должно быть.

что самое интересное и емитеры и партиклы загружаются правильно, количество партиклов емитере смотрел через Magic_GetParticlesTypeCount.

Есть по проблеме одна идея - что когда я открываю свой експортнутый партикл снова в редакторе, то он мне пишет - что "текстура для партикла ненайдена отрисовать немогу", и приходится ручками заново выбрать текстуру.
Может и в апи надо ему как то какуето текстуру привязать?(хотя непонимаю зачем)...

+пробовал и свои партиклы, и партиклы из примеров
izimar
 
Сообщения: 14
Зарегистрирован: Ср авг 15, 2012 6:27 pm

Re: RenderedParticlesList

Сообщение Odin_KG » Чт авг 16, 2012 7:00 pm

+ еще у меня включен Magic_SetLoopMode(emiter_,MAGIC_LOOP ); , если его закоментировать - то через 10 сек. Update начинает возвращать false, т.е. как и должно быть.

Я уверен, что эмиттер работает правильно, потому что реакция как раз правильная.

Может и в апи надо ему как то какуето текстуру привязать?(хотя непонимаю зачем)...

Вот смотрите... текстура бывает внутренняя (хранится внутри ptc-файла) либо внешний атлас (редактор делает готовые png, tga под ptc-файл). Сюда по фразе: "текстура для партикла ненайдена отрисовать немогу" внутренней текстуры у вас в файле нет. Если вы используете примеры из враппера, то там текстуры лежат во внешних атласах, а не внутри ptc. Если используете свой ptc-файл, то, вероятно, вы удаляете текстуры при сохранении в режиме "для API".

API про текстуры знает только имена файлов и их размеры, т.е. оно ничего рисовать не умеет, а эту информацию применяет лишь для построения текстурного атласа на лету (текстуры внутри ptc), либо для использования внешнего атласа (текстуры внешние). Текстуры в обоих случаях загружает сам пользователь, но API ему дает указания, что и куда нужно загрузить. Для этого во враппере есть функция void MP_Manager::RefreshAtlas(), которую лучше всего вызывать перед началом каждой визуализации всех эмиттеров. Регулярные вызовы нужны потому, что пользователь может внести изменения в любой момент состав эмиттеров, например, удалить или загрузить. API про это узнает и вернет пользователю изменения в атласах через функцию Magic_GetNextAtlasChange. Эта функция возвращает всего 4 ситуации:
1) Создать пустой текстурный атлас по размерам или загрузить готовый атлас из файла
2) Удалить атлас с указанным номером из массива
3) Загрузить на атлас текстурный кадр по указанным координатам
4) Очистить на атласе указанную прямоугольную область.

В случае с внешними текстурными атласами вам потребуется только пункты 1 и 2, причем из пункта 1) требуется только вариант в загрузкой из файла.
В общем нужно где-то тут копать. В примерах враппера атласы внешние.
Аватара пользователя
Odin_KG
Administrator
Administrator
 
Сообщения: 833
Зарегистрирован: Чт янв 15, 2009 2:57 pm

Re: RenderedParticlesList

Сообщение izimar » Чт авг 16, 2012 7:13 pm

а если я небуду рефрешить атлас, и вообще небуду трогать атласы(только вызову Magic_CreateAtlases после загрузки), и никаких текстур грузить небуду, то партиклы должны работать(тоесть генерироватся геометрия) или нет?
izimar
 
Сообщения: 14
Зарегистрирован: Ср авг 15, 2012 6:27 pm

Re: RenderedParticlesList

Сообщение Odin_KG » Пт авг 17, 2012 12:12 am

Я во враппере в функцию void MP_Manager::RefreshAtlas() вписал return первой же строкой. Т.е. атласы вообще не обрабатывались. Так Magic_CreateFirstRenderedParticlesList все равно возвращает количество частиц. Так что скорее всего дело не в этом. Эмиттер, над которым вы эксперементируете, в моем враппере исправно работает? Эмиттеры типа "Картинка" и "Текст" в API не работают, если они не сохранены в режиме "для API".
Аватара пользователя
Odin_KG
Administrator
Administrator
 
Сообщения: 833
Зарегистрирован: Чт янв 15, 2009 2:57 pm

Re: RenderedParticlesList

Сообщение izimar » Пт авг 17, 2012 2:12 am

Емитер - круг, сохранен для апи , без картинки и атласов
izimar
 
Сообщения: 14
Зарегистрирован: Ср авг 15, 2012 6:27 pm

Re: RenderedParticlesList

Сообщение izimar » Пт авг 17, 2012 4:23 pm

Все решил проблему, как оказалось Magic_CreateFirstRenderedParticlesList надо было вызывать при каждом рендере перед Magic_GetNextParticleVertexes, я же его дергал перед первым первым вызовом рендера а потом только GetNextParticleVertexes.

Но возникла новая, мне приходят не квады, а треугольники. т.е. у всех и всегда четвертый вертекс одинаковый..
izimar
 
Сообщения: 14
Зарегистрирован: Ср авг 15, 2012 6:27 pm

Re: RenderedParticlesList

Сообщение izimar » Пт авг 17, 2012 5:00 pm

все, и с етим разобрался - использовал 2д либу с 3д дефайном
izimar
 
Сообщения: 14
Зарегистрирован: Ср авг 15, 2012 6:27 pm

Re: RenderedParticlesList

Сообщение izimar » Пт авг 17, 2012 6:21 pm

Кстати еще вопрос, можно ли в редакторе задать для партикла не всю текстуру, а определенные УВ? и потом их по таймлайну анимировать?
izimar
 
Сообщения: 14
Зарегистрирован: Ср авг 15, 2012 6:27 pm

След.

Вернуться в Оффтопик

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

cron