版本记录
版本号 | 时间 |
---|---|
V1.0 | 2018.02.06 |
前言
Model I/O框架使用集成了
MetalKit
,GLKit
和SceneKit
的通用基础结构导入,导出和操作3D模型。接下来几篇我们就一起看一下这个框架。
Overview
下面先看一下该框架的基本信息。
Model I/O
框架提供了3D模型资源和相关资源的系统级理解。 您可以使用此框架从常用创作工具和游戏引擎支持的各种行业标准文件格式导入和导出资产。 您还可以使用Model I / O来生成或处理模型和纹理数据,例如创建细分曲面,烘焙环境遮挡纹理或生成光探针。 Model I / O可以与MetalKit,GLKit和SceneKit框架共享数据缓冲区,以帮助您有效地加载,处理和渲染3D资源。
下面看一下该框架的基本结构。
Model I/O Features - Model I/O特点
Importing and exporting 3D assets.导入和导出3D资产。 MDLAsset对象表示描述3D场景元素(MDLMesh,MDLLight和 MDLCamera对象)的对象集合。使用
MDLAsset
类从文件中加载这些对象,或创建一个3D对象集合以导出到文件。Working with 3D model data.使用3D模型数据。使用MDLVertexDescriptor类检查或重新排列网格的顶点和索引数据格式。使用采用 MDLMeshBuffer和MDLMeshBufferAllocator协议的类来最小化网格的顶点和索引数据在加载,处理和渲染GPU之间进行复制和转换的次数。 MetalKit和GLKit框架提供了这样的类,参见MetalKit和GLKit。
Processing and generating asset data.处理和生成资源数据。使用MDLMesh方法(例如,addNormalsWithAttributeNamed:creaseThreshold:方法)来处理模型,生成其他数据(例如曲面法线,切线基向量,环境遮挡或光照贴图)以用于渲染。使用MDLTexture类及其子类生成程序纹理,如噪音,法线贴图和逼真的天空盒。使用MDLLightProbe类生成照明基于场景内容的光源。使用MDLVoxelArray类来处理模型的体积描述。
Describing realistic rendering parameters.描述逼真的渲染参数。 MDLPhysicallyPlausibleScatteringFunction类(用于描述与网格关联的MDLMaterial对象的表面外观的多种方法之一)定义了在流行
feature films
和高端游戏引擎中使用相同的基于物理的着色系统的表面预期渲染。 MDLPhotometricLight和 MDLPhysicallyPlausibleLight类描述了用于渲染的照明属性,而MDLCamera类也支持基于物理的渲染参数。
Topics
1. 3D Asset Basics
资源是代表3D场景元素的对象的集合,通常从几种行业标准文件格式中加载。 使用这些类来加载资源并检查或操纵3D对象或网格。
-
MDLAsset
- 3D对象和相关信息(如变换层次结构,网格,相机和灯光)的索引容器。
-
MDLObject
- 作为3D资产的一部分的对象的基类,包括网格,相机和灯光。
-
MDLTransform
- 描述3D对象的局部坐标空间变换。
-
MDLMesh
- 用于渲染3D对象的顶点缓冲区数据的容器。
-
MDLSubmesh
- 索引缓冲区数据的容器,以及用于渲染全部或部分3D对象的材质信息。
-
MDLSubmeshTopology
- 描述子网格的索引缓冲区数据如何排列以及如何使用这种排列来生成子网格的预期3D形状。
-
MDLNamed
- Model I / O对象的公共接口,暴露人类可读的名字。
2. Managing Mesh Data
网格数据——顶点和索引缓冲区——是3D对象的主要内容。 这些类型为检查或重新排列资产数据的内容和格式提供了丰富的词汇表,以及最小化网格的顶点和索引数据在GPU上加载,处理和渲染与 MetalKit或GLKit之间复制和转换的次数 。
-
MDLMeshBuffer
- 用于管理加载,处理和渲染网格中使用的顶点和索引数据的存储的通用接口。
-
MDLMeshBufferAllocator
- 用于管理数据缓冲区分配的通用接口,用于加载,处理和渲染网格。
-
MDLMeshBufferData
- 内存缓冲区,用于存储Model I / O网格的顶点或索引数据。
-
MDLMeshBufferDataAllocator
- 使用数据对象从主内存分配的基本分配器实现。
-
MDLMeshBufferMap
- 管理对用于Model I / O网格的数据存储的内存缓冲区的访问的对象。
-
MDLMeshBufferZone
- 用于分配相关网格数据缓冲区的逻辑内存池的通用接口。
-
MDLMeshBufferZoneDefault
- MDLMeshBufferZone协议的标准实现。
-
MDLVertexAttribute
- 网格对象中单个顶点属性的每个顶点数据格式的描述。
-
MDLVertexAttributeData
- 提供对网格的特定顶点属性的顶点数据的便捷访问的对象。
-
MDLVertexBufferLayout
-
MDLVertexBufferLayout
对象描述MDLMesh对象中的顶点缓冲区的布局信息。 顶点层对象,顶点属性对象和附加信息的集合形成 MDLVertexDescriptor对象,该对象完全描述网格的顶点缓冲区的布局。
-
-
MDLVertexDescriptor
- 描述与网格关联的顶点数据缓冲区的结构,格式和布局。
3. Materials
这些类提供了几种不同的方法来描述渲染3D对象的预期表面外观。
-
MDLMaterial
- 一起描述用于渲染3D对象的预期表面外观的材料属性的集合。
-
MDLMaterialProperty
- 材料的渲染参数的一个特定方面的定义。
MDLMaterialPropertyConnection
MDLMaterialPropertyGraph
MDLMaterialPropertyNode
-
MDLScatteringFunction
- 描述材质的基本着色模型的一组材质属性,以及用于更复杂着色模型的超类。
-
MDLPhysicallyPlausibleScatteringFunction
- 一组材料属性,用于描述材料的物理实际着色模型。
4. Textures
使用这些类访问与资产相关联的纹理,或者程序化地生成纹理内容。
-
MDLTexture
- 用于渲染材质表面外观的纹理数据源。
-
MDLCheckerboardTexture
- 一个texel数据生成器,用两种指定的颜色创建一个棋盘图案。
-
MDLColorSwatchTexture
- 一个texel数据生成器,用于在两个指定的颜色之间创建一个渐变。
-
MDLNoiseTexture
- 一个texel数据的生成器,创建一个随机噪声的领域。
-
MDLNormalMapTexture
- 从所提供的纹理计算法线贴图的texel数据生成器。
-
MDLSkyCubeTexture
- 一个texel数据生成器,使用对阳光照射的天空的物理逼真模拟创建立方体纹理。
-
MDLURLTexture
- 从中加载纹理数据的URL的轻量级引用。
-
MDLTextureFilter
- 描述从纹理采样时使用的渲染器的过滤模式。
-
MDLTextureSampler
- 将纹理数据源与采样参数匹配用于渲染纹理的对象。
5. Lights
这些类提供了几种不同的方法来描述光源在渲染3D场景中的使用。
-
MDLLight
- 描述场景中光源的对象的抽象超类。
-
MDLAreaLight
- 从特定形状的区域照亮3D场景的光源。
-
MDLLightProbe
- 根据其照明的颜色和强度在各个方向上的变化描述的光源。
-
MDLLightProbeIrradianceDataSource
- 采用此协议提供信息,用于在场景周围自动放置光探针。
-
MDLPhotometricLight
- 光源的形状,方向和强度由光度分布确定。
-
MDLPhysicallyPlausibleLight
- 用于基于真实世界着色模型的光源。
6. Cameras
使用这些类来描述或访问导入的资产中关于3D场景呈现的视点的信息。
-
MDLCamera
- 渲染3D场景的视点,以及描述渲染的预期外观的一组参数。
-
MDLStereoscopicCamera
- 用于渲染3D场景的立体渲染的视点。
7. Extensible Asset Format Support
这些类和协议支持广泛不同的标准资产文件格式的Model I / O支持,以及创建包含标准和自定义元素的新资产格式。
-
MDLComponent
- Model I / O中支持可扩展文件格式的基本协议。
-
MDLObjectContainer
- 处理3D资产中的对象层次关系的默认实现。
-
MDLObjectContainerComponent
- 可以充当对象层次中的容器的类的通用接口。
-
MDLTransformComponent
- 管理3D对象局部坐标空间变换的类的通用接口
8. Volumetric Representations
体素提供了一种处理3D对象的替代方式,这对于建模特殊效果,准备物理制造设计以及执行建设性立体几何操作等应用程序可能非常有用。
- MDLVoxelArray
- 三维对象的实体体积模型,作为体素或立方体单位的集合。
9. Reference
Model I/O Data Types
Model I/O Structures
Model I/O Enumerations
Model I/O Constants
10. Classes
MDLAnimatedMatrix4x4
MDLAnimatedQuaternionArray
MDLAnimatedScalar
MDLAnimatedScalarArray
MDLAnimatedValue
MDLAnimatedVector2
MDLAnimatedVector3
MDLAnimatedVector3Array
MDLAnimatedVector4
MDLAnimationBindComponent
MDLBundleAssetResolver
MDLMatrix4x4Array
MDLPackedJointAnimation
MDLPathAssetResolver
MDLRelativeAssetResolver
MDLSkeleton
MDLTransformMatrixOp
MDLTransformRotateOp
MDLTransformRotateXOp
MDLTransformRotateYOp
MDLTransformRotateZOp
MDLTransformScaleOp
MDLTransformStack
MDLTransformTranslateOp
11. Protocols
MDLAssetResolver
MDLJointAnimation
MDLTransformOp
后记
本篇已结束,后面更精彩~~~