在介绍具体的使用对象之前,大家得先了解ANTBaseObject和ANTRenderObject这两个类,因为所有的对象都继承这两类。
架构图:
从上图可以知道,目前基础的对象类都是基于这两个基类实现的,ANTBaseObject类主要是做一些基础的属性设置,ANTRenderObject类主要是做一些渲染效果和渲染模型的设置。
(接下来文章中使用方法的object,可以是:ANTGif, ANTImageView, ANTVideo, ANTObjModel, ANTPoint, ANTPrograssBar任意一个);
ANTBaseObject
ANTBaseObject基本的接口方法如下:
- (void)setPosition:(float)x Y:(float)y Z:(float)z;
设置对象在空间场景中的坐标值,绝对坐标。(记住,摄像机的位置在(0.0,0.0,0.0)的位置,朝向是(0,0,-1), 所有对象创建后初始位置处于(0.0,0.0,0.0)的位置,所以当设置的对象是Mode为ANT_Plane的话,没有设置坐标的话,摄像机和物体重合了,所以当为平面对象的话,一定要设置坐标)。
使用方法:
[object setPosition:0.0 Y:0,0 Z:-2.0];
- (void)setPositionForRelative:(float)x Y:(float)y Z:(float)z;
设置对象在空间场景中的相对坐标值。假如对象的坐标为(0.0,1.0,2.0),设置[object setPositionForRelative:1.0 Y:1.0 Z:1.0 ]后,则对象的坐标为(1.0,2.0,3.0).
- (void)setScale:(float)x Y:(float)y Z:(float)z;
设置对象在空间场景中的缩放系数,默认为(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;
设置对象在空间场景中的旋转角度,radians为旋转的角度,x,y,z为旋转轴。轴的值为0或1。
使用方法:
[object setRotate:30.0 X:1.0 Y:0.0 Z:0.0];// 绕x轴旋转30度。
- (void)setRotateForRelative:(float)radians X:(float)x Y:(float)y Z:(float)z;
@property(nonatomic,assign)int tag;//设置对象的索引
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:^{
// 做完动画后的回调
}];
- (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终点
* @param point1控制点1
* @param point2控制点2
* @param pointStart默认起始点为对象当前处的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:^{
// 做完动画后的回调
}];
/**
*二次方贝塞尔轨迹动画
* @param pointEnd终点
* @param point1控制点1
* @param pointStart默认起始点为对象当前处的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:^{
// 做完动画后的回调
}];
ANTRenderObject
ANTRenderObject基本的接口方法如下:
在ANTRenderObject可以设置图像的filter。
typedef NS_ENUM(NSInteger, ANTFilterMode) {
ANTVR_NORMAL, // 普通
ANTVR_LUMINANCE, // 像素色值亮度平均,图像黑白
ANTVR_PIXELATE, // 马赛克
ANTVR_EXPOSURE, // 曝光
ANTVR_DISCRETIZE, // 离散
ANTVR_BLUR, // 模糊
ANTVR_BILATERAL, // 双边模糊
ANTVR_HUE, // 饱和度
ANTVR_POLKADOT, // 像素圆点花样
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
};