【译】glTF教程:简单相机(十五)
2019-02-21
简单的相机
前几节展示了如何在glTF资产中表示带有几何对象的基本场景结构,以及如何对这些对象应用不同的材质。这还不包括应该用于渲染场景的视图配置信息。这种视图配置通常被描述为一个虚拟的“摄像机”,它包含在场景中的某个位置,并指向某个方向。
下面是一个简单、完整的glTF资产。它类似于已经显示的资产:它定义了一个简单的“场景”,其中包含“节点”对象,以及一个单独的几何对象,该对象以“网格”的形式给出,并附加到其中一个节点上。但该资产还包含两个camera
对象:
{
"scenes" : [
{
"nodes" : [ 0, 1, 2 ]
}
],
"nodes" : [
{
"rotation" : [ -0.383, 0.0, 0.0, 0.924 ],
"mesh" : 0
},
{
"translation" : [ 0.5, 0.5, 3.0 ],
"camera" : 0
},
{
"translation" : [ 0.5, 0.5, 3.0 ],
"camera" : 1
}
],
"cameras" : [
{
"type": "perspective",
"perspective": {
"aspectRatio": 1.0,
"yfov": 0.7,
"zfar": 100,
"znear": 0.01
}
},
{
"type": "orthographic",
"orthographic": {
"xmag": 1.0,
"ymag": 1.0,
"zfar": 100,
"znear": 0.01
}
}
],
"meshes" : [
{
"primitives" : [ {
"attributes" : {
"POSITION" : 1
},
"indices" : 0
} ]
}
],
"buffers" : [
{
"uri" : "data:application/octet-stream;base64,AAABAAIAAQADAAIAAAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAACAPwAAgD8AAAAA",
"byteLength" : 60
}
],
"bufferViews" : [
{
"buffer" : 0,
"byteOffset" : 0,
"byteLength" : 12,
"target" : 34963
},
{
"buffer" : 0,
"byteOffset" : 12,
"byteLength" : 48,
"target" : 34962
}
],
"accessors" : [
{
"bufferView" : 0,
"byteOffset" : 0,
"componentType" : 5123,
"count" : 6,
"type" : "SCALAR",
"max" : [ 3 ],
"min" : [ 0 ]
},
{
"bufferView" : 1,
"byteOffset" : 0,
"componentType" : 5126,
"count" : 4,
"type" : "VEC3",
"max" : [ 1.0, 1.0, 0.0 ],
"min" : [ 0.0, 0.0, 0.0 ]
}
],
"asset" : {
"version" : "2.0"
}
}
该资产中的几何图形是一个简单的单元正方形。它围绕x轴旋转-45度,以强调不同相机的效果。图17a显示了用于呈现此资产的三个选项。第一个示例使用资产中的摄像机。最后一个例子展示了从一个外部的、用户定义的视角来看场景的样子。
相机的定义
该glTF资产的新顶级元素是’ camera ‘数组,其中包含camera
对象:
"cameras" : [
{
"type": "perspective",
"perspective": {
"aspectRatio": 1.0,
"yfov": 0.7,
"zfar": 100,
"znear": 0.01
}
},
{
"type": "orthographic",
"orthographic": {
"xmag": 1.0,
"ymag": 1.0,
"zfar": 100,
"znear": 0.01
}
}
],
当一个摄像机对象被定义时,它可能被附加到一个“节点”上。这是通过将摄像机的索引分配给节点的“camera”属性来实现的。在给定的例子中,场景图中添加了两个新节点,每个摄像头一个:
"nodes" : {
...
{
"translation" : [ 0.5, 0.5, 3.0 ],
"camera" : 0
},
{
"translation" : [ 0.5, 0.5, 3.0 ],
"camera" : 1
}
},
透视和正投影相机之间的区别和它们的属性,将相机附加到节点的效果,以及多个相机的管理将在相机一节中详细说明。