在介紹具體的使用對象之前,大家得先了解ANTBaseObject和ANTRenderObject這兩個類,因為所有的對象都繼承這兩類。
架構(gòu)圖:

從上圖可以知道,目前基礎(chǔ)的對象類都是基于這兩個基類實(shí)現(xiàn)的,ANTBaseObject類主要是做一些基礎(chǔ)的屬性設(shè)置,ANTRenderObject類主要是做一些渲染效果和渲染模型的設(shè)置。
(接下來文章中使用方法的object,可以是:ANTGif, ANTImageView, ANTVideo, ANTObjModel, ANTPoint, ANTPrograssBar任意一個);
ANTBaseObject
ANTBaseObject基本的接口方法如下:
- (void)setPosition:(float)x Y:(float)y Z:(float)z;
設(shè)置對象在空間場景中的坐標(biāo)值,絕對坐標(biāo)。(記住,攝像機(jī)的位置在(0.0,0.0,0.0)的位置,朝向是(0,0,-1), 所有對象創(chuàng)建后初始位置處于(0.0,0.0,0.0)的位置,所以當(dāng)設(shè)置的對象是Mode為ANT_Plane的話,沒有設(shè)置坐標(biāo)的話,攝像機(jī)和物體重合了,所以當(dāng)為平面對象的話,一定要設(shè)置坐標(biāo))。
使用方法:
[object setPosition:0.0 Y:0,0 Z:-2.0];
- (void)setPositionForRelative:(float)x Y:(float)y Z:(float)z;
設(shè)置對象在空間場景中的相對坐標(biāo)值。假如對象的坐標(biāo)為(0.0,1.0,2.0),設(shè)置[object setPositionForRelative:1.0 Y:1.0 Z:1.0 ]后,則對象的坐標(biāo)為(1.0,2.0,3.0).
- (void)setScale:(float)x Y:(float)y Z:(float)z;
設(shè)置對象在空間場景中的縮放系數(shù),默認(rèn)為(1.0,1.0,1.0), 值在0~1.0之間為縮小,大于1.0為放大。
使用方法:
[object setScale:1.0 Y:1,0 Z:1.0];
- (void)setScaleForRelative:(float)x Y:(float)y Z:(float)z; //和setPosition類似
- (void)setRotate:(float)radians X:(float)x Y:(float)y Z:(float)z;
設(shè)置對象在空間場景中的旋轉(zhuǎn)角度,radians為旋轉(zhuǎn)的角度,x,y,z為旋轉(zhuǎn)軸。軸的值為0或1。
使用方法:
[object setRotate:30.0 X:1.0 Y:0.0 Z:0.0];// 繞x軸旋轉(zhuǎn)30度。
- (void)setRotateForRelative:(float)radians X:(float)x Y:(float)y Z:(float)z;
@property(nonatomic,assign)int tag;//設(shè)置對象的索引
Animation 動畫效果
- (void)moveTo:(float)time PosX:(float)x posY:(float)y posZ:(float)z finishBlock:(void(^)(void))block;
使用方法:
[object moveTo:時間 PosX:x posY:y posZ:z finishBlock:^{
// 做完動畫后的回調(diào)
}];
- (void)moveBy:(float)time PosX:(float)x posY:(float)y posZ:(float)z finishBlock:(void(^)(void))block;
- (void)scaleTo:(float)time scaleX:(float)x scaleY:(float)y scaleZ:(float)z finishBlock:(void(^)(void))block;
- (void)scaleBy:(float)time scaleX:(float)x scaleY:(float)y scaleZ:(float)z finishBlock:(void(^)(void))block;
- (void)rotateTo:(float)time radians:(float)radians rotateX:(float)x roteateY:(float)y rotateZ:(float)z finishBlock:(void(^)(void))block;
/**
*三次方貝塞爾軌跡動畫
* @param pointEnd終點(diǎn)
* @param point1控制點(diǎn)1
* @param point2控制點(diǎn)2
* @param pointStart默認(rèn)起始點(diǎn)為對象當(dāng)前處的position
*/
- (void)bezierTo:(float)time PointEnd:(Point3D)pointEnd ControlPoint1:(Point3D)point1 ControlPoint2:(Point3D)point2 finishBlock:(void(^)(void))block;
使用方法:
Point3D pointEnd;
pointEnd.x=-10.0;
pointEnd.y=-15.0;
pointEnd.z= -15.0;
Point3D point1;
point1.x=8.0;
point1.y= -5.0;
point1.z= -15.0;
Point3D pointEnd1;
pointEnd1.x=0.0;
pointEnd1.y=0.0;
pointEnd1.z=-15.0;
[object bezierTo:time PointEnd:pointEnd ControlPoint1:point1 finishBlock:^{
// 做完動畫后的回調(diào)
}];
/**
*二次方貝塞爾軌跡動畫
* @param pointEnd終點(diǎn)
* @param point1控制點(diǎn)1
* @param pointStart默認(rèn)起始點(diǎn)為對象當(dāng)前處的position
*/
- (void)bezierTo:(float)time PointEnd:(Point3D)pointEnd ControlPoint1:(Point3D)point1 finishBlock:(void(^)(void))block;
使用方法:
Point3D pointEnd;
pointEnd.x=-10.0;
pointEnd.y=-15.0;
pointEnd.z= -15.0;
Point3D point1;
point1.x=8.0;
point1.y= -5.0;
point1.z= -15.0;
Point3D point2;
point2.x= -10.0;
point2.y= -10.0;
point2.z= -2.0;
Point3D pointEnd1;
pointEnd1.x=0.0;
pointEnd1.y=0.0;
pointEnd1.z=-15.0;
[object bezierTo:time PointEnd:pointEnd ControlPoint1:point1 finishBlock:^{
// 做完動畫后的回調(diào)
}];
ANTRenderObject
ANTRenderObject基本的接口方法如下:
在ANTRenderObject可以設(shè)置圖像的filter。
typedef NS_ENUM(NSInteger, ANTFilterMode) {
ANTVR_NORMAL, // 普通
ANTVR_LUMINANCE, // 像素色值亮度平均,圖像黑白
ANTVR_PIXELATE, // 馬賽克
ANTVR_EXPOSURE, // 曝光
ANTVR_DISCRETIZE, // 離散
ANTVR_BLUR, // 模糊
ANTVR_BILATERAL, // 雙邊模糊
ANTVR_HUE, // 飽和度
ANTVR_POLKADOT, // 像素圓點(diǎn)花樣
ANTVR_GAMMA, // 伽馬線
ANTVR_GLASSSPHERE, // 水晶球效果
ANTVR_CROSSHATCH, // 法線交叉線
};
#pragma mark - ANTVideoFilter property
// ANTVR_PIXELATE 模式
@property(nonatomic, assign)float particles;
// ANTVR_BLUR 模式
@property(nonatomic, assign)float radius;
// ANTVR_HUE 模式
@property(nonatomic ,assign)float hueAdjust;
// ANTVR_POLKADOT 模式
@property(nonatomic ,assign)float fractionalWidthOfPixel;
@property(nonatomic ,assign)float aspectRatio;
@property(nonatomic ,assign)float dotScaling;
// ANTVR_CROSSHATCH 模式
@property(nonatomic, assign)float crossHatchSpacing;
@property(nonatomic, assign)float lineWidth;
// ANTVR_EXPOSURE 模式
@property(nonatomic ,assign)float exposure;
// ANTVR_GAMMA 模式 (0.0 ~ <1.0 變亮 && >1.0 變暗)
@property(nonatomic ,assign)float gamma;
// ANTVR_GLASSSPHERE 模式
@property(nonatomic ,assign)float refractiveIndex;
// 渲染模型
typedef NS_ENUM(NSInteger, ANTRenderModel) {
ANTVR_2D, // 2d
ANTVR_SPHERE, // 全景
ANTVR_STEREO_SPHERE_LEFT_RIGHT, // 立體全景 - 左右
ANTVR_STEREO_SPHERE_UP_DOWN, // 立體全景 - 上下
ANTVR_PLANE, // 平面
ANTVR_STEREO_PLANE_LEFT_RIGHT, // 立體平面 - 左右
ANTVR_STEREO_PLANE_UP_DOWN, // 立體平面 - 上下
ANTVR_FISHSPHERE_HIGH, // 960 * 2560
ANTVR_FISHSPHERE_RETINA_HIGH, // 1520 * 2688
ANTVR_FISHSPHERE_MEDIUM, // 960 * 1920
ANTVR_FISHSPHERE_RETINA_MEDIUM, // 1080 * 1920
};