fixed major ordering in encoding
This commit is contained in:
parent
bafc67c982
commit
844db81ddc
@ -38,6 +38,10 @@ public class RT3script : MonoBehaviour
|
|||||||
depthImages = new RenderTexture[cameraList.Length];
|
depthImages = new RenderTexture[cameraList.Length];
|
||||||
depthCameraList = new Camera[cameraList.Length];
|
depthCameraList = new Camera[cameraList.Length];
|
||||||
|
|
||||||
|
Matrix4x4 testTranslate = Matrix4x4.Translate(new Vector3(0, 0, 2));
|
||||||
|
// UnityEngine.Debug.Log(testTranslate.ToString());
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// colorImage = new RenderTexture(256,256,16,RenderTextureFormat.ARGB32);
|
// colorImage = new RenderTexture(256,256,16,RenderTextureFormat.ARGB32);
|
||||||
// colorImage2 = new RenderTexture(256,256,16,RenderTextureFormat.ARGB32);
|
// colorImage2 = new RenderTexture(256,256,16,RenderTextureFormat.ARGB32);
|
||||||
@ -100,6 +104,8 @@ public class RT3script : MonoBehaviour
|
|||||||
//encode into pixels this camera's coordinates
|
//encode into pixels this camera's coordinates
|
||||||
// var tr = cameraList[i].transform.localToWorldMatrix;
|
// var tr = cameraList[i].transform.localToWorldMatrix;
|
||||||
int rowOffset = 2;
|
int rowOffset = 2;
|
||||||
|
// UnityEngine.Debug.Log("Encoding Camera "+i+":\n" +cameraList[i].cameraToWorldMatrix.ToString());
|
||||||
|
|
||||||
rowOffset = encodeMatrix(cameraList[i].cameraToWorldMatrix, i, rowOffset);
|
rowOffset = encodeMatrix(cameraList[i].cameraToWorldMatrix, i, rowOffset);
|
||||||
rowOffset = encodeMatrix(cameraList[i].projectionMatrix, i, rowOffset);
|
rowOffset = encodeMatrix(cameraList[i].projectionMatrix, i, rowOffset);
|
||||||
|
|
||||||
@ -121,11 +127,14 @@ public class RT3script : MonoBehaviour
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// this is encoding COLUMN MAJOR; the inner loop (j) goes along the COLUMN index
|
// this is encoding COLUMN MAJOR; the inner loop (rowNr) goes along a column. E.g. First row's item on the column, then second row's item, etc.
|
||||||
private int encodeMatrix(Matrix4x4 mat, int colOffset, int rowOffset) {
|
private int encodeMatrix(Matrix4x4 mat, int colOffset, int rowOffset) {
|
||||||
for (int i = 0; i < 4; i++) {
|
// UnityEngine.Debug.Log("m23: "+mat.m23+"; mat[2,3]: "+mat[2,3]);
|
||||||
for (int j = 0; j < 4; j++) {
|
|
||||||
encodeData(mat[i,j], colOffset, rowOffset); // if I want to switch to ROW MAJOR encoding, switch i and j here so it's [j,i]
|
for (int colNr = 0; colNr < 4; colNr++) {
|
||||||
|
for (int rowNr = 0; rowNr < 4; rowNr++) {
|
||||||
|
encodeData(mat[rowNr,colNr], colOffset, rowOffset); // if I want to switch to ROW MAJOR encoding, switch the two loop lines above (ALT+Up/Down)
|
||||||
|
// UnityEngine.Debug.Log("RO " + rowOffset + ": encode "+mat[i,j]);
|
||||||
rowOffset++;
|
rowOffset++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -213,13 +213,13 @@ Transform:
|
|||||||
m_PrefabInstance: {fileID: 0}
|
m_PrefabInstance: {fileID: 0}
|
||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
m_GameObject: {fileID: 91574286}
|
m_GameObject: {fileID: 91574286}
|
||||||
m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068}
|
m_LocalRotation: {x: -0.028943438, y: -0.7065142, z: 0.7065142, w: -0.028943438}
|
||||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
m_LocalPosition: {x: -0.0031539078, y: 0, z: 0.076987565}
|
||||||
m_LocalScale: {x: 1.8927, y: 1.8927, z: 1.8927}
|
m_LocalScale: {x: 2.2267053, y: 2.2267056, z: 2.226706}
|
||||||
m_ConstrainProportionsScale: 0
|
m_ConstrainProportionsScale: 0
|
||||||
m_Children: []
|
m_Children: []
|
||||||
m_Father: {fileID: 0}
|
m_Father: {fileID: 1871562477}
|
||||||
m_RootOrder: 9
|
m_RootOrder: 12
|
||||||
m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0}
|
||||||
--- !u!1 &103678967
|
--- !u!1 &103678967
|
||||||
GameObject:
|
GameObject:
|
||||||
@ -540,7 +540,7 @@ PrefabInstance:
|
|||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 3277633862007588681, guid: d59516398c7be0643b8b0658abc4c8c6, type: 3}
|
- target: {fileID: 3277633862007588681, guid: d59516398c7be0643b8b0658abc4c8c6, type: 3}
|
||||||
propertyPath: m_LocalPosition.x
|
propertyPath: m_LocalPosition.x
|
||||||
value: 0.0026808311
|
value: 0
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 3277633862007588681, guid: d59516398c7be0643b8b0658abc4c8c6, type: 3}
|
- target: {fileID: 3277633862007588681, guid: d59516398c7be0643b8b0658abc4c8c6, type: 3}
|
||||||
propertyPath: m_LocalPosition.y
|
propertyPath: m_LocalPosition.y
|
||||||
@ -548,7 +548,7 @@ PrefabInstance:
|
|||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 3277633862007588681, guid: d59516398c7be0643b8b0658abc4c8c6, type: 3}
|
- target: {fileID: 3277633862007588681, guid: d59516398c7be0643b8b0658abc4c8c6, type: 3}
|
||||||
propertyPath: m_LocalPosition.z
|
propertyPath: m_LocalPosition.z
|
||||||
value: 0.065439425
|
value: 0
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 3277633862007588681, guid: d59516398c7be0643b8b0658abc4c8c6, type: 3}
|
- target: {fileID: 3277633862007588681, guid: d59516398c7be0643b8b0658abc4c8c6, type: 3}
|
||||||
propertyPath: m_LocalRotation.w
|
propertyPath: m_LocalRotation.w
|
||||||
@ -787,14 +787,14 @@ Transform:
|
|||||||
m_PrefabInstance: {fileID: 0}
|
m_PrefabInstance: {fileID: 0}
|
||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
m_GameObject: {fileID: 963194225}
|
m_GameObject: {fileID: 963194225}
|
||||||
m_LocalRotation: {x: 0.12744485, y: -0, z: -0, w: 0.9918457}
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
m_LocalPosition: {x: 0, y: 1.148, z: -3}
|
m_LocalPosition: {x: 0, y: 0.5, z: -1}
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
m_ConstrainProportionsScale: 0
|
m_ConstrainProportionsScale: 0
|
||||||
m_Children: []
|
m_Children: []
|
||||||
m_Father: {fileID: 0}
|
m_Father: {fileID: 0}
|
||||||
m_RootOrder: 1
|
m_RootOrder: 1
|
||||||
m_LocalEulerAnglesHint: {x: 14.644, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
--- !u!114 &963194229
|
--- !u!114 &963194229
|
||||||
MonoBehaviour:
|
MonoBehaviour:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@ -897,13 +897,18 @@ Transform:
|
|||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
m_GameObject: {fileID: 1332006756}
|
m_GameObject: {fileID: 1332006756}
|
||||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
m_LocalPosition: {x: -3.7489998, y: -0.42, z: 1.462}
|
m_LocalPosition: {x: 0.22, y: -0.42, z: 1.462}
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
m_ConstrainProportionsScale: 0
|
m_ConstrainProportionsScale: 0
|
||||||
m_Children: []
|
m_Children: []
|
||||||
m_Father: {fileID: 0}
|
m_Father: {fileID: 0}
|
||||||
m_RootOrder: 6
|
m_RootOrder: 6
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!4 &1871562477 stripped
|
||||||
|
Transform:
|
||||||
|
m_CorrespondingSourceObject: {fileID: 3277633862007588681, guid: d59516398c7be0643b8b0658abc4c8c6, type: 3}
|
||||||
|
m_PrefabInstance: {fileID: 570808960}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
--- !u!1 &1983426807
|
--- !u!1 &1983426807
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@ -1034,7 +1039,7 @@ Transform:
|
|||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
m_GameObject: {fileID: 2050897061}
|
m_GameObject: {fileID: 2050897061}
|
||||||
m_LocalRotation: {x: 0, y: -0.7071068, z: 0, w: 0.7071068}
|
m_LocalRotation: {x: 0, y: -0.7071068, z: 0, w: 0.7071068}
|
||||||
m_LocalPosition: {x: 4.5, y: 0, z: 1.5}
|
m_LocalPosition: {x: 1, y: 0.5, z: -0}
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
m_ConstrainProportionsScale: 0
|
m_ConstrainProportionsScale: 0
|
||||||
m_Children: []
|
m_Children: []
|
||||||
|
@ -63,13 +63,14 @@
|
|||||||
float z = depth * (farClipping-nearClipping) + nearClipping;
|
float z = depth * (farClipping-nearClipping) + nearClipping;
|
||||||
|
|
||||||
vec4 pos = vec4(
|
vec4 pos = vec4(
|
||||||
(float(cameraIndex) + position.x / width - 0.5 )*boxSize,
|
( position.x / width - 0.5 )*boxSize,
|
||||||
( position.y / height - 0.5 )*boxSize,
|
( position.y / height - 0.5 )*boxSize,
|
||||||
z*boxSize*0.5,
|
z*boxSize*0.5,
|
||||||
1.0);
|
1.0);
|
||||||
|
|
||||||
|
// vec4 pos2 = c2wm * pos;
|
||||||
vec4 pos2 = inverse(c2wm) * pos;
|
vec4 pos2 = inverse(c2wm) * pos;
|
||||||
|
// float(cameraIndex)
|
||||||
gl_PointSize = pointSize;
|
gl_PointSize = pointSize;
|
||||||
gl_Position = projectionMatrix * modelViewMatrix * pos2;
|
gl_Position = projectionMatrix * modelViewMatrix * pos2;
|
||||||
if (depth <.01) { // move this point out of the view box if the depth is nearly zero
|
if (depth <.01) { // move this point out of the view box if the depth is nearly zero
|
||||||
@ -268,7 +269,7 @@
|
|||||||
camera.lookAt(center);
|
camera.lookAt(center);
|
||||||
|
|
||||||
let canvas = document.getElementById("debugCanvas");
|
let canvas = document.getElementById("debugCanvas");
|
||||||
let context = canvas.getContext("2d");
|
let context = canvas.getContext('2d', { willReadFrequently: true } );
|
||||||
context.drawImage(texture.image, 0,0); //the image must be drawn to a canvas in order to read numCameras
|
context.drawImage(texture.image, 0,0); //the image must be drawn to a canvas in order to read numCameras
|
||||||
|
|
||||||
|
|
||||||
@ -285,13 +286,13 @@
|
|||||||
// update all the properties of each camera matrix
|
// update all the properties of each camera matrix
|
||||||
for(let i = 0; i < numCameras; i++) {
|
for(let i = 0; i < numCameras; i++) {
|
||||||
//skip drawing if this is the first camera, since we already did it to get numCameras above
|
//skip drawing if this is the first camera, since we already did it to get numCameras above
|
||||||
if (i != 0) {
|
// if (i != 0) {
|
||||||
context.drawImage(texture.image, 256*i,0);
|
// context.drawImage(texture.image, 256*i,0);
|
||||||
}
|
// }
|
||||||
|
|
||||||
// this next line needs to obtain the region of the video texture with
|
// this next line needs to obtain the region of the video texture with
|
||||||
// the appropriate pixel encoded floats for the camera matrix.
|
// the appropriate pixel encoded floats for the camera matrix.
|
||||||
let d = context.getImageData(0,1,canvas.width,16); //should get data from the second line to the 17th, or 16 rows of pixels
|
let d = context.getImageData((256*i),1,canvas.width,16); //should get data from the second line to the 17th, or 16 rows of pixels
|
||||||
|
|
||||||
const c2wm_array = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0];
|
const c2wm_array = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0];
|
||||||
for(let rowNr = 0; rowNr < 16; rowNr++) {
|
for(let rowNr = 0; rowNr < 16; rowNr++) {
|
||||||
@ -330,6 +331,6 @@
|
|||||||
|
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
<canvas id="debugCanvas" width="256" height="256" />
|
<canvas id="debugCanvas" width="512" height="256" />
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user