@@ -11,76 +11,151 @@ attribute accessors (with the implied values from range [0..count)); when indice
defined, the number of vertex indices to render is defined by count of accessor referred to by
indices. In either case, the number of vertex indices MUST be valid for the topology type used:
index 속성이 정의되지 않은 경우 렌더링할 정점 인덱스의 수는 속성 액세스 수(범위[0...count]의 암묵치 사용)에 의해 정의됩니다.index 속성이 정의되어 있는 경우 렌더링할 정점 인덱스의 수는 액세스 수에 의해 정의되거나 인덱스에 의해 참조됩니다. 두 경우 모두 사용할 토폴로지 유형에 대해 유효한 정점 인덱스의 수를 지정해야 합니다.
* For points, it MUST be non-zero.
* For line loops and line strips, it MUST be 2 or greater.
* For triangle strips and triangle fans, it MUST be 3 or greater.
* For lines, it MUST be divisible by 2 and non-zero.
* For triangles, it MUST be divisible by 3 and non-zero
* 점의 경우 0이 아니어야 합니다.
* 라인 루프 및 라인 스트립의 경우 2 이상이어야 합니다.
* 삼각형 스트립 및 삼각형 팬의 경우 3 이상이어야 합니다.
* 선의 경우 0이 아닌 2로 나눗셈할 수 있어야 합니다.
* 삼각형의 경우 0이 아닌 3으로 나눗셈할 수 있어야 합니다.
Topology types are defined as follows.
토폴로지 유형은 다음과 같이 정의됩니다.
* Points
Each vertex defines a single point primitive, according to the equation:
pi
= {vi}
* 포인트
각 꼭짓점은 다음 방정식에 따라 단일 점 프리미티브를 정의한다.
원주율
= {vi}
* Line Strips
One line primitive is defined by each vertex and the following vertex, according to the equation:
pi
= {vi
, vi+1}
* 라인 스트립
하나의 선 프리미티브는 방정식에 따라 각 정점과 다음 정점에 의해 정의됩니다.
원주율
={vi
, vi+1}
* Line Loops
Loops are the same as line strips except that a final segment is added from the final specified
vertex to the first vertex.
* 라인 루프
루프는 최종 지정된 정점에서 첫 번째 정점으로 최종 세그먼트가 추가된다는 점을 제외하고 선 스트립과 동일합니다.
* Lines
Each consecutive pair of vertices defines a single line primitive, according to the equation:
pi
= {v2i, v2i+1}
* 선
각 연속된 정점 쌍은 다음과 같은 방정식에 따라 단일 선 프리미티브를 정의한다.
원주율
= {v2i, v2i+1}
* Triangles
Each consecutive set of three vertices defines a single triangle primitive, according to the
equation:
pi
= {v3i, v3i+1, v3i+2}
* 삼각형
세 꼭짓점의 연속된 각각의 집합은 다음과 같이 단일 삼각형 원시를 정의한다.
방정식:
원주율
= {v3i, v3i+1, v3i+2}
* Triangle Strips
One triangle primitive is defined by each vertex and the two vertices that follow it, according to
the equation:
pi
= {vi
, vi+(1+i%2), vi+(2-i%2)}
* 삼각형 스트립
하나의 삼각형 원시는 다음과 같이 각 꼭짓점과 그것을 따르는 두 꼭짓점에 의해 정의된다.
방정식:
원주율
= {vi}
, vi+(1+i%2), vi+(2-i%2)}
* Triangle Fans
Triangle primitives are defined around a shared common vertex, according to the equation:
pi
= {vi+1, vi+2, v0}
* 삼각팬
삼각형 원초는 다음 방정식에 따라 공유된 공통 꼭짓점 주위에 정의된다:
원주율
= {vi+1, vi+2, v0}
Mesh geometry SHOULD NOT contain degenerate lines or triangles, i.e., lines or triangles that use
the same vertex more than once per topology primitive.
메시 지오메트리는 축퇴된 선이나 삼각형, 즉 위상 프리미티브당 두 번 이상 동일한 정점을 사용하는 선이나 삼각형을 포함하지 않아야 한다.
When positions are not specified, client implementations SHOULD skip primitive’s rendering
unless its positions are provided by other means (e.g., by an extension). This applies to both indexed and non-indexed geometry.
위치가 지정되지 않은 경우 클라이언트 구현체는 다른 방법(예: 확장)에 의해 위치가 제공되지 않는 한 프리미티브의 렌더링을 건너 뛰어야 한다. 이는 인덱싱된 지오메트리와 인덱싱되지 않은 지오메트리 모두에 적용됩니다.
When tangents are not specified, client implementations SHOULD calculate tangents using default
MikkTSpace algorithms with the specified vertex positions, normals, and texture coordinates
associated with the normal texture.
접선이 지정되지 않은 경우 클라이언트 구현체는 지정된 정점 위치, 법선 및 일반 텍스처와 관련된 텍스처 좌표를 사용하여 기본 MikkTSPACE 알고리즘을 사용하여 접선을 계산해야 한다.
When normals are not specified, client implementations MUST calculate flat normals and the
provided tangents (if present) MUST be ignored.
정규식이 지정되지 않은 경우 클라이언트 구현은 플랫 정규식을 계산해야 하며 제공된 접선(존재하는 경우)은 무시해야 합니다.
Vertices of the same triangle SHOULD have the same tangent.w value. When vertices of the same
triangle have different tangent.w values, its tangent space is considered undefined.
같은 삼각형의 꼭짓점은 tangent.w 값이 같아야 합니다. 동일한 삼각형의 꼭짓점이 tangent.w 값이 다를 경우 접선 공간은 정의되지 않은 것으로 간주됩니다.
The bitangent vectors MUST be computed by taking the cross product of the normal and tangent
XYZ vectors and multiplying it against the W component of the tangent: bitangent =
cross(normal.xyz, tangent.xyz) * tangent.w.
비트 탄젠트 벡터는 정규 XYZ 벡터와 접선 XYZ 벡터의 교차곱을 취하여 이를 접선의 W 성분에 곱하여 계산해야 합니다: 비트 탄젠트 = cross (normal.xyz, tangent.xyz) * 접선.w.
Morph targets are defined by extending the Mesh concept.
3.7.2.2. Morph 대상
Morph 대상은 Mesh 개념을 확장하여 정의됩니다.
A morph target is a morphable Mesh where the primitives' attributes are obtained by adding the
original attributes to a weighted sum of the target’s attributes.
모프 대상은 원래 속성을 대상 속성의 가중 합계에 추가하여 원시 요소의 속성을 얻는 모프 가능한 메시이다.
For instance, the morph target vertices POSITION for the primitive at index i are computed in this
way:
예를 들어, 인덱스 i에서의 프리미티브에 대한 모프 대상 정점의 위치는 다음과 같이 계산된다:
```
primitives[i].attributes.POSITION +
weights[0] * primitives[i].targets[0].POSITION +
...
...
@@ -92,28 +167,46 @@ Morph targets are specified via the targets property defined in the Mesh primiti
the targets array is a plain JSON object mapping a primitive attribute to an accessor containing
morph target displacement data (deltas).
Morph 대상은 Mesh 프리미티브에 정의된 대상 속성을 통해 지정됩니다. 대상 배열의 각 대상은 모프 대상 변위 데이터(델타)를 포함하는 접근자에 원시 속성을 매핑하는 일반 JSON 객체이다.
For each morph target attribute, an original attribute MUST be present in the mesh primitive.
각 모프 대상 속성에 대해 원래 속성이 메쉬 프리미티브에 있어야 합니다.
Attributes present in the base mesh primitive but not included in a given morph target MUST
retain their original values for the morph target.
기본 메시 원시에 있지만 주어진 모프 대상에 포함되지 않는 속성은 모프 대상에 대한 원래 값을 유지해야 한다.
Implementation Note
This allows skipping zero-filled accessors and implies that different morph targets
may contain different sets of attributes.
구현 참고
이를 통해 0으로 채워진 접근자를 건너뛸 수 있으며 서로 다른 모프 대상이 서로 다른 속성 집합을 포함할 수 있음을 의미합니다.
Client implementations SHOULD support at least three attributes — POSITION, NORMAL, and
TANGENT — for morphing. Client implementations MAY optionally support morphed TEXCOORD_n
and/or COLOR_n attributes.
클라이언트 구현은 모핑을 위해 적어도 세 가지 속성(위치, 정상 및 접선)을 지원해야 합니다. 클라이언트 구현체는 선택적으로 변형된 TEXCOORD_n 및/또는 COLOR_n 속성을 지원할 수 있다.
If morph targets contain application-specific semantics, their names MUST be prefixed with an
underscore (e.g., _TEMPERATURE) like the associated attribute semantics.
모프 대상이 응용 프로그램별 의미론을 포함하는 경우, 이름 앞에 관련 속성 의미론과 같은 밑줄(예: _TERMERATURE)을 붙여야 합니다.
All primitives MUST have the same number of morph targets in the same order.
모든 원시 요소는 동일한 순서로 동일한 수의 모프 대상을 가져야 합니다.
Accessor type and component type for each morphed attribute semantic property MUST follow the
table below. Note that the W component for handedness is omitted when targeting TANGENT data
since handedness cannot be displaced.
각 모핑된 속성 시맨틱 속성의 접근자 유형 및 구성요소 유형은 아래 표를 따라야 합니다. 손놀림은 변위할 수 없기 때문에 TANGT 데이터를 대상으로 할 때는 손놀림에 대한 W 성분이 생략된다는 점에 유의하십시오.
Name Accessor Type(s) Component Type(s) Description
POSITION VEC3 float XYZ vertex position
displacements
...
...
@@ -138,34 +231,53 @@ COLOR_n VEC3 float RGB or RGBA color
unsigned short
normalized
POSITION accessor MUST have its min and max properties defined.
위치 액세스 또는 최대 속성을 정의해야 합니다.
Displacements for POSITION, NORMAL, and TANGENT attributes MUST be applied before any
transformation matrices affecting the mesh vertices such as skinning or node transforms.
스키닝 또는 노드 변환과 같은 메시 정점에 영향을 미치는 변환 행렬 전에 위치, 정규 및 접선 속성의 변위를 적용해야 합니다.
When the base mesh primitive does not specify tangents, client implementations SHOULD calculate
tangents for each morph target using default MikkTSpace algorithms with the updated vertex
positions, normals, and texture coordinates associated with the normal texture.
기본 메쉬 프리미티브가 접선을 지정하지 않을 경우 클라이언트 구현은 일반 텍스처와 관련된 업데이트된 정점 위치, 법선 및 텍스처 좌표를 사용하여 기본 MikkTSPACE 알고리즘을 사용하여 각 모프 대상에 대한 접선을 계산해야 한다.
When the base mesh primitive does not specify normals, client implementations MUST calculate
flat normals for each morph target; the provided tangents and their displacements (if present)
MUST be ignored.
기본 메쉬 프리미티브가 법선을 지정하지 않을 때 클라이언트 구현체는 각 모프 대상에 대해 평면 법선을 계산해야 한다.
When COLOR_n deltas use an accessor of "VEC3" type, their alpha components MUST be assumed to
have a value of 0.0.
COLOR_n 델타가 "VEC3" 유형의 접근자를 사용할 때 알파 성분의 값은 0.0이라고 가정해야 한다.
After applying color deltas, all components of each COLOR_0 morphed accessor element MUST be
clamped to [0.0, 1.0] range.
색상 델타를 적용한 후에는 COLOR_0 형태의 각 액세스 요소의 모든 구성 요소를 [0.0, 1.0] 범위로 고정해야 합니다.
All morph target accessors MUST have the same count as the accessors of the original primitive.
모든 morph 대상 접근자는 원래 원시의 접근자와 동일한 개수를 가져야 합니다.
A mesh with morph targets MAY also define an optional mesh.weights property that stores the
default targets' weights. These weights MUST be used when node.weights is undefined. When
mesh.weights is undefined, the default targets' weights are zeros.
모프 타겟을 갖는 메시는 또한 선택적 메시를 정의할 수 있다.기본 대상의 가중치를 저장하는 가중치 속성입니다. 노드일 때 이 가중치를 사용해야 합니다.가중치가 정의되지 않았습니다. 메시 가중치가 정의되지 않은 경우 기본 대상의 가중치는 0입니다.
The following example extends the Mesh defined in the previous example to a morphable one by
adding two morph targets:
다음 예제에서는 두 개의 morph 대상을 추가하여 이전 예제에서 정의한 mesh를 morphable 대상으로 확장합니다.
```
{
"primitives": [
...
...
@@ -201,9 +313,13 @@ morphed attributes. This means that they SHOULD support eight morph targets when
target has one attribute, four morph targets where each morph target has two attributes, or two
morph targets where each morph target has three or four attributes.
모프 타겟의 수는 제한되지 않습니다. 클라이언트 구현은 최소 8개의 모핑된 속성을 지원해야 합니다. 즉, 각 모프 대상이 하나의 속성을 가질 때 8개의 모프 대상을 지원해야 하고, 각 모프 대상이 2개의 속성을 가질 때 4개의 모프 대상을 지원해야 한다.
For assets that contain a higher number of morphed attributes, client implementations MAY choose
to only use the eight attributes of the morph targets with the highest weights.
더 많은 수의 변형된 속성을 포함하는 자산의 경우 클라이언트 구현은 가중치가 가장 높은 변형 대상의 8개 속성만 사용하도록 선택할 수 있습니다.
Implementation Note
A significant number of authoring and client implementations associate names
...
...
@@ -212,38 +328,56 @@ way to specify names, most tools use an array of strings, mesh.extras.targetName
for this purpose. The targetNames array and all primitive targets arrays must have
the same length.
3.7.3. Skins
구현 참고
상당수의 저작 및 클라이언트 구현은 이름을 모프 대상과 연관시킨다. glTF 2.0 사양은 현재 이름을 지정하는 방법을 제공하지 않지만 대부분의 도구는 이 목적을 위해 문자열 배열인 mesh.extras.targetNames를 사용합니다. targetNames 배열과 모든 원시 대상 배열의 길이는 같아야 합니다.
3.7.3. Skins
3.7.3.1. Overview
glTF 2.0 meshes support Linear Blend Skinning via skin objects, joint hierarchies, and designated
vertex attributes.
3.7.3. 스킨
3.7.3.1. 개요
glTF 2.0 메시는 스킨 객체, 조인트 계층 및 지정된 정점 속성을 통해 선형 블렌드 스키닝을 지원합니다.
Skins are stored in the skins array of the asset. Each skin is defined by a REQUIRED joints property
that lists the indices of nodes used as joints to pose the skin and an OPTIONAL inverseBindMatrices
property that points to an accessor with inverse bind matrices data used to bring coordinates being
skinned into the same space as each joint.
스킨은 자산의 스킨 배열에 저장됩니다. 각 스킨은 스킨을 배치하기 위해 조인트로 사용되는 노드의 인덱스를 나열하는 필수 조인트 속성과 스킨화되는 좌표를 각 조인트와 동일한 공간으로 가져오는 데 사용되는 역 바인딩 행렬 데이터가 있는 액세스자를 가리키는 선택적 inverseBindMatrix 속성으로 정의됩니다.
The order of joints is defined by the skin.joints array and it MUST match the order of
inverseBindMatrices accessor elements (when the latter is present). The skeleton property (if
present) points to the node that is the common root of a joints hierarchy or to a direct or indirect
parent node of the common root.
관절의 순서는 피부에 의해 결정된다.inverseBindMatrix 액세스 요소가 있는 경우 inverseBindMatrix 액세스 요소의 순서와 일치해야 합니다. 스켈레톤 속성(존재하는 경우)은 조인트 계층의 공통 루트인 노드 또는 공통 루트의 직접 또는 간접 상위 노드를 가리킵니다.
Implementation Note
Although the skeleton property is not needed for computing skinning transforms,
it may be used to provide a specific “pivot point” for the skinned geometry.
구현 참고
스켈레톤 속성은 스키닝 변환을 계산하는 데 필요하지 않지만, 스킨된 기하학에 특정한 "피벗 포인트"를 제공하는 데 사용될 수 있다.
An accessor referenced by inverseBindMatrices MUST have floating-point components of "MAT4"
type. The number of elements of the accessor referenced by inverseBindMatrices MUST greater than
or equal to the number of joints elements. The fourth row of each matrix MUST be set to [0.0,
0.0, 0.0, 1.0].
inverseBindMatrix에 의해 참조되는 접근자는 "MAT4" 유형의 부동소수점 구성요소를 가져야 한다. inverseBindMatrix에서 참조하는 접근자의 요소 수는 접합 요소 수보다 크거나 같아야 합니다. 각 행렬의 네 번째 행은 [0.0, 0.0, 0.0, 1.0]으로 설정해야 합니다.
Implementation Note
The matrix defining how to pose the skin’s geometry for use with the joints (also
known as “Bind Shape Matrix”) should be premultiplied to mesh data or to Inverse
Bind Matrices.
구현 참고
관절과 함께 사용하기 위해 피부의 기하학적 구조를 배치하는 방법을 정의하는 행렬("결합 모양 행렬"로도 알려져 있음)은 메쉬 데이터 또는 역결합 행렬에 사전 곱해야 합니다.
3.7.3.2. Joint Hierarchy
The joint hierarchy used for controlling skinned mesh pose is simply the node hierarchy, with each
node designated as a joint by a reference from the skin.joints array. Each skin’s joints MUST have
...
...
@@ -251,13 +385,21 @@ a common parent node (direct or indirect) called common root, which may or may n
node itself. When a skin is referenced by a node within a scene, the common root MUST belong to
the same scene.
3.7.3.2. 공동 계층
스킨 메쉬 포즈를 제어하기 위해 사용되는 조인트 계층은 단순히 노드 계층이며, 각 노드는 스킨의 참조에 의해 조인트로 지정됩니다.조인트 배열 각 피부의 관절은 반드시 공통근이라고 불리는 공통의 부모 노드(직접 또는 간접)를 가져야 하며, 이는 관절 노드 그 자체일 수도 있고 아닐 수도 있다. 씬(scene) 내의 노드에서 스킨을 참조하는 경우 공통 루트는 동일한 씬(scene)에 속해야 합니다.
Implementation Note
A node object does not specify whether it is a joint. Client implementations may
need to traverse the skins array first, marking each joint node.
구현 참고
노드 개체는 조인트인지 여부를 지정하지 않습니다. 클라이언트 구현은 먼저 스킨 어레이를 통과하여 각 조인트 노드를 표시해야 할 수 있습니다.
A joint node MAY have other nodes attached to it, even a complete node sub graph with meshes.
조인트 노드는 메쉬가 있는 완전한 노드 하위 그래프를 포함하여 다른 노드를 연결할 수 있습니다.
Implementation Note
It’s common to have an entire geometry attached to a joint node without having it
...
...
@@ -265,11 +407,19 @@ being skinned (e.g., a sword attached to a hand). Note that the node transform i
the local transform of the node relative to the joint, like any other node in the glTF
node hierarchy as described in the Transformations section.
구현 참고
일반적으로 전체 형상이 피부를 벗기지 않고 접합 노드에 부착됩니다(예: 손에 칼이 부착됨). 노드 변환은 변환 섹션에 설명된 대로 glTF 노드 계층의 다른 노드와 마찬가지로 조인트에 상대적인 노드의 로컬 변환입니다.
Only the joint transforms are applied to the skinned mesh; the transform of the skinned mesh node
MUST be ignored.
조인트 변환만 스킨 메시에 적용됩니다. 스킨 메시 노드의 변환은 무시해야 합니다.
In the example below, the translation of node_0 and the scale of node_1 are applied while the
translation of node_3 and rotation of node_4 are ignored.
아래 예제에서는 node_0의 변환과 node_1의 축척이 적용되는 반면 node_3의 변환과 node_4의 회전은 무시됩니다.
```
{
"nodes": [
...
...
@@ -314,12 +464,20 @@ attribute data contains the indices of the joints from the corresponding skin.jo
the vertex. The WEIGHTS_n attribute data defines the weights indicating how strongly the joint
influences the vertex.
3.7.3.3. 껍질 벗긴 메시 속성
스킨 처리된 메시에는 스킨 처리 계산에 사용되는 정점 속성이 있어야 합니다. JONS_n 속성 데이터에는 해당 피부의 관절 지수가 포함되어 있습니다.정점에 영향을 미치는 접합 배열입니다. WEATH_n 속성 데이터는 결합이 정점에 얼마나 큰 영향을 미치는지 나타내는 가중치를 정의합니다.
To apply skinning, a transformation matrix is computed for each joint. Then, the per-vertex
transformation matrices are computed as weighted linear sums of the joint transformation
matrices. Note that per-joint inverse bind matrices (when present) MUST be applied before the base
node transforms.
스키닝을 적용하기 위해 각 접합부에 대해 변환 행렬이 계산됩니다. 그런 다음 정점당 변환 행렬은 결합 변환 행렬의 가중 선형 합으로 계산된다. 기본 노드가 변환되기 전에 결합당 역 바인딩 행렬(존재하는 경우)을 적용해야 합니다.
In the following example, a mesh primitive defines JOINTS_0 and WEIGHTS_0 vertex attributes:
다음 예제에서 메쉬 프리미티브는 JONS_0 및 WEIGHTS_0 꼭짓점 속성을 정의합니다.
```
{
"meshes": [
...
...
@@ -348,42 +506,72 @@ MUST have VEC4 type and following component types:
* JOINTS_n: unsigned byte or unsigned short
* WEIGHTS_n: float, or normalized unsigned byte, or normalized unsigned short
한 정점에 영향을 미치는 접합부의 수는 집합당 4개로 제한되므로 참조된 접근자는 VEC4 유형과 다음 구성요소 유형을 가져야 합니다.
* JONS_n: 부호 없는 바이트 또는 부호 없는 짧은 바이트
* WEIGHT_n: 플로트 또는 정규화된 부호 없는 바이트 또는 정규화된 부호 없는 짧은
The joint weights for each vertex MUST NOT be negative.
각 꼭짓점의 결합 가중치는 음수가 아니어야 합니다.
Joints MUST NOT contain more than one non-zero weight for a given vertex.
조인트는 주어진 정점에 대해 0이 아닌 가중치를 두 개 이상 포함하면 안 됩니다.
When the weights are stored using float component type, their linear sum SHOULD be as close as
reasonably possible to 1.0 for a given vertex.
가중치가 플로트 성분 유형을 사용하여 저장되는 경우, 주어진 정점에 대해 선형 합이 가능한 한 1.0에 가까워야 한다.
When the weights are stored using normalized unsigned byte, or normalized unsigned short
component types, their linear sum before normalization MUST be 255 or 65535 respectively.
Without these requirements, vertices would be deformed significantly because the weight error
would get multiplied by the joint position. For example, an error of 1/255 in the weight sum would
result in an unacceptably large difference in the joint position.
가중치가 정규화된 부호 없는 바이트 또는 정규화된 부호 없는 짧은 구성요소 유형을 사용하여 저장되는 경우, 정규화 전의 선형 합은 각각 255 또는 65535여야 합니다.
이러한 요구사항이 없으면, 무게 오차에 관절 위치가 곱되기 때문에 정점이 크게 변형될 것이다. 예를 들어, 무게 합계에 1/255의 오차가 있으면 관절 위치에 허용할 수 없을 정도로 큰 차이가 발생합니다.
Implementation Note
The threshold in the official validation tool is set to 2e-7 times the number of non-zero weights per vertex.
구현 참고
공식 유효성 검사 도구의 임계값은 정점당 0이 아닌 가중치 수의 2e-7배로 설정됩니다.
Implementation Note
Since the allowed threshold is much lower than minimum possible step for
quantized component types, weight sum should be renormalized after
quantization.
구현 참고
허용 임계값은 양자화된 구성요소 유형에 대해 가능한 최소 단계보다 훨씬 낮기 때문에, 가중치 합계는 양자화 후에 다시 정규화되어야 한다.
When any of the vertices are influenced by more than four joints, the additional joint and weight
information are stored in subsequent sets. For example, JOINTS_1 and WEIGHTS_1 if present will
reference the accessor for up to 4 additional joints that influence the vertices. For a given primitive,
the number of JOINTS_n attribute sets MUST be equal to the number of WEIGHTS_n attribute sets.
정점 중 하나라도 네 개 이상의 조인트의 영향을 받는 경우 추가 조인트 및 중량 정보가 후속 세트에 저장됩니다. 예를 들어, JONS_1과 WEIGHTS_1(존재하는 경우)은 정점에 영향을 미치는 최대 4개의 추가 조인트에 대해 접근자를 참조합니다. 주어진 원시적인 것에 대해
JONS_n 속성 집합의 수는 WEIGHTS_n 속성 집합의 수와 같아야 합니다.
Client implementations MAY support only a single set of up to four weights and joints, however not
supporting all weight and joint sets present in the file may have an impact on the asset’s animation.
클라이언트 구현은 최대 4개의 가중치와 조인트의 단일 세트만 지원할 수 있지만 파일에 있는 모든 가중치와 조인트 세트를 지원하지 않으면 자산의 애니메이션에 영향을 미칠 수 있습니다.
All joint values MUST be within the range of joints in the skin. Unused joint values (i.e., joints with a
weight of zero) SHOULD be set to zero.
모든 관절 값은 피부의 관절 범위 내에 있어야 합니다. 사용하지 않는 조인트 값(즉, 중량이 0인 조인트)은 0으로 설정해야 합니다.
3.7.4. Instantiation
A mesh is instantiated by node.mesh property. The same mesh could be used by many nodes, which
could have different transforms. For example:
3.7.4. 인스턴스화
메쉬는 node.mesh 속성으로 인스턴스화됩니다. 동일한 메시를 여러 노드에서 사용할 수 있으며, 이는 서로 다른 변환을 가질 수 있습니다. 예:
```
{
"nodes": [
...
...
@@ -404,22 +592,35 @@ could have different transforms. For example:
After applying the node’s global transform, mesh vertex position values are meters.
노드의 전역 변환을 적용한 후 메시 정점 위치 값은 미터입니다.
When a mesh primitive uses any triangle-based topology (i.e., triangles, triangle strip, or triangle
fan), the determinant of the node’s global transform defines the winding order of that primitive. If
the determinant is a positive value, the winding order triangle faces is counterclockwise; in the
opposite case, the winding order is clockwise.
메시 프리미티브가 삼각형 기반 토폴로지(즉, 삼각형, 삼각형 스트립 또는 삼각형 팬)를 사용할 때, 노드의 전역 변환의 결정 요인은 해당 프리미티브의 권선 순서를 정의한다. 행렬식이 양의 값이면 권선 순서 삼각형 면은 시계 반대 방향이고, 반대의 경우 권선 순서는 시계 방향입니다.
Implementation Note
Switching the winding order to clockwise enables mirroring geometry via negative
scale transforms.
구현 참고
권선 순서를 시계 방향으로 전환하면 음의 스케일 변환을 통해 미러링 지오메트리가 활성화됩니다.
When an instantiated mesh has morph targets, it MUST use morph weights specified with the
node.weights property. When the latter is undefined, mesh.weights property MUST be used instead.
When both of these fields are undefined, the mesh is instantiated in a non-morphed state (i.e., with
all morph weights set to zeros).
인스턴스화된 메쉬에 morph 대상이 있는 경우 노드와 함께 지정된 morph 가중치를 사용해야 합니다.재산의 무게를 달다 후자가 정의되지 않은 경우 메시.대신 가중치 속성을 사용해야 합니다.
이 두 필드가 모두 정의되지 않은 경우 메시는 비모프 상태로 인스턴스화된다(즉, 모든 모프 가중치가 0으로 설정됨).
The example below instantiates a Morph Target with non-default weights.
아래 예제에서는 기본 가중치가 아닌 Morph Target을 인스턴스화합니다.
```
{
"nodes": [
...
...
@@ -433,8 +634,13 @@ The example below instantiates a Morph Target with non-default weights.
A skin is instantiated within a node using a combination of the node’s mesh and skin properties. The mesh for a skin instance is defined in the mesh property. The skin property contains the index of the skin to instance.
노드의 메시 및 스킨 속성의 조합을 사용하여 노드 내에서 스킨이 인스턴스화됩니다. 스킨 인스턴스에 대한 메쉬는 메쉬 속성에 정의됩니다. 스킨 속성에는 인스턴스에 대한 스킨의 인덱스가 포함됩니다.
The following example shows a skinned mesh instance: a skin object, a node with a skinned mesh,
and two joint nodes.
다음 예제에서는 스킨 객체, 스킨 메시가 있는 노드 및 두 개의 조인트 노드와 같은 스킨 메시 인스턴스를 보여 줍니다.
```
{
"skins": [
...
...
@@ -481,9 +687,17 @@ and two joint nodes.
glTF 2.0 separates texture access into three distinct types of objects: Textures, Images, and
Samplers.
3.8 텍스처 데이터
3.8.1 개요
glTF 2.0은 텍스처 액세스를 세 가지 유형의 객체로 분리합니다. 텍스처, 이미지 및 샘플러.
3.8.2. Textures
Textures are stored in the asset’s textures array. A texture is defined by an image index, denoted by
the source property and a sampler index (sampler). For example:
3.8.2. 질감
텍스처는 자산의 텍스처 배열에 저장됩니다. 텍스처는 소스 속성과 샘플러 인덱스(샘플러)로 표시되는 이미지 인덱스로 정의됩니다. 예:
```
{
"textures": [
...
...
@@ -496,26 +710,46 @@ the source property and a sampler index (sampler). For example:
```
glTF 2.0 supports only static 2D textures.
glTF 2.0은 정적 2D 텍스처만 지원합니다.
When texture.source is undefined, the image SHOULD be provided by an extension or application-specific means, otherwise the texture object is undefined.
텍스처 소스가 정의되지 않은 경우 이미지는 확장 또는 응용 프로그램별 방법으로 제공되어야 하며 그렇지 않은 경우 텍스처 개체가 정의되지 않습니다.
Implementation Note
Client implementations may render such textures with a predefined placeholder
image or being filled with some error color (usually magenta).
구현 참고
클라이언트 구현체는 미리 정의된 자리 표시자 이미지로 이러한 텍스처를 렌더링하거나 오류 색(일반적으로 마젠타)으로 채울 수 있다.
When texture.sampler is undefined, a sampler with repeat wrapping (in both directions) and auto
filtering MUST be used.
텍스처 샘플러가 정의되지 않은 경우 반복 래핑(양방향) 및 자동 필터링이 있는 샘플러를 사용해야 합니다.
3.8.3. Images
Images referred to by textures are stored in the images array of the asset.
3.8.3. 이미지
텍스처로 참조되는 이미지는 자산의 이미지 배열에 저장됩니다.
Each image contains one of
* a URI (or IRI) to an external file in one of the supported image formats, or
* a Data URI with embedded data, or
* a reference to a bufferView; in that case mimeType MUST be defined.
각 이미지는 다음 중 하나를 포함합니다.
* 지원되는 이미지 형식 중 하나의 외부 파일에 대한 URI(또는 IRI) 또는
* 데이터가 포함된 데이터 URI 또는
* bufferView에 대한 참조; 이 경우 mime유형을 정의해야 합니다.
The following example shows an image pointing to an external PNG image file and another image
referencing a bufferView with JPEG data.
다음 예에서는 외부 PNG 이미지 파일을 가리키는 이미지와 JPEG 데이터가 포함된 bufferView를 참조하는 다른 이미지를 보여 줍니다.
```
{
"images": [
...
...
@@ -533,6 +767,8 @@ referencing a bufferView with JPEG data.
Client implementations MAY need to manually determine the media type of some images. In such a
case, the following table SHOULD be used to check the values of the first few bytes.
클라이언트 구현은 일부 이미지의 미디어 유형을 수동으로 결정해야 할 수 있습니다. 이 경우 다음 표를 사용하여 처음 몇 바이트의 값을 확인해야 합니다.
Media Type Pattern Length Pattern Bytes
image/png 8 0x89 0x50 0x4E 0x47 0x0D 0x0A
0x1A 0x0A
...
...
@@ -540,42 +776,73 @@ image/jpeg 3 0xFF 0xD8 0xFF
The image data MUST match the image.mimeType property when the latter is defined.
이미지 데이터는 image.mime과 일치해야 합니다.후자가 정의되면 속성을 입력합니다.
The origin of the texture coordinates (0, 0) corresponds to the upper left corner of a texture image.
This is illustrated in the following figure, where the respective coordinates are shown for all four
corners of a normalized texture space:
Figure 6. Normalized Texture Coordinates
텍스처 좌표의 원점(0, 0)은 텍스처 이미지의 왼쪽 상단 모서리에 해당합니다.
이는 정규화된 텍스처 공간의 네 모서리에 대해 각각의 좌표가 표시되는 다음 그림에 나와 있습니다.
그림 6. 정규화된 텍스처 좌표
Any colorspace information (such as ICC profiles, intents, gamma values, etc.) from PNG or JPEG
images MUST be ignored. Effective transfer function (encoding) is defined by a glTF object that
refers to the image (in most cases it’s a texture that is used by a material).
PNG 또는 JPEG 영상의 모든 색 공간 정보(ICC 프로필, 의도, 감마 값 등)는 무시해야 합니다. 효과적인 전송 함수(인코딩)는 이미지를 참조하는 glTF 객체에 의해 정의됩니다(대부분의 경우 재료에 의해 사용되는 텍스처).
Web Implementation Note
To ignore embedded colorspace information when using WebGL API, set
UNPACK_COLORSPACE_CONVERSION_WEBGL flag to NONE.
To ignore embedded colorspace information when using ImageBitmap API, set
colorSpaceConversion option to none.
웹 구현 참고
WebGL API를 사용할 때 내장된 색 공간 정보를 무시하려면 UNPACK_COLORSPACE_CONVERSION_WEBGL 플래그를 NONE으로 설정합니다.
ImageBitmap API를 사용할 때 내장된 색 공간 정보를 무시하려면 colorSpaceConversion 옵션을 none으로 설정합니다.
3.8.4. Samplers
3.8.4.1. Overview
Samplers are stored in the samplers array of the asset. Each sampler specifies filtering and
wrapping modes.
3.8.4. 샘플러
3.8.4.1. 개요
샘플러는 자산의 샘플러 배열에 저장됩니다. 각 샘플러는 필터링 및 래핑 모드를 지정합니다.
The sampler properties use integer enums defined in the Properties Reference.
샘플러 특성은 특성 참조에 정의된 정수 열거형을 사용합니다.
Client implementations SHOULD follow specified filtering modes. When the latter are undefined,
client implementations MAY set their own default texture filtering settings.
클라이언트 구현은 지정된 필터링 모드를 따라야 합니다. 후자가 정의되지 않은 경우 클라이언트 구현은 자체 기본 텍스처 필터링 설정을 설정할 수 있습니다.
Client implementations MUST follow specified wrapping modes.
클라이언트 구현은 지정된 래핑 모드를 따라야 합니다.
3.8.4.2. Filtering
Filtering modes control texture’s magnification and minification.
3.8.4.2. 필터링
필터링 모드는 텍스처의 확대 및 축소를 제어합니다.
Magnification modes include:
* Nearest. For each requested texel coordinate, the sampler selects a texel with the nearest
coordinates. This process is sometimes called “nearest neighbor”.
* Linear. For each requested texel coordinate, the sampler computes a weighted sum of several
adjacent texels. This process is sometimes called “bilinear interpolation”.
확대 모드에는 다음이 포함됩니다.
* 가장 가까운. 요청된 각 텍셀 좌표에 대해 샘플러가 가장 가까운 텍셀을 선택합니다.
좌표계 이 과정을 "가장 가까운 이웃"이라고 부르기도 한다.
* 선형. 요청된 각 텍셀 좌표에 대해 샘플러는 몇 개의 가중 합을 계산한다.
인접한 방직품 이 과정은 때때로 "이선형 보간법"이라고 불린다.
Minification modes include:
* Nearest. For each requested texel coordinate, the sampler selects a texel with the nearest (in
Manhattan distance) coordinates from the original image. This process is sometimes called
...
...
@@ -592,21 +859,25 @@ texels from it.
minified versions of the original image, selects a texel with the nearest (in Manhattan distance)
coordinates from each of them, and performs final linear interpolation between these two
intermediate results.
* Linear-mipmap-linear. For each requested texel coordinate, the sampler first selects two preminified versions of the original image, computes a weighted sum of several adjacent texels
* Linear-mipmap-linear. For each requested texel coordinate, the sampler first selects two pre-minified versions of the original image, computes a weighted sum of several adjacent texels
from each of them, and performs final linear interpolation between these two intermediate
results. This process is sometimes called “trilinear interpolation”.
최소화 모드에는 다음이 포함됩니다.
* 가장 가까운. 요청된 각 텍셀 좌표에 대해 샘플러는 원본 영상에서 가장 가까운(맨하탄 거리에 있는) 좌표를 가진 텍셀을 선택합니다. 이 과정을 "가장 가까운 이웃"이라고 부르기도 한다.
* 선형. 요청된 각 텍셀 좌표에 대해 샘플러는 원본 이미지에서 인접한 여러 텍셀의 가중 합계를 계산합니다. 이 과정은 때때로 "이선형"이라고 불린다.
보간".
* 가장 가까운-미프맵-가장 가까운. 요청된 각 텍셀 좌표에 대해 샘플러는 먼저 원본 이미지의 미리 축소된 버전 중 하나를 선택한 다음 맨하탄 거리에 있는 좌표가 가장 가까운 텍셀을 선택합니다.
* 선형-미프맵-가장 근접합니다. 요청된 각 텍셀 좌표에 대해 샘플러는 먼저 원본 이미지의 미리 최소화된 버전 중 하나를 선택한 다음 해당 이미지에서 여러 인접 텍셀의 가중 합계를 계산한다.
* 가장 가까운-미프맵-선형. 요청된 각 텍셀 좌표에 대해 샘플러는 먼저 원본 이미지의 미리 축소된 버전 두 개를 선택하고 각각에서 가장 가까운(맨하탄 거리에 있는) 좌표를 가진 텍셀을 선택한 다음 이 둘 사이의 최종 선형 보간을 수행합니다.
중간 결과
* 선형-미프맵-선형. 요청된 각 텍셀 좌표에 대해 샘플러는 먼저 원본 이미지의 사전 축소된 버전 두 개를 선택하고 각각에서 여러 인접 텍셀의 가중 합계를 계산하고 이 두 중간 결과 사이에서 최종 선형 보간을 수행한다. 이 과정은 때때로 "삼선 보간"이라고 불린다.
To properly support mipmap modes, client implementations SHOULD generate mipmaps at
runtime. When runtime mipmap generation is not possible, client implementations SHOULD
override the minification filtering mode as follows:
Mipmap minification mode Fallback mode
Nearest-mipmap-nearest
Nearest-mipmap-linear
Nearest
Linear-mipmap-nearest
Linear-mipmap-linear
Linear
밉맵 모드를 제대로 지원하려면 클라이언트 구현체가 런타임에 밉맵을 생성해야 한다. 런타임 밉맵을 생성할 수 없는 경우 클라이언트 구현은 다음과 같이 최소화 필터링 모드를 재정의해야 합니다.
3.8.4.3. Wrapping
Per-vertex texture coordinates, which are provided via TEXCOORD_n attribute values, are normalized
...
...
@@ -615,11 +886,18 @@ data encoding). That is, the texture coordinate value of (0.0, 0.0) points to th
first (upper-left) image pixel, while the texture coordinate value of (1.0, 1.0) points to the end of
the last (lower-right) image pixel.
3.8.4.3. 포장
TEXCOORD_n 속성 값을 통해 제공되는 정점별 텍스처 좌표는 이미지 크기에 대해 정규화된다(정규화된 접근자 속성과 혼동하지 않기 위해, 후자는 데이터 인코딩만을 의미한다). 즉, 텍스처 좌표 값(0.0, 0.0)은 첫 번째(왼쪽 위) 이미지 픽셀의 시작을 가리키고, 텍스처 좌표 값(1.0, 1.0)은 마지막(오른쪽 아래) 이미지 픽셀의 끝을 가리킵니다.
Sampler’s wrapping modes define how to handle texture coordinates that are negative or greater
than or equal to 1.0, independently for both directions. Supported modes include:
샘플러의 래핑 모드는 음이거나 1.0보다 크거나 같은 텍스처 좌표를 양방향으로 독립적으로 처리하는 방법을 정의한다. 지원되는 모드는 다음과 같습니다.
* Repeat. Only the fractional part of texture coordinates is used.
* 반복한다. 텍스처 좌표의 부분 부분만 사용됩니다.
Example
2.2 maps to 0.2; -0.4 maps to 0.6.
...
...
@@ -627,6 +905,11 @@ Example
* Mirrored Repeat. This mode works as repeat but flips the direction when the integer part
(truncated towards −∞) is odd.
예
2.2는 0.2에 매핑되고 -0.4는 0.6에 매핑됩니다.
* 반복 미러링. 이 모드는 반복으로 작동하지만 정수 부분(-θ 방향으로 잘린)이 홀수일 때 방향을 뒤집습니다.
Example
2.2 maps to 0.2; -0.4 is treated as 0.4.
...
...
@@ -634,10 +917,19 @@ Example
* Clamp to edge. Texture coordinates with values outside the image are clamped to the closest
existing image texel at the edge.
예
2.2는 0.2에 매핑되고 -0.4는 0.4로 처리됩니다.
* 가장자리에 고정합니다. 영상 외부의 값이 있는 텍스처 좌표는 가장자리에서 가장 가까운 기존 영상 텍셀에 고정됩니다.
3.8.4.4. Example
The following example defines a sampler with linear magnification filtering, linear-mipmap-linear
minification filtering, and repeat wrapping in both directions.
3.8.4.4. 예
다음 예제에서는 선형 확대 필터링, 선형-밉맵-선형 최소화 필터링 및 양방향 반복 래핑을 사용하는 샘플러를 정의합니다.
```
{
"samplers": [
...
...
@@ -656,6 +948,10 @@ Client implementations SHOULD resize non-power-of-two textures (so that their ho
vertical sizes are powers of two) when running on platforms that have limited support for such
texture dimensions.
3.8.4.5. 2의 제곱이 아닌 텍스처
클라이언트 구현은 이러한 텍스처 치수를 제한적으로 지원하는 플랫폼에서 실행할 때 2의 거듭제곱이 아닌 텍스처 크기를 조정해야 한다.
Implementation Note
Specifically, if the sampler the texture references:
...
...
@@ -663,6 +959,11 @@ Specifically, if the sampler the texture references:
or
* has a minification filter (minFilter) that uses mipmapping.
구현 참고
특히, 샘플러가 텍스처를 참조하는 경우:
* 반복 또는 미러링 반복과 동일한 래핑 모드(wrapS 또는 wrapT)를 갖거나
* mipmapping을 사용하는 최소화 필터(minFilter)가 있습니다.
3.9. Materials
3.9.1. Overview
...
...
@@ -670,10 +971,19 @@ glTF defines materials using a common set of parameters that are based on widely
representations from Physically Based Rendering (PBR). Specifically, glTF uses the metallic-roughness material model. Using this declarative representation of materials enables a glTF file to
be rendered consistently across platforms.
3.9. 재료
3.9.1 개요
glTF는 PBR(Physical Based Rendering)에서 널리 사용되는 재료 표현을 기반으로 하는 공통 매개 변수 집합을 사용하여 재료를 정의합니다. 특히, glTF는 금속-조도 재료 모델을 사용한다. 재료의 이 선언적 표현을 사용하면 플랫폼 간에 일관되게 glTF 파일을 렌더링할 수 있습니다.
3.9.2. Metallic-Roughness Material
All parameters related to the metallic-roughness material model are defined under the
pbrMetallicRoughness property of material object. The following example shows how to define a
gold-like material using the metallic-roughness parameters:
3.9.2. 금속-조도 재료
금속-조도 재료 모델과 관련된 모든 매개 변수는 재료 객체의 pbrMetallic Roughness 특성에 따라 정의됩니다. 다음 예제는 금속-조도 매개변수를 사용하여 금과 같은 재료를 정의하는 방법을 보여줍니다.
```
{
"materials": [
...
...
@@ -691,23 +1001,36 @@ gold-like material using the metallic-roughness parameters:
The metallic-roughness material model is defined by the following properties:
금속-조도 재료 모델은 다음과 같은 특성으로 정의됩니다.
* base color - The base color of the material.
* metalness - The metalness of the material; values range from 0.0 (non-metal) to 1.0 (metal); see
Appendix B for the interpretation of intermediate values.
* roughness - The roughness of the material; values range from 0.0 (smooth) to 1.0 (rough).
* 기본 색상 - 재료의 기본 색상입니다.
* 금속성 - 재료의 금속성. 값의 범위는 0.0(비금속) ~ 1.0(금속)입니다. 중간 값의 해석은 부록 B를 참조하십시오.
* 거칠기 - 재료의 거칠기. 값의 범위는 0.0(평활) ~ 1.0(거칠기)입니다.
The base color has two different interpretations depending on the value of metalness. When the
material is a metal, the base color is the specific measured reflectance value at normal incidence
(F0). For a non-metal the base color represents the reflected diffuse color of the material. In this
model it is not possible to specify a F0 value for non-metals, and a linear value of 4% (0.04) is used.
기본 색상은 금속성의 값에 따라 두 가지 해석이 있습니다. 재료가 금속인 경우, 기준 색상은 정상 입사(F0)에서 측정된 특정 반사율 값입니다. 비금속의 경우 기본 색상은 재료의 반사된 확산 색상을 나타냅니다. 이 모델에서는 비금속에 대해 F0 값을 지정할 수 없으며 4%(0.04)의 선형 값이 사용됩니다.
The value for each property MAY be defined using factors and/or textures (e.g., baseColorTexture
and baseColorFactor). If a texture is not given, all respective texture components within this
material model MUST be assumed to have a value of 1.0. If both factors and textures are present,
the factor value acts as a linear multiplier for the corresponding texture values. A texture binding is
defined by an index of a texture object and an optional index of texture coordinates.
각 속성의 값은 인자 및/또는 텍스처(예: baseColorTexture 및 baseColorFactor)를 사용하여 정의할 수 있습니다. 텍스처가 지정되지 않은 경우 이 재료 모델 내의 모든 텍스처 구성요소의 값은 1.0으로 가정해야 합니다. 인자와 텍스처가 모두 있는 경우 인자 값은 해당 텍스처 값에 대한 선형 승수 역할을 합니다. 텍스처 바인딩은 텍스처 객체의 인덱스 및 텍스처 좌표의 선택적 인덱스에 의해 정의된다.
The following example shows a material that uses a texture for its base color property.
다음 예제에서는 기본 색상 속성에 텍스처를 사용하는 재료를 보여 줍니다.
```
{
"materials": [
...
...
@@ -737,14 +1060,21 @@ function so RGB values MUST be decoded to real linear values before they are use
computations. To achieve correct filtering, the transfer function SHOULD be decoded before
performing linear interpolation.
기본 색상 텍스처는 sRGB 광전자 전달 함수로 인코딩된 8비트 값을 포함해야 하므로 RGB 값이 계산에 사용되기 전에 실제 선형 값으로 디코딩되어야 한다. 올바른 필터링을 수행하려면 선형 보간을 수행하기 전에 전송 기능을 디코딩해야 합니다.
The textures for metalness and roughness properties are packed together in a single texture called
metallicRoughnessTexture. Its green channel contains roughness values and its blue channel
contains metalness values. This texture MUST be encoded with linear transfer function and MAY
use more than 8 bits per channel.
금속성 및 거칠기 특성에 대한 텍스처는 Metallic Roughness라는 단일 텍스처로 함께 포장됩니다. 녹색 채널에는 거칠기 값이 포함되고 파란색 채널에는 금속성 값이 포함됩니다. 이 텍스처는 선형 전송 기능으로 인코딩되어야 하며 채널당 8비트 이상을 사용할 수 있습니다.
For example, assume an 8-bit RGBA value of [64, 124, 231, 255] is sampled from baseColorTexture
and assume that baseColorFactor is given as [0.2, 1.0, 0.7, 1.0]. Then, the final base color value
would be (after decoding the transfer function and multiplying by the factor)
예를 들어 8비트 RGBA 값 [64, 124, 231, 255]이 baseColorTexture에서 샘플링되고 baseColorFactor가 [0.2, 1.0, 0.7, 1.0]로 제공된다고 가정합니다. 그런 다음 최종 기본 색상 값은 (전송 함수를 디코딩하고 인자를 곱한 후)입니다.
@@ -752,17 +1082,26 @@ would be (after decoding the transfer function and multiplying by the factor)
In addition to the material properties, if a primitive specifies a vertex color using the attribute
semantic property COLOR_0, then this value acts as an additional linear multiplier to base color.
재료 속성 외에도, 원시가 속성 의미 속성 COLOR_0을 사용하여 정점 색을 지정하면, 이 값은 기본 색에 대한 추가 선형 승수로 작용한다.
Implementations of the bidirectional reflectance distribution function (BRDF) itself MAY vary
based on device performance and resource constraints. See Appendix B for more details on the
BRDF calculations.
양방향 반사 분포 함수(BRDF) 자체의 구현은 장치 성능 및 리소스 제약에 따라 달라질 수 있다. BRDF 계산에 대한 자세한 내용은 부록 B를 참조하십시오.
3.9.3. Additional Textures
The material definition also provides for additional textures that MAY also be used with the
metallic-roughness material model as well as other material models, which could be provided via
glTF extensions.
3.9.3 추가 텍스처
재료 정의는 또한 glTF 확장을 통해 제공될 수 있는 다른 재료 모델뿐만 아니라 금속-조도 재료 모델에도 사용될 수 있는 추가 텍스처를 제공한다.
The following additional textures are supported:
다음과 같은 추가 텍스처가 지원됩니다.
* normal : A tangent space normal texture. The texture encodes XYZ components of a normal
vector in tangent space as RGB values stored with linear transfer function. Normal textures
SHOULD NOT contain alpha channel as it not used anyway. After dequantization, texel values
...
...
@@ -770,16 +1109,25 @@ MUST be mapped as follows: red [0.0 .. 1.0] to X [-1 .. 1], green [0.0 .. 1.0] t
1.0] maps to Z (0 .. 1]. Normal textures SHOULD NOT contain blue values less than or equal to
0.5.
* normal : 접선 공간 normal 텍스처입니다. 텍스처는 접선 공간에서 정규 벡터의 XYZ 성분을 선형 전달 함수와 함께 저장된 RGB 값으로 인코딩한다. 일반 텍스처에는 알파 채널이 사용되지 않으므로 사용할 수 없습니다. 역양자화 후 텍셀 값은 반드시 다음과 같이 매핑해야 합니다. 빨간색 [0.0...1.0] - X [-1...1], 녹색 [0.0...1.0] - Y [-1...1], 파란색(0.5...1.0]) - Z (0...1). 일반 텍스처에는 0.5보다 작거나 같은 파란색 값이 포함되지 않아야 합니다.
Implementation Note
This mapping is usually implemented as sampledValue * 2.0 - 1.0.
구현 참고
이 매핑은 일반적으로 샘플링된 값 * 2.0 - 1.0으로 구현됩니다.
The texture binding for normal textures MAY additionally contain a scalar scale value that
linearly scales X and Y components of the normal vector.
정규 텍스처에 대한 텍스처 바인딩은 정규 벡터의 X 및 Y 성분을 선형으로 스케일링하는 스칼라 스케일 값을 추가로 포함할 수 있다.
Normal vectors MUST be normalized before being used in lighting equations. When scaling is
used, vector normalization happens after scaling.
정규 벡터는 조명 방정식에 사용되기 전에 정규화되어야 합니다. 스케일링을 사용하면 스케일링 후 벡터 정규화가 발생합니다.
* occlusion : The occlusion texture; it indicates areas that receive less indirect lighting from
ambient sources. Direct lighting is not affected. The red channel of the texture encodes the
occlusion value, where 0.0 means fully-occluded area (no indirect lighting) and 1.0 means not
...
...
@@ -787,16 +1135,23 @@ occluded area (full indirect lighting). Other texture channels (if present) do n
The texture binding for occlusion maps MAY optionally contain a scalar strength value that is
used to reduce the occlusion effect. When present, it affects the occlusion value as 1.0 +
strength * (occlusionTexture - 1.0).
* 폐색 : 폐색 텍스처. 주변 광원으로부터 간접 조명을 덜 받는 영역을 나타냅니다. 직접 조명은 영향을 받지 않습니다. 텍스처의 빨간색 채널은 폐색 값을 인코딩하며, 여기서 0.0은 완전히 폐색된 영역(간접 조명 없음)을 의미하고 1.0은 폐색되지 않은 영역(전체 간접 조명)을 의미한다. 다른 텍스처 채널(존재하는 경우)은 폐색에 영향을 주지 않습니다. 폐색 맵에 대한 텍스처 바인딩은 폐색 효과를 감소시키기 위해 사용되는 스칼라 강도 값을 선택적으로 포함할 수 있다. 존재하는 경우 폐색 값에 1.0 + 강도 *(폐색)의 영향을 미칩니다.텍스처 - 1.0).
* emissive : The emissive texture and factor control the color and intensity of the light being
emitted by the material. The texture MUST contain 8-bit values encoded with the sRGB opto-electronic transfer function so RGB values MUST be decoded to real linear values before they
are used for any computations. To achieve correct filtering, the transfer function SHOULD be
decoded before performing linear interpolation.
* 방출: 방출 텍스처와 인자는 물질에 의해 방출되는 빛의 색상과 강도를 제어합니다. 텍스처는 sRGB 광전자 전달 함수로 인코딩된 8비트 값을 포함해야 하므로 RGB 값이 계산에 사용되기 전에 실제 선형 값으로 디코딩되어야 한다. 올바른 필터링을 수행하려면 선형 보간을 수행하기 전에 전송 기능을 디코딩해야 합니다.
For implementations where a physical light unit is needed, the units for the multiplicative
product of the emissive texture and factor are candela per square meter (cd / m2
), sometimes
called nits.
물리적 빛 단위가 필요한 구현의 경우 방사 텍스처와 인자의 곱셈 곱의 단위는 평방 미터당 칸델라(cd/m2)이며 때로는 니트라고 부른다.
Implementation Note
Because the value is specified per square meter, it indicates the brightness of
...
...
@@ -807,8 +1162,15 @@ unless otherwise defined by a glTF extension.
Many rendering engines simplify this calculation by assuming that an emissive
factor of 1.0 results in a fully exposed pixel.
구현 참고
이 값은 평방미터당 지정되므로 지표면을 따라 지정된 점의 밝기를 나타냅니다. 그러나 물리적 빛 단위에서 렌더링된 픽셀의 밝기로 정확하게 변환하려면 카메라의 노출 설정에 대한 지식이 필요하며, glTF 확장에 의해 달리 정의되지 않는 한 구현 세부 정보로 남아 있다.
많은 렌더링 엔진은 방출 계수가 1.0이면 픽셀이 완전히 노출된다고 가정하여 계산을 단순화한다.
The following example shows a material that is defined using pbrMetallicRoughness parameters as
well as additional textures:
다음 예제에서는 pbrMetallic Roughness 매개 변수와 추가 텍스처를 사용하여 정의된 재료를 보여 줍니다.
```
{
"materials": [
...
...
@@ -842,16 +1204,26 @@ If a client implementation is resource-bound and cannot support all the textures
SHOULD support these additional textures in the following priority order. Resource-bound
implementations SHOULD drop textures from the bottom to the top.
클라이언트 구현이 리소스에 바인딩되어 있고 정의된 모든 텍스처를 지원할 수 없는 경우 다음 우선순위 순서로 이러한 추가 텍스처를 지원해야 합니다. 리소스에 바인딩된 구현은 텍스처를 아래에서 위로 떨어뜨려야 합니다.
Texture Rendering impact when feature is not supported
Normal Geometry will appear less detailed than authored.
Occlusion Model will appear brighter in areas that are intended to be darker.
Emissive Model with lights will not be lit. For example, the headlights of a car model
will be off instead of on.
텍스처: 기능이 지원되지 않을 때 렌더링 영향
일반: 지오메트리가 작성된 것보다 상세하지 않게 표시됩니다.
폐색: 모델은 더 어두운 영역에서 더 밝게 나타납니다.
발광: 조명이 있는 모델에는 불이 켜지지 않습니다. 예를 들어, 자동차 모델의 헤드라이트는 켜지는 대신 꺼집니다.
3.9.4. Alpha Coverage
The alphaMode property defines how the alpha value is interpreted. The alpha value is taken from
the fourth component of the base color for metallic-roughness material model.
3.9.4. 알파 적용 범위
alphaMode 속성은 알파 값이 해석되는 방법을 정의합니다. 알파 값은 금속-조도 재료 모델의 기본 색상의 네 번째 성분에서 가져옵니다.
alphaMode can be one of the following values:
* OPAQUE - The rendered output is fully opaque and any alpha value is ignored.
...
...
@@ -859,25 +1231,43 @@ alphaMode can be one of the following values:
value and the specified alpha cutoff value; the exact appearance of the edges MAY be subject to
implementation-specific techniques such as “Alpha-to-Coverage”.
알파 모드는 다음 값 중 하나일 수 있습니다.
* 불투명 - 렌더링된 출력은 완전히 불투명하며 알파 값은 무시됩니다.
* MASK - 렌더링된 출력은 알파 값과 지정된 알파 컷오프 값에 따라 완전히 불투명하거나 완전히 투명합니다. 에지의 정확한 모양은 "알파-투-커버리지"와 같은 구현별 기법에 따라 달라질 수 있습니다.
Note
This mode is used to simulate geometry such as tree leaves or wire fences.
메모
이 모드는 나무 잎이나 철조망과 같은 형상을 시뮬레이션하는 데 사용된다.
* BLEND - The rendered output is combined with the background using the “over” operator as
described in Compositing digital images.
* 블렌드 - 렌더링된 출력은 디지털 영상 합성에 설명된 대로 "over" 연산자를 사용하여 배경과 결합됩니다.
Note
This mode is used to simulate geometry such as gauze cloth or animal fur.
메모
이 모드는 거즈 천 또는 동물 털과 같은 형상을 시뮬레이션하는 데 사용됩니다.
When alphaMode is set to MASK the alphaCutoff property specifies the cutoff threshold. If the alpha
value is greater than or equal to the alphaCutoff value then it is rendered as fully opaque,
otherwise, it is rendered as fully transparent. alphaCutoff value is ignored for other modes.
alphaMode가 MASK로 설정된 경우 alphaCutoff 속성은 차단 임계값을 지정합니다. 알파 값이 알파 컷오프 값보다 크거나 같으면 완전 불투명으로 렌더링되고, 그렇지 않으면 완전 투명으로 렌더링됩니다. 알파 컷오프 값은 다른 모드에서는 무시됩니다.
Implementation Note for Real-Time Rasterizers
Real-time rasterizers typically use depth buffers and mesh sorting to support alpha
modes. The following describe the expected behavior for these types of renderers.
실시간 래스터라이저 구현 참고 사항
실시간 래스터라이저는 일반적으로 알파 모드를 지원하기 위해 깊이 버퍼와 메시 정렬을 사용합니다. 다음은 이러한 렌더러 유형에 대해 예상되는 동작을 설명합니다.
* OPAQUE - A depth value is written for every pixel and mesh sorting is not
required for correct output.
* MASK - A depth value is not written for a pixel that is discarded after the alpha
...
...
@@ -890,27 +1280,47 @@ written or whether to sort is up to the implementation. For example,
implementations may discard pixels that have zero or close to zero alpha value
to avoid sorting issues.
* 불투명 - 깊이 값은 모든 픽셀에 대해 기록되며 정확한 출력을 위해 메시 정렬이 필요하지 않습니다.
* MASK - 알파 테스트 후 삭제된 픽셀에 대해 깊이 값이 기록되지 않습니다. 깊이 값은 다른 모든 픽셀에 대해 기록됩니다. 올바른 출력을 위해 망사 정렬이 필요하지 않습니다.
* 블렌드 - 이 모드에 대한 지원은 다양합니다. 모든 경우에 효과적인 완벽하고 빠른 해결책은 없습니다. 클라이언트 구현은 가능한 한 많은 상황에서 올바른 혼합 출력을 달성하도록 노력해야 합니다. 깊이 값을 작성할지 또는 정렬할지 여부는 구현에 달려 있습니다. 예를 들어, 구현체는 정렬 문제를 피하기 위해 0 또는 0에 가까운 알파 값을 가진 픽셀을 폐기할 수 있다.
3.9.5. Double Sided
The doubleSided property specifies whether the material is double sided.
3.9.5. 양면
doubleSided 특성은 재료가 양면인지 여부를 지정합니다.
When this value is false, back-face culling is enabled, i.e., only front-facing triangles are rendered.
When this value is true, back-face culling is disabled and double sided lighting is enabled. The backface MUST have its normals reversed before the lighting equation is evaluated.
이 값이 false인 경우, 후면 컬링이 활성화됩니다. 즉, 전면 삼각형만 렌더링됩니다.
When this value is true, back-face culling is disabled and double sided lighting is enabled. The back-face MUST have its normals reversed before the lighting equation is evaluated.
이 값이 참이면 뒷면 컬링이 비활성화되고 양면 조명이 활성화됩니다. 후면은 조명 방정식을 평가하기 전에 반드시 법선을 반대로 해야 한다.
3.9.6. Default Material
The default material, used when a mesh does not specify a material, is defined to be a material with
no properties specified. All the default values of material apply.
3.9.6. 기본 재료
망사가 재료를 지정하지 않을 때 사용되는 기본 재료는 특성이 지정되지 않은 재료로 정의됩니다. 재료의 모든 기본값이 적용됩니다.
Implementation Note
This material does not emit light and will be black unless some lighting is present
in the scene.
구현 참고
이 물질은 빛을 방출하지 않으며 장면에 조명이 없는 한 검은색이 됩니다.
3.9.7. Point and Line Materials
This specification does not define size or style of non-triangular primitives (such as points or lines),
and applications MAY use various techniques to render these primitives as appropriate. However,
the following conventions are RECOMMENDED for consistency:
3.9.7. 점 및 선 재료
이 규격은 삼각형이 아닌 원시 요소(예: 점 또는 선)의 크기나 스타일을 정의하지 않으며, 응용 프로그램은 다양한 기법을 사용하여 이러한 원시 요소를 적절하게 렌더링할 수 있다. 그러나 일관성을 위해 다음 규칙을 사용하는 것이 좋습니다.
* Points and Lines SHOULD have widths of 1px in viewport space.
* Points or Lines with NORMAL and TANGENT attributes SHOULD be rendered with standard lighting
including normal textures.
...
...
@@ -920,6 +1330,11 @@ lighting but ignoring any normal textures on the material.
the sum of the base color value (as defined above, multiplied by COLOR_0 when present) and the
emissive value.
* 점과 선의 너비는 뷰포트 공간에서 1px여야 합니다.
* 일반 및 접선 속성이 있는 점 또는 선은 일반 텍스처를 포함한 표준 조명으로 렌더링해야 합니다.
* 정상이지만 접선 속성이 없는 점 또는 선은 표준 조명을 사용하여 렌더링하되 재료의 정상적인 질감은 무시해야 합니다.
* 정상 속성이 없는 점 또는 선은 조명 없이 렌더링되어야 하며 대신 기본 색상 값(위에서 정의한 대로, 존재할 경우 COLOR_0으로 곱한 값)과 방출 값의 합을 사용해야 합니다.
3.10. Cameras
3.10.1. Overview
...
...
@@ -928,29 +1343,52 @@ the type of projection (perspective or orthographic), and either a perspective o
property that defines the details. A camera is instantiated within a node using the node.camera
property.
3.10. 카메라
3.10.1 개요
카메라는 자산의 카메라 배열에 저장됩니다. 각 카메라는 투영 유형(투시 또는 직교)을 지정하는 유형 특성과 세부 사항을 정의하는 투시 또는 직교 특성을 정의합니다. 카메라는 node.camera 속성을 사용하여 노드 내에서 인스턴스화된다.
A camera object defines the projection matrix that transforms scene coordinates from the view
space to the clip space.
카메라 개체는 뷰 공간에서 클립 공간으로 장면 좌표를 변환하는 투영 행렬을 정의합니다.
A node containing the camera instance defines the view matrix that transforms scene coordinates
from the global space to the view space.
카메라 인스턴스를 포함하는 노드는 전역 공간에서 뷰 공간으로 씬(scene) 좌표를 변환하는 뷰 매트릭스를 정의합니다.
3.10.2. View Matrix
The camera is defined such that the local +X axis is to the right, the “lens” looks towards the local -Z
axis, and the top of the camera is aligned with the local +Y axis.
3.10.2. 매트릭스 보기
카메라는 로컬 +X 축이 오른쪽에 있고 렌즈는 로컬 -Z 축을 향하고 카메라의 상단은 로컬 +Y 축과 정렬되도록 정의된다.
The view matrix is derived from the global transform of the node containing the camera with the
scaling ignored. If the node’s global transform is identity, the location of the camera is at the origin.
보기 행렬은 스케일링이 무시된 상태에서 카메라를 포함하는 노드의 전역 변환에서 파생됩니다. 노드의 전역 변환이 ID인 경우 카메라의 위치는 원점에 있습니다.
3.10.3. Projection Matrices
3.10.3.1. Overview
The projection can be perspective or orthographic.
3.10.3 투영 행렬
3.10.3.1. 개요
투영은 원근법 또는 직교법일 수 있습니다.
There are two subtypes of perspective projections: finite and infinite. When the zfar property is
undefined, the camera defines an infinite projection. Otherwise, the camera defines a finite
projection.
투시 투영에는 유한형과 무한형의 두 가지 하위 유형이 있습니다. zfar 속성이 정의되지 않은 경우 카메라는 무한 투영을 정의합니다. 그렇지 않으면 카메라가 유한 투영을 정의합니다.
The following example defines two perspective cameras with supplied values for Y field of view,
aspect ratio, and clipping information.
다음 예에서는 Y 시야, 종횡비 및 클리핑 정보에 대해 제공된 값을 포함하는 두 개의 투시 카메라를 정의합니다.
```
{
"cameras": [
...
...
@@ -978,6 +1416,8 @@ aspect ratio, and clipping information.
```
Client implementations SHOULD use the following projection matrices.
클라이언트 구현은 다음과 같은 투영 행렬을 사용해야 합니다.
3.10.3.2. Infinite perspective projection
Let
* a be the aspect ratio (width over height) of the field of view, set by
...
...
@@ -985,12 +1425,21 @@ camera.perspective.aspectRatio, or the aspect ratio of the viewport;
* y be the vertical field of view in radians, set by camera.perspective.yfov;
* n be the distance to the near clipping plane, set by camera.perspective.znear.
3.10.3.2. 무한 투시 투영
* a를 카메라.투시.aspect Ratio 또는 뷰포트의 종횡비로 설정한 시야의 종횡비(높이에 대한 폭)로 한다.
* y는 라디안 단위의 수직 시야로, 카메라에 의해 설정됩니다.yfov;
* n은 camera.despective.znear에 의해 설정된 근접 클리핑 평면까지의 거리이다.
Then, the projection matrix is defined as follows.
그 다음, 투영 행렬은 다음과 같이 정의된다.
When the provided camera’s aspect ratio does not match the aspect ratio of the viewport, client
implementations SHOULD NOT crop or perform non-uniform scaling (“stretching”) to fill the
viewport.
제공된 카메라의 가로 세로 비율이 뷰포트의 가로 세로 비율과 일치하지 않는 경우, 클라이언트 구현은 뷰포트를 채우기 위해 균일하지 않은 스케일링("스트레칭")을 수행하거나 자르지 않아야 한다.
3.10.3.3. Finite perspective projection
Let
* a be the aspect ratio (width over height) of the field of view, set by
...
...
@@ -999,12 +1448,23 @@ camera.perspective.aspectRatio, or the aspect ratio of the viewport;
* f be the distance to the far clipping plane, set by camera.perspective.zfar;
* n be the distance to the near clipping plane, set by camera.perspective.znear.
3.10.3.3. 유한투시투영
* a를 카메라.투시.aspect Ratio 또는 뷰포트의 종횡비로 설정한 시야의 종횡비(높이에 대한 폭)로 한다.
* y는 라디안 단위의 수직 시야로, 카메라에 의해 설정됩니다.yfov;
* f는 camera.despective.zfar에 의해 설정된 원거리 클리핑 평면까지의 거리이다;
* n은 camera.despective.znear에 의해 설정된 근접 클리핑 평면까지의 거리이다.
Then, the projection matrix is defined as follows.
그 다음, 투영 행렬은 다음과 같이 정의된다.
When the provided camera’s aspect ratio does not match the aspect ratio of the viewport, client
implementations SHOULD NOT crop or perform non-uniform scaling (“stretching”) to fill the
viewport.
제공된 카메라의 가로 세로 비율이 뷰포트의 가로 세로 비율과 일치하지 않는 경우, 클라이언트 구현은 뷰포트를 채우기 위해 균일하지 않은 스케일링("스트레칭")을 수행하거나 자르지 않아야 한다.
3.10.3.4. Orthographic projection
Let
* r be half the orthographic width, set by camera.orthographic.xmag;
...
...
@@ -1012,22 +1472,42 @@ Let
* f be the distance to the far clipping plane, set by camera.orthographic.zfar;
* n be the distance to the near clipping plane, set by camera.orthographic.znear.
3.10.3.4. 직교 투영법
* camera.orthographic.xmag에 의해 설정된 직교 폭의 절반이 되도록 한다.
* t는 camera.orthographic.ymag에 의해 설정된 직교 높이의 절반이다.
* f는 camera.orthographic.zfar에 의해 설정된 원거리 클리핑 평면까지의 거리이다;
* n은 camera.orthographic.znear에 의해 설정된 근접 클리핑 평면까지의 거리이다.
Then, the projection matrix is defined as follows.
그 다음, 투영 행렬은 다음과 같이 정의된다.
When r / t does not match the aspect ratio of the viewport, client implementations SHOULD NOT
crop or perform non-uniform scaling (“stretching”) to fill the viewport.
r/t가 뷰포트의 가로 세로 비율과 일치하지 않는 경우, 클라이언트 구현체는 뷰포트를 채우기 위해 균일하지 않은 스케일링("스트레칭")을 수행하거나 자르지 않아야 한다.
3.11. Animations
glTF supports articulated and skinned animation via key frame animations of nodes' transforms.
Key frame data is stored in buffers and referenced in animations using accessors.
glTF 2.0 also supports animation of instantiated morph targets in a similar fashion.
3.11. 애니메이션
glTF는 노드 변환의 주요 프레임 애니메이션을 통해 관절 애니메이션과 스킨 애니메이션을 지원한다.
키 프레임 데이터는 버퍼에 저장되고 액세스기를 사용하는 애니메이션에서 참조됩니다.
glTF 2.0은 또한 유사한 방식으로 인스턴스화된 모프 표적의 애니메이션을 지원한다.
Note
glTF 2.0 only supports animating node transforms and morph target weights.
Extensions or a future version of the specification may support animating
arbitrary properties, such as material colors and texture transformation matrices.
메모
glTF 2.0은 애니메이션 노드 변환과 모핑 대상 가중치만 지원한다.
사양의 확장 또는 미래 버전은 재료 색상 및 텍스처 변환 매트릭스와 같은 임의의 속성 애니메이션을 지원할 수 있습니다.
Note
glTF 2.0 defines only storage of animation keyframes, so this specification doesn’t
...
...
@@ -1038,6 +1518,9 @@ all animations until further user requests. When a playing animation is stopped,
client implementations may reset the scene to the initial state or freeze it at the
current frame.
메모
glTF 2.0은 애니메이션 키 프레임의 저장만 정의하므로 이 규격은 재생 순서, 자동 시작, 루프, 타임라인 매핑 등과 같은 런타임 동작을 정의하지 않습니다. glTF 2.0 자산을 로드할 때 클라이언트 구현은 애니메이션 항목을 선택하고 첫 번째 프레임에서 일시 중지하거나 자동으로 재생하거나 추가 사용자 요청이 있을 때까지 모든 애니메이션을 무시할 수 있습니다. 재생 중인 애니메이션이 중지되면 클라이언트 구현은 장면을 초기 상태로 재설정하거나 현재 프레임에서 정지시킬 수 있습니다.
Implementation Note
glTF 2.0 does not specifically define how an animation will be used when imported
...
...
@@ -1046,9 +1529,17 @@ an action. For example, “Walk” and “Run” animations might each contain m
channels targeting a model’s various bones. The client implementation may choose
when to play any of the available animations.
구현 참고
glTF 2.0은 애니메이션을 가져올 때 애니메이션을 사용하는 방법을 구체적으로 정의하지 않지만, 각 애니메이션을 액션으로 자체 포함하는 것이 좋습니다. 예를 들어, "Walk"와 "Run" 애니메이션은 각각 모델의 다양한 골격을 대상으로 하는 여러 채널을 포함할 수 있다. 클라이언트 구현은 사용 가능한 애니메이션 중 임의의 재생 시기를 선택할 수 있다.
All animations are stored in the animations array of the asset. An animation is defined as a set of channels (the channels property) and a set of samplers that specify accessors with key frame data and interpolation method (the samplers property).
모든 애니메이션은 자산의 애니메이션 배열에 저장됩니다. 애니메이션은 채널의 집합(채널 속성)과 키 프레임 데이터와 보간 방법(샘플러 속성)으로 액세스자를 지정하는 샘플러의 집합으로 정의됩니다.
The following examples show the expected usage of animations.
다음 예는 예상되는 애니메이션 사용량을 보여줍니다.
```
{
"animations": [
...
...
@@ -1358,19 +1849,31 @@ animation’s samplers array. The target property is an object that identifies w
using its node property, and which property of the node to animate using path. Non-animated
properties MUST keep their values during animation.
채널은 키 프레임 애니메이션의 출력 값을 계층의 특정 노드에 연결합니다.
채널의 샘플러 속성은 포함된 애니메이션의 샘플러 배열에 있는 샘플러 중 하나의 인덱스를 포함합니다. 대상 속성은 노드 속성을 사용하여 애니메이션을 만들 노드와 경로를 사용하여 애니메이션을 만들 노드의 속성을 식별하는 개체입니다. 애니메이션이 아닌 속성은 애니메이션 중에 값을 유지해야 합니다.
When node isn’t defined, channel SHOULD be ignored. Valid path names are "translation",
"rotation", "scale", and "weights".
노드가 정의되지 않은 경우 채널을 무시해야 합니다. 올바른 경로 이름은 "변환", "회전", "척도" 및 "가중치"입니다.
Nodes that do not contain a mesh with morph targets MUST NOT be targeted with "weights" path.
morph 대상이 있는 메쉬를 포함하지 않는 노드는 "weights" 경로로 대상을 지정해서는 안 됩니다.
Within one animation, each target (a combination of a node and a path) MUST NOT be used more
than once.
하나의 애니메이션 내에서 각 대상(노드와 경로의 조합)을 두 번 이상 사용해서는 안 됩니다.
Implementation Note
This prevents potential ambiguities when one target is affected by two or more
overlapping samplers.
구현 참고
이렇게 하면 하나의 대상이 두 개 이상의 중복 샘플러의 영향을 받을 때 잠재적 모호성을 방지할 수 있습니다.
Each of the animation’s samplers defines the input/output pair: a set of floating-point scalar values
representing linear time in seconds; and a set of vectors or scalars representing the animated
property. All values are stored in a buffer and accessed via accessors; refer to the table below for
...
...
@@ -1378,26 +1881,36 @@ output accessor types. Interpolation between keys is performed using the interpo
specified in the interpolation property. Supported interpolation values include LINEAR, STEP, and
CUBICSPLINE. See Appendix C for additional information about interpolation modes.
각 애니메이션 샘플러는 입력/출력 쌍을 정의한다: 선형 시간(초)을 나타내는 부동 소수점 스칼라 값의 집합과 애니메이션 속성을 나타내는 벡터 또는 스칼라의 집합. 모든 값은 버퍼에 저장되고 액세스자를 통해 액세스됩니다. 출력 액세스자 유형은 아래 표를 참조하십시오. 키들 사이의 보간은 보간 속성에 지정된 보간 방법을 사용하여 수행된다. 지원되는 보간 값에는 LINEAR, STEP 및 CUBICSPLINE이 있습니다. 보간 모드에 대한 자세한 내용은 부록 C를 참조하십시오.
The inputs of each sampler are relative to t = 0, defined as the beginning of the parent animations
entry. Before and after the provided input range, output MUST be clamped to the nearest end of the
input range.
각 샘플러의 입력은 부모 애니메이션 항목의 시작으로 정의된 t = 0에 상대적이다. 제공된 입력 범위 전후에 출력을 입력 범위의 가장 가까운 끝에 고정해야 합니다.
Implementation Note
For example, if the earliest sampler input for an animation is t = 10, a client
implementation must begin playback of that animation channel at t = 0 with
output clamped to the first available output value.
구현 참고
예를 들어, 애니메이션의 초기 샘플러 입력이 t = 10인 경우, 클라이언트 구현은 출력을 사용 가능한 첫 번째 출력 값으로 고정한 상태에서 t = 0에서 해당 애니메이션 채널의 재생을 시작해야 합니다.
Samplers within a given animation MAY have different inputs.
Implementations MUST use following equations to decode real floating-point value f from a
normalized integer c and vise-versa:
구현체는 정규화된 정수 c와 vise-versa에서 실제 부동소수점 값 f를 디코딩하기 위해 다음 방정식을 사용해야 한다.
accessor.componentType int-to-float float-to-int
signed byte f = max(c / 127.0, -1.0) c = round(f * 127.0)
unsigned byte f = c / 255.0 c = round(f * 255.0)
...
...
@@ -1417,6 +1932,8 @@ unsigned short f = c / 65535.0 c = round(f * 65535.0)
Animation sampler’s input accessor MUST have its min and max properties defined.
애니메이션 샘플러의 입력 접근자에는 최소 및 최대 속성이 정의되어 있어야 합니다.
Implementation Note
Animations with non-linear time inputs, such as time warps in Autodesk 3ds Max
...
...
@@ -1425,7 +1942,12 @@ format and non-linear time inputs are expensive to compute at runtime. Exporter
implementations should sample a non-linear time animation into linear inputs
and outputs for an accurate representation.
구현 참고
Autodesk 3ds Max 또는 Maya의 시간 왜곡과 같이 비선형 시간 입력이 있는 애니메이션은 glTF 애니메이션으로 직접 표현할 수 없습니다. glTF는 런타임 형식이며 비선형 시간 입력은 런타임에 계산하는 데 비용이 많이 듭니다. 수출자 구현은 정확한 표현을 위해 비선형 시간 애니메이션을 선형 입력 및 출력으로 샘플링해야 한다.
A morph target animation frame is defined by a sequence of scalars of length equal to the number
of targets in the animated morph target. These scalar sequences MUST lie end-to-end as a single
stream in the output accessor, whose final size is equal to the number of morph targets times the
number of animation frames.
모프 대상 애니메이션 프레임은 애니메이션 모프 대상의 대상 수와 동일한 길이의 스칼라 시퀀스로 정의된다. 이러한 스칼라 시퀀스는 최종 크기가 애니메이션 프레임 수에 morph 대상 수를 곱한 것과 동일한 출력 접근자의 단일 스트림으로 종단 간에 있어야 한다.