美文网首页全景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

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