日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

AE插件开发示例

發(fā)布時(shí)間:2024/3/12 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 AE插件开发示例 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

????????如上一篇文章🔗搭建AE插件開(kāi)發(fā)框架?介紹,功能實(shí)現(xiàn)需在鉤子函數(shù)?CommandHook() 中開(kāi)發(fā),那來(lái)看看怎么獲取圖層的曝光值吧!

????????先獲取當(dāng)前圖層:

AEGP_LayerH layerH = NULL; ERR(suites.LayerSuite8()->AEGP_GetActiveLayer(&layerH));

????????再根據(jù)圖層獲取對(duì)應(yīng)的效果空間,如曝光度對(duì)應(yīng)的 effect_key 是 825:

AEGP_InstalledEffectKey effect_key = 825; AEGP_EffectRefH effectH; ERR(suites.EffectSuite4()->AEGP_ApplyEffect(S_my_id, layerH, effect_key, &effectH));

????????如果僅此,那么插件每執(zhí)行一次,效果控件面板就會(huì)增加一個(gè)曝光度面板:

?????????可以通過(guò)如下代碼在應(yīng)用該效果前做個(gè)判斷:

A_long num_effectsL = 0; Boolean is_apply = false; ERR(suites.EffectSuite4()->AEGP_GetLayerNumEffects(layerH, &num_effectsL)); for (A_long i = 0; i < num_effectsL; ++i) {ERR(suites.EffectSuite4()->AEGP_GetLayerEffectByIndex(S_my_id, layerH, i, &effectH));ERR(suites.EffectSuite4()->AEGP_GetInstalledKeyFromLayerEffect(effectH, &current_key));if (current_key == effect_key) {is_apply = true;break;} } if (!is_apply) {ERR(suites.EffectSuite4()->AEGP_ApplyEffect(S_my_id, layerH, effect_key, &effectH)); }

????????打開(kāi)曝光度面板后,可以看到有多個(gè)參數(shù),如主要通道下的曝光度、偏移,還有單個(gè)通道包括紅綠藍(lán)的曝光度等等,每個(gè)參數(shù)都有對(duì)應(yīng)的的一個(gè)標(biāo)記以及值,可以通過(guò)方法?AEGP_GetEffectNumParamStreams() 獲取:

ERR(suites.StreamSuite5()->AEGP_GetEffectNumParamStreams(effectH, &num_paramsL)); // 列出 effect 下所有 stream for (A_long i = 1; i < num_paramsL; ++i) {ERR(suites.StreamSuite5()->AEGP_GetNewEffectStreamByIndex(S_my_id, effectH, i, &streamH));ERR(suites.DynamicStreamSuite4()->AEGP_GetMatchName(streamH, stream_name));ERR(suites.StreamSuite5()->AEGP_GetStreamType(streamH, &stream_type));ERR(suites.StreamSuite5()->AEGP_GetStreamProperties(streamH, &flags, &min, &max));s = "stream index:" + std::to_string(i) + ", name:" + stream_name + ", type:" + std::to_string(stream_type) + ", min:" + std::to_string(min) + ", max:" + std::to_string(max);writeLog(s); }

????????打印結(jié)果如下:

????????這里打印出的都是些相關(guān)屬性,包括 stream 匹配名稱(chēng)、類(lèi)型、最大值、最小值等,如果要獲取具體曝光值,可以調(diào)用?AEGP_GetNewStreamValue() 方法:

AEGP_LTimeMode time_mode = AEGP_LTimeMode_LayerTime; A_Time timeT = {0, 1}; AEGP_StreamValue2 stream_value; AEFX_CLR_STRUCT(stream_value); ERR(suites.StreamSuite5()->AEGP_GetNewStreamValue(S_my_id, streamH, time_mode, &timeT, TRUE, &stream_value));

????????stream_value 就記錄了具體值,注意到它是 AEGP_StreamValue2 類(lèi)型,定義如下:

typedef union {AEGP_FourDVal four_d;AEGP_ThreeDVal three_d;AEGP_TwoDVal two_d;AEGP_OneDVal one_d;AEGP_ColorVal color;AEGP_ArbBlockVal arbH;AEGP_MarkerValP markerP;AEGP_LayerIDVal layer_id;AEGP_MaskIDVal mask_id;AEGP_MaskOutlineValH mask;AEGP_TextDocumentH text_documentH; } AEGP_StreamVal2;typedef struct {AEGP_StreamRefH streamH;AEGP_StreamVal2 val; } AEGP_StreamValue2;

????????這時(shí)候前面打印的? stream_type 字段就派上用場(chǎng)了,這是取曝光值的關(guān)鍵??聪?stream_type 一共有哪些:

enum {AEGP_StreamType_NO_DATA,AEGP_StreamType_ThreeD_SPATIAL,AEGP_StreamType_ThreeD,AEGP_StreamType_TwoD_SPATIAL,AEGP_StreamType_TwoD,AEGP_StreamType_OneD,AEGP_StreamType_COLOR,AEGP_StreamType_ARB,AEGP_StreamType_MARKER,AEGP_StreamType_LAYER_ID,AEGP_StreamType_MASK_ID,AEGP_StreamType_MASK,AEGP_StreamType_TEXT_DOCUMENT }; typedef A_long AEGP_StreamType;

?????????stream_type 值為 5 的話(huà),也就是?AEGP_StreamType_OneD 類(lèi)型,再根據(jù)?AEGP_StreamVal2 中類(lèi)型定義,通過(guò)?stream_value.val.one_d 就可以取到相應(yīng)值啦!

????????如果要修改曝光值呢?譬如修改主要通道曝光值為 0.6,將其賦值給 stream_value.val.one_d ,再直接調(diào)用方法 AEGP_SetStreamValue() 即可:

stream_index = 3; stream_value.val.one_d = 0.6; ERR(suites.StreamSuite5()->AEGP_GetNewEffectStreamByIndex(S_my_id, effectH, stream_index, &streamH)); ERR(suites.StreamSuite5()->AEGP_SetStreamValue(S_my_id, streamH, &stream_value));

????????以上,歡迎交流~

總結(jié)

以上是生活随笔為你收集整理的AE插件开发示例的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。