В API не нашел ф-ций задания непрозрачности (opacity) эмитра

Обсуждение специальной версии Magic Particles (Dev), предназначенной для разработчиков игр.

В API не нашел ф-ций задания непрозрачности (opacity) эмитра

Сообщение nAlex » Вт сен 27, 2016 9:33 am

Всем привет,

Присматриваясь к библиотеке не обнаружил функций изменения степени непрозрачности для эмитера, хотя, в редакторе эта возможность есть. 8(
Пробовал, добавить один лишь только ключ в таймлайн непрозрачности (MAGIC_KEY_OPACITY), а, потом, модифицировать его значение, но:
- эмитер не реагирует на изменения значений этого единственного ключа (возможно, он бы отреагировал после перезапуска эмитера, но это уже поздно)
- из документации не ясно в каких единицах задается эта непрозразчность при задании значений ключа. В результате экспериментов, кажется, 0..100, но точно не уверен, так как это не сработало.
- если посмотреть на график в редакторе, то визуально виден один ключ на графике в точке 0 сек., но API возвращает количество ключей равное 0 (думаю, так было бы универсально, если бы заданное скалярное значение свойству было реализовано, через добавление единственного ключа в таймлайн свойства)

Так много всего написал... А теперь сам вопрос:
Можно ли изменить степень непрозрачности эмитера из API?

Спасибо за помощь
nAlex
 
Сообщения: 3
Зарегистрирован: Вт сен 27, 2016 9:18 am

Re: В API не нашел ф-ций задания непрозрачности (opacity) эм

Сообщение Odin_KG » Вт дек 20, 2016 5:44 am

Привет,

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

Можно ли изменить степень непрозрачности эмитера из API?

Можно ключом непрозрачности или есть еще график в API такой раздел как "Графики". Там есть график MAGIC_DIAGRAM_VISIBILITY и его можно менять - это, практически, альфа-канал для конкетного типа частиц.
Аватара пользователя
Odin_KG
Administrator
Administrator
 
Сообщения: 841
Зарегистрирован: Чт янв 15, 2009 2:57 pm

Re: В API не нашел ф-ций задания непрозрачности (opacity) эм

Сообщение nAlex » Ср дек 21, 2016 8:36 pm

Алексей,

Спасибо Вам за ответ.
Так, как менят непрозрачность необходимо во время работы эмитера,
* метод с масштабным коэфициентом не сработал и Magic_SetDiagramFactor() постоянно возвращала ошибку -3 (MAGIC_UNKNOWN) сигнализируя, что график "не доступен".
...
const int result = Magic_SetDiagramFactor(emitterId_, -1, MAGIC_DIAGRAM_VISIBILITY, opacity); // -3 (MAGIC_UNKNOWN)
const bool success = (result == MAGIC_SUCCESS); // false
...

* а вот с установкой ключа, на этот раз (после обновления до версии 3.42), уже все стработало, смасштабировав непрозрачность к диапазону [0,100]:
...
MAGIC_KEY key{ 0.0, {0,0},{0,0},{0,0}, 0.0f, 0, {0}, opacity*100.0f};
int result;

if (Magic_GetKeyCount(emitterId_, MAGIC_KEY_OPACITY) == 0)
result = Magic_CreateKey(emitterId_, MAGIC_KEY_OPACITY, &key);
else
result = Magic_SetKey(emitterId_, MAGIC_KEY_OPACITY, &key, 0);
const bool success = (result == MAGIC_SUCCESS); // true
...

Спасибо, еще раз, за помощь. :D
nAlex
 
Сообщения: 3
Зарегистрирован: Вт сен 27, 2016 9:18 am

Re: В API не нашел ф-ций задания непрозрачности (opacity) эм

Сообщение Odin_KG » Ср дек 21, 2016 8:58 pm

Спасибо Вам за ответ.

Без проблем :-)

* метод с масштабным коэфициентом не сработал и Magic_SetDiagramFactor() постоянно возвращала ошибку -3 (MAGIC_UNKNOWN) сигнализируя, что график "не доступен".
...
const int result = Magic_SetDiagramFactor(emitterId_, -1, MAGIC_DIAGRAM_VISIBILITY, opacity); // -3 (MAGIC_UNKNOWN)

Нельзя подавать вторым параметром -1, здесь нужен номер типа частиц внутри эмиттера. Вообще можно просто пройтись по всем частицам внутри эмиттера от нуля до Magic_GetParticlesTypeCount() -1.

* а вот с установкой ключа, на этот раз (после обновления до версии 3.42), уже все стработало, смасштабировав непрозрачность к диапазону [0,100]:

это радует :-)
Аватара пользователя
Odin_KG
Administrator
Administrator
 
Сообщения: 841
Зарегистрирован: Чт янв 15, 2009 2:57 pm

Re: В API не нашел ф-ций задания непрозрачности (opacity) эм

Сообщение nAlex » Чт дек 22, 2016 12:29 am

Алексей,

Огромное Вам спасибо за комментарии и пояснения. ;)
nAlex
 
Сообщения: 3
Зарегистрирован: Вт сен 27, 2016 9:18 am

Re: В API не нашел ф-ций задания непрозрачности (opacity) эм

Сообщение Odin_KG » Чт дек 22, 2016 6:42 am

Огромное Вам спасибо за комментарии и пояснения. ;)

Пожалуйста :D

Вообще можно просто пройтись по всем частицам внутри эмиттера от нуля до Magic_GetParticlesTypeCount() -1.

Кстати, будет правильно пройтись первым циклом по всем эмиттерам, а уже для каждого эмиттера по всем частицам. Дело в том, что эмиттер может являться анимированной папкой, такой эмиттер содержит N эмиттеров, каждый из которых содержит M типов частиц. Анимированная папка является точно таким же эмиттером с точки зрения пользователя, но для неё Magic_GetEmitterCount
(hmEmitter) возвращает количество эмиттеров (N), которые находятся внутри неё. Далее можно получить дескриптор любого эмиттера внутри, используя HM_EMITTER child=Magic_GetEmitter(hmEmitter, i). Теперь уже используем эмиттер child, чтобы для каждого типа частиц внутри задействовать график MAGIC_DIAGRAM_VISIBILITY.
Вот примерно так...
Аватара пользователя
Odin_KG
Administrator
Administrator
 
Сообщения: 841
Зарегистрирован: Чт янв 15, 2009 2:57 pm


Вернуться в Magic API

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

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

cron