环境:xcode9、iOS11以上
设备:A9以上处理器iOS设备
1、创建项目:
注意:
2、创建场景:
SCNScene *scene = [SCNScene scene];
self.sceneView.scene = scene;
3、创建模型:
SCNBox *box = [SCNBox boxWithWidth:0.1 height:0.1 length:0.1 chamferRadius:0];
//此处可以创建多种形式的模型,也可以像示例那样加载 3D模型(obj/scn/dae),此处仅以几何模型为例。
4、创建节点并设置节点位置:
//创建节点
SCNNode *node = [SCNNode node];
//设置节点位置
node.position = SCNVector3Make(0, 0, -0.3);
5、将模型设置为节点几何
//将场景节点几何设置为创建的box
scene.rootNode.geometry = box;
6、渲染模型
//模型渲染,将模型渲染成白色
SCNMaterial *material = [SCNMaterial material];
material.diffuse.contents = [UIColor whiteColor];
box.materials = @[material];
效果图如下:
效果图1
但是这是不是太不好看了呢?我们可以尝试下把图片放到模型上吗?
7、将图片渲染到模型:
我们先尝试将一张图片渲染上去
material.diffuse.contents = [UIImage imageNamed:@"不约.png"];
效果图2
我们发现渲染模型那里渲染器的设置是一个数组,那么我们尝试创建多个渲染器添加进去试试:
SCNMaterial *material = [SCNMaterial material];
material.diffuse.contents = [UIImage imageNamed:@"不约.png"];
SCNMaterial *material1 = [SCNMaterial material];
material1.diffuse.contents = [UIImage imageNamed:@"哎没人约.png"];
SCNMaterial *material2 = [SCNMaterial material];
material2.diffuse.contents = [UIImage imageNamed:@"爱你们哟.png"];
SCNMaterial *material3 = [SCNMaterial material];
material3.diffuse.contents = [UIImage imageNamed:@"不要在背后说我帅.png"];
SCNMaterial *material4 = [SCNMaterial material];
material4.diffuse.contents = [UIImage imageNamed:@"好好当狗.png"];
SCNMaterial *material5 = [SCNMaterial material];
material5.diffuse.contents = [UIImage imageNamed:@"姐不需要男票.png"];
box.materials = @[material,material1,material2,material3,material4,material5];
效果图3
效果图4
结果发现六张图都渲染到了正方体的六个面,有兴趣的还可以尝试下GIF图的渲染,跟图片时一样的,此处就不做演示了。
8、渲染视频呢?可以吗?接下来我们就尝试下渲染视频:操作类似于渲染图片
NSURL *url = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@",[[NSBundle mainBundle] pathForResource:@"柳州IP宣传片_15秒.mp4" ofType:nil]]];
AVPlayerItem *playItem = [AVPlayerItem playerItemWithURL:url];
AVPlayer *player = [AVPlayer playerWithPlayerItem:playItem];
[player play];
material.diffuse.contents = player;
效果图5
9、此外,还可以创建除了SCNBox以外的其他几何模型,常见的几何模型有:SCNText(文字)、SCNBox(盒子)、SCNSphere(球体)、SCNPlane(平面)、SCNPyramid(锥形)、SCNCylinder(圆柱)、SCNCone(圆锥)、SCNTube(管道)、SCNCapsule(胶囊)、SCNTorus(圆环)、SCNFloor(地板)等,有兴趣的可以尝试一下。
示例图
到这里我们第一个简单的ARKit体验就完成了,是不是很好玩呢?还有更多更好玩的东西,继续学习吧,哈哈哈