public void setMRI(CT m, bool isLeft) { mri = m; //now need to gather information representing the CT data, then pass it to the volNode //the volNode can then load it into openGL at will int x = mri.width; int y = mri.height; int z = mri.depth; int w = (int)(x * mri.voxelSizeX); int h = (int)(y * mri.voxelSizeY); int l = (int)(z * mri.voxelSizeZ); Console.WriteLine("cropped size of mri data" + w + ", " + h + ", " + l); int dataSize = x * y * z * 4; int[] allDatint = new int[dataSize]; Console.WriteLine("data size from C# " + dataSize + ", "); for (int i = 0; i < x; i++) { for (int j = 0; j < y; j++) { for (int k = 0; k < z; k++) { int v = (i + x * (j + k * y)); //int v = (k + z * (j + i * y)) * 4; //for (int hl = 0; hl < 4; hl++) //{ // allDatint[v + hl] = mri.getVoxel_as(i, j, k, 0); // //if (mri.getVoxel_as(i, j, k, 0) >254) Console.WriteLine(v + ": " + mri.getVoxel_as(i, j, k, 0) + " stored: " + allDatint[v + hl]); //} allDatint[v + 0] = mri.getVoxel_as(i, j, k, 0); allDatint[v + 1] = mri.getVoxel_as(i, j, k, 0); allDatint[v + 2] = mri.getVoxel_as(i, j, k, 0); allDatint[v + 3] = 255; } } } //for (int ik = 0; ik < x * y * z * 4;ik++ ) //{ // if(allDatint[ik]>100)Console.WriteLine("d: " + allDatint[ik]); //} Console.WriteLine("done printing data"); volNode = new CallbackNode(w, h, l, x, y, z, allDatint, isLeft); volNode.setUpCallBack(); _root.addChild(volNode); }