AESDK从流中获得变换信息

AE中Transform下的信息位于流中,和别的软件不太一样。

如果是特效的参数信息要从EffectSuites中获取,默认的参数信息基本上StreamSuites都可以得到

需要注意,取得流之后也要释放流,否则就会出现下面的情况

首先,流信息位于层管理器中,需要先取得一个图层句柄,再通过这个图层得到它的流信息

这里就用当前激活状态的图层来测试,先取得当前激活状态的图层

suites.LayerSuite5()->AEGP_GetActiveLayer(....)

取得流的句柄

AEGP_StreamRefH streamRefH = NULL;
suites.StreamSuite2()->AEGP_GetNewLayerStream(0, layerH, stream, &streamRefH);

取得具体值,还需要一个时间参数。这里取得层的当前时间

A_Time result;
suites.LayerSuite5()->AEGP_GetLayerCurrentTime(layerH, AEGP_LTimeMode_CompTime, &result);

取得当前时间下,位置信息的值

AEGP_StreamValue result;
suites.StreamSuite2()->AEGP_GetNewStreamValue(0, position_streamH, AEGP_LTimeMode_CompTime, &time, false, &result);

如果2D模式就用two_d,3D模式就用three_d得到位置值

posValue.val.two_d.x
posValue.val.two_d.y

最后释放流

suites.StreamSuite2()->AEGP_DisposeStreamValue(...);
原文地址:https://www.cnblogs.com/hont/p/4198534.html