iOS原生3D渲染--SceneKit框架学习笔记

创建SCNView,SCNScene

SceneKit可以创建一个view用来观察场景,在view的scene子对象里面设置SCNScene。

_scnView=[SCNView new];
 _scnView.frame=CGRectMake(130, 10, 300, 300);
_scnView.allowsCameraControl=true;
 _scnView.showsStatistics=true;
 _scnView.autoenablesDefaultLighting=true;
 [self.view addSubview:_scnView];
 _scnView.delegate=self;
 _scnView.playing=true;
 
 SCNScene *scene=[SCNScene new];
 _scnView.scene=scene;

创建节点并设置节点的相机

SceneKit的相机不是单独的一个对象,而是在SCNNode下有一个camera对象,设置这个对象即可。

SCNNode *cameraNode=[SCNNode new];
cameraNode.camera=[SCNCamera new];
cameraNode.camera.automaticallyAdjustsZRange = YES;

//设置节点的相对坐标,这里是直接放到rootNode下,所以也是世界坐标
cameraNode.position=SCNVector3Make(0, 10, 0);

//设置节点的旋转,这里绕自身的x轴逆时针旋转了90度,SceneKit是右手坐标系,这里都是用弧度
cameraNode.eulerAngles=SCNVector3Make(-3.1415/2, 0, 0);
[scene.rootNode addChildNode:cameraNode];

创建物体

SceneKit自带圆锥体,圆柱体,正方体(单词是用Box而不是Unity的Cube),平面等。这里用一个平面来示例。

//创建一个几何体
SCNGeometry *geometry=[SCNPlane planeWithWidth:17 height:17];

//设置纹理,这个contents不仅可以设置颜色,也可以直接设置UIImage
geometry.firstMaterial.diffuse.contents=[UIColor blueColor];
//geometry.firstMaterial.diffuse.contents=[camera getUIImage];

//用geometry生成一个节点并设置相应属性
SCNNode *nodePlane=[SCNNode nodeWithGeometry:geometry];
nodePlane.position=SCNVector3Make(0, -5, 0);
nodePlane.eulerAngles=SCNVector3Make(-3.1415/2, 0, 0);
[scene.rootNode addChildNode:nodePlane];

代替Unity的update的renderer渲染刷新函数

Unity里面是用update函数,SceneKit则是用renderer方法,设置代理< SCNSceneRendererDelegate >就可以重写这个函数。

-(void) renderer:(id<SCNSceneRenderer>)renderer updateAtTime:(NSTimeInterval)time
{
    //可以在这里面做想做的事情,time参数我没用过,猜测应该是一个时间戳
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值