作家
登录

ARKit & OpenGL ES - ARKit 原理及实现

作者: 来源: 2017-07-04 15:18:20 阅读 我要评论

透视投影矩阵

在ARFrame可以获取衬着须要的纹理和摄像机矩阵,除了这些,和真实摄像头匹配的透视投影矩阵也是必须的。它可以或许让衬着出来的3D物体透视看起来很天然。

- (void)session:(ARSession *)session cameraDidChangeTrackingState:(ARCamera *)camera {    matrix_float4x4 projectionMatrix = [camera projectionMatrixWithViewportSize:self.viewport.size orientation:UIInterfaceOrientationPortrait zNear:0.1 zFar:1000];    GLKMatrix4 newWorldProjectionMatrix = GLKMatrix4Identity;    for (int col = 0; col < 4; ++col) {        for (int row = 0; row < 4; ++row) {           newWorldProjectionMatrix.m[col * 4 + row] = projectionMatrix.columns[col][row];        }    }    self.worldProjectionMatrix = newWorldProjectionMatrix;}

膳绫擎的代码演示了若何经由过程ARKit获取3D透视投影矩阵,有了透视投影矩阵和摄像机矩阵,就可以很便利的应用OpenGL衬着物体了。

- (void)glkView:(GLKView *)view drawInRect:(CGRect)rect {    [super glkView:view drawInRect:rect];    [self.objects enumerateObjectsUsingBlock:^(GLObject *obj, NSUInteger idx, BOOL *stop) {        [obj.context active];        [obj.context setUniform1f:@"elapsedTime" value:(GLfloat)self.elapsedTime];        [obj.context setUniformMatrix4fv:@"projectionMatrix" value:self.worldProjectionMatrix];        [obj.context setUniformMatrix4fv:@"cameraMatrix" value:self.cameraMatrix];        [obj.context setUniform3fv:@"lightDirection" value:self.lightDirection];        [obj draw:obj.context];    }];}

本文重要介绍了OpenGL ES衬着ARKit的根本思路,没有对OpenGL ES技巧细节描述太多。如不雅你有兴趣,可以直接clone Github上的代码深刻懂得。

【编辑推荐】

  1. 若何应用Xcode的Targets来治理开辟和临盆版本的构建
  2. 为什么 Linus Torvalds 偏爱x86而不是ARM架构
  3. 挨踢部落第一期:Spark离线分析维度
  4. Google要逆天!Google Wear 2.0 最新离线AI技巧解析
  5. 我的深度进修开辟情况详解:TensorFlow + Docker + PyCharm等,你的呢?
【义务编辑:林师授 TEL:(010)68476606】

  推荐阅读

  手动测试无法被取代的13个重要理由

【51CTO.com快译】 有些开辟团队十分推许主动化测试,弗成否定,主动化测试在回归测试和检查冗余组件方面不掉>>>详细阅读


本文标题:ARKit & OpenGL ES - ARKit 原理及实现

地址:http://www.17bianji.com/lsqh/36017.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)