A.2.3.3 Cubemap Projection (CMP)
26.1183GPPRelease 17TSVirtual Reality (VR) profiles for streaming applications
Figure A.3 shows the CMP projection with 6 square faces, labelled as PX, PY, PZ, NX, NY, NZ (with "P" standing for "positive" and "N" standing for "negative"). Table A.2-4 specifies the face index values corresponding to each of the six CMP faces.
Figure A.3: Relation of the cube face arrangement of the projected picture to the sphere coordinates
Table A.2-4: Face index of CMP
Face index |
Face label |
Notes |
0 |
PX |
Front face with positive X axis value |
1 |
NX |
Back face with negative X axis value |
2 |
PY |
Left face with positive Y axis value |
3 |
NY |
Right face with negative Y axis value |
4 |
PZ |
Top face with positive Z axis value |
5 |
NZ |
Bottom face with negative Z axis value |
The 3D coordinates (X, Y, Z) are derived using following equations:
lw = pictureWidth / 3
lh = pictureHeight / 2
tmpHorVal = i − Floor( i ÷ lw ) * lw
tmpVerVal = j − Floor( j ÷ lh ) * lh
i′ = −( 2 * tmpHorVal ÷ lw ) + 1
j′ = −( 2 * tmpVerVal ÷ lh ) + 1
w = Floor( i ÷ lw )
h = Floor( j ÷ lh )
if( w = = 1 && h = = 0 ) { // PX: positive x front face
X = 1.0
Y = i′
Z = j′
} else if( w = = 1 && h = = 1 ) { // NX: negative x back face
X = −1.0
Y = −j′
Z = −i′
} else if( w = = 2 && h = = 1 ) { // PZ: positive z top face
X = −i′
Y = −j′
Z = 1.0
} else if( w = = 0 && h = = 1 ) { // NZ: negative z bottom face
X = i′
Y = −j′
Z = −1.0
} else if( w = = 0 && h = = 0 ) { // PY: positive y left face
X = −i′
Y = 1.0
Z = j′
} else { // ( w = = 2 && h = = 0 ), NY: negative y right face
X = i′
Y = −1.0
Z = j′
}