深入浅出ARKit
来源:互联网 发布:windows找不到cdm 编辑:程序博客网 时间:2024/05/20 05:08
OpenGL中描述几何图形的方法是用顶点(vertice)和指号(indice), 在SceneKit中也完全一样.
SCNGeometrySource
SCNGeometrySource 在SceneKit中就是顶点的集合. 这些点用来构成一个几何图形. 下面的代码就创建了一个SCNGeometrySource对象,包含有2个顶点, 可以用来绘制一条直线.
let vertice1 = SCNVector3(x1, y1, z1)
let vertice2 = SCNVector3(x2, y2, z2)
let source = SCNGeometrySource(vertices: [vertice1, vertice2])
SCNGeometryElement
SCNGeometryElement 在SceneKit中用来描述如何把SCNGeometrySource中的顶点构成基本的几何图形. SCNGeometryPrimitiveType定义了在SceneKit所支持的基本几何图形的种类, 跟OpenGL很相似, 一共有4种:
case triangles // 三角形, 每个三角形用SCNGeometrySource的三个顶点来描述
case triangleStrip // 三角形, 跟triangles不同的是, 第一个三角形需要3个顶点来描述, 以后每个三角形都用一个新的顶点加上前面相邻的三角形两个相邻的顶点描述
case line // 线段, 用二个顶点描述
case point // 点, 用一个顶点描述
下面的代码可以用来绘制一个三角形
let vertice1 = SCNVector3(x1, y1, z1)
let vertice2 = SCNVector3(x2, y2, z2)
let vertice3 = SCNVector3(x3, y3, z3)
let source = SCNGeometrySource(vertices: [vertice1, vertice2, vertice3])
let indices = [0, 1, 2]
let element = SCNGeometryElement(indices: indices, primitiveType: .triangles)
SCNGeometry
SCNGeometry 描述了SceneKit 可以渲染的几何形状, 它可以由SCNGeometrySource和SCNGeometryElement来构造, 一个SCNGeometry 可以包含多个SCNGeometrySource和SCNGeometryElement对象. 除了顶点(vertice)和指号(indice)之外, SCNGeometry 还可以通过SCNMaterial定义几何形状表面的颜色或者纹理, SCNLight 定义光照效果, SCNProgram 设计OpenGL或者Metal着色语言等等, 下面代码来创建了一个三角形的几何体:
let vertice1 = SCNVector3(x1, y1, z1)
let vertice2 = SCNVector3(x2, y2, z2)
let vertice3 = SCNVector3(x3, y3, z3)
let source = SCNGeometrySource(vertices: [vertice1, vertice2, vertice3])
let indices = [0, 1, 2]
let element = SCNGeometryElement(indices: indices, primitiveType: .triangles)
let geometry = SCNGeometry(sources:[source], elements: [element])
三角形虽然是最基本的几何形状, 但是很多三角形组合, 可以构成复杂的立体图形, 下面的茶壶就是由多个三角形构成的。
Reference
- https://developer.apple.com/documentation/scenekit
- https://developer.apple.com/documentation/arkit
- 深入浅出 ARKit
- 深入浅出ARKit
- ARKit
- ARKit
- ARKit 初探
- ARkit开发
- ARKit常见问题
- ARKit体验
- ARKit-简介
- ARKit 简介
- ARKit作画
- ARKit 初试
- ARkit简介
- iOS ARKit是什么。ARKit介绍。ARKit类简介。
- IOS ARKit开发文档
- ARKit教程推荐
- 苹果-iOS-ARKit
- ARKit & OpenGL ES
- poj 1741 点分治
- 天气预报实时显示系统设计
- F
- 【HDU-2037】 今年暑假不AC
- Jackson常用方法以及jacksonUtil工具类和回顾JSON数据格式回顾
- 深入浅出ARKit
- 访问修饰符protected
- MIT《计算机科学数学》Chaper02-The Well Ordering Principle
- 在beeline中插入数据是提示权限不足
- react-native-vector-icons的使用
- 25年、博士、C\/C++程序员的告白:多年来代码依然存在bug
- sockaddr_in结构体详解
- lnmp下的mysql
- 初始Spring