美文网首页全景VR播放器ANTVRSDK- ios 使用详解
2、所有对象的基类 - ANTBaseObject/ANTRen

2、所有对象的基类 - ANTBaseObject/ANTRen

作者: ARVRSchool | 来源:发表于2016-10-28 19:26 被阅读32次

在介绍具体的使用对象之前,大家得先了解ANTBaseObject和ANTRenderObject这两个类,因为所有的对象都继承这两类。

架构图:

Paste_Image.png

从上图可以知道,目前基础的对象类都是基于这两个基类实现的,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
};

相关文章

  • 2、所有对象的基类 - ANTBaseObject/ANTRen

    在介绍具体的使用对象之前,大家得先了解ANTBaseObject和ANTRenderObject这两个类,因为所有...

  • 3、如何布局空间UI - ANTImageView

    上篇文章介绍了所有对象的基类ANTBaseObject和ANTRenderObject,在本篇文章中,将开始进行实...

  • java中基类指针只向派生类对象的四种方法

    总结: 1.基类指针指向基类对象:简单,只需通过基类指针简单的调用基类的功能。 2.派生类指针只想基类对象:同上。...

  • 2019-04-25 java.lang.Object

    Object 对象 所有类的基类 java是单根继承语言,Object就是所有类的基类或根类,所有的类都继承自Ob...

  • Object类

    1.所有对象的基类 Object 是类层次结构的根类。每个类都使用 Object 作为超类。所有对象(包括数组)都...

  • RunTime底层原理

    1.isaisa:实例对象的isa指向类对象,类对象的isa指向元类对象。元类对象isa执行基类元类对象。2.方法...

  • 关于虚函数

    (1)派生类对象直接向基类赋值,赋值效果,基类数据成员和派生类中数据成员的值相同;(2)派生类对象可以初始化基类对...

  • 装饰者模式

    类图 所有原始类与装饰者类都必须实现共同基类Beverage 所有装饰者类都持有另外一个属于基类类型的对象引用(这...

  • egret-显示对象和显示容器

    DisplayObject:显示对象基类,所有显示对象都继承此类 当前对象 addEventListener t...

  • java.lang.ref包

    一、引用基类 Reference是所有引用对象的基类,引用对象的实现都是与GC操作相关的。 二、引用分类 1、强引...

网友评论

本文标题:2、所有对象的基类 - ANTBaseObject/ANTRen

本文链接:https://www.haomeiwen.com/subject/qwueuttx.html