上篇文章介绍了所有对象的基类ANTBaseObject和ANTRenderObject,在本篇文章中,将开始进行实战操作。
在操作之前还是提一下上篇提到的渲染模型总类,如下:
本章节之介绍其中常用的渲染模型(全景、平面),其余的渲染模型自己看提供的demo使用。
// 渲染模型
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
};
首先实例化对象:
// 创建全景360度图片
ANTImageView *object = [[ANTImageView alloc] initWithMode:ANTVR_SPHERE];
[object setupTextureWithImage:[UIImage imageNamed:@"test0.jpg"]];
[self.antLibrary addSubObject:object];
这样就将全景图添加到场景中了。
注:在全景/蚁视模式下,不需要设置对象的position,因为摄像机的位置正好在(0.0,0.0,0.0)的位置。
添加图片的方法多种方式 ,可以根据情况选择:(可以添加网络图片,左右两张图片等等)
/**
* 设置图片纹理 图片名
* @param imageName 图片image
*/
- (void)setupTextureWithImage:(UIImage *)imageName;
/**
* 设置图片纹理 网络下载
* @param url 网络地址/自动缓存
*/
- (void)setupTextureWithUrl:(NSString *)fileUrl;
/**
* 设置图片纹理 图片名
* @param color 根据图片颜色生成纹理
* @param frameSize 生成图片的尺寸
*/
- (void)setupTextureWithColor:(UIColor *)color Rect:(CGRect)frameSize;
/**
* 设置左右屏幕图片纹理
*/
- (void)setTextureWithLeftImage:(UIImage *)LeftImage RightImage:(UIImage *)rightImage;
- (void)setTextureWithLeftUrl:(NSString *)leftUrl RightUrl:(NSString *)rightUrl;
如果要对对象设置坐标,或者旋转角度,或缩放系数:
[object setPosition:0.0 Y:0.0 Z:-1.0];
[object setScale:1.0 Y:1.0 Z:1.0];
[object setRotate:-90 X:0.0 Y:1.0 Z:0.0];
// 创建平面图片
ANTImageView *object = [[ANTImageView alloc] initWithMode:ANTVR_PLANE];
[object setupTextureWithImage:[UIImage imageNamed:@"test1.jpg"]];
[object setObjectRect:16.0 Height:9.0]; // 设置图像的宽高比,默认为2.0,2.0
[self.antLibrary addSubObject:object];
[object setPosition:0.0 Y:0.0 Z:-15.0];
这样就简单的实现了加载图到场景中。若要开启焦点拾取对象的功能,则需满足两个条件:
1、[self.antlibrary setFocusPicking:YES];
2、开启对象自身的监听block;
[object willSelectImageViewCallBack:^(ANTImageView *imgv) {
// 焦点刚拾取到对象边缘
}];
[object didSelectImageViewCallBack:^(ANTImageView *imgv) {
// 焦点已经选中对象,进度圈走完
}];
[object didLeaveImageViewCallBack:^(ANTImageView *imgv) {
// 焦点离开对象边缘
}];
关于ANTImageView的基本动画我就不介绍了,使用方法在上一篇章中已经涉及到了。
ANTImageView的最基本的使用大体上就是这些,其他的一些的高级效果,如剪裁、变形、图像的各种滤波效果就不再这一一介绍了,具体使用方法看我提供的demo。
使用ANTImageView这个对象就可以轻松的布局3D空间中的UI了。放上一张之前布局的一张UI空间图: