Blame view

legacy/rtsf_LoadTexture.h 1.56 KB
f1402849   dmayerich   renewed commit
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
  #include "cimg/cimg.h"

  #include "rtsFunction3D.h"

  #include "rtspoint3D.h"

  

  using namespace cimg_library;

  

  typedef point3D<unsigned char> RGB;

  

  rtsFunction3D<RGB> rtsf_LoadTexture(const char* filename)

  {

  

  	CImg<unsigned char> image(filename);

  

  	unsigned int max_x = image.dimx();

  	unsigned int max_y = image.dimy();

  	unsigned int max_z = image.dimz();

  

  	rtsFunction3D<RGB> bits(max_x, max_y, max_z);

  

  	unsigned int x, y, z;

  	for(x = 0; x<max_x; x++)

  		for(y = 0; y<max_y; y++)

  			for(z = 0; z<max_z; z++)

  			{

  				bits.xyz(x, max_y - y, z).x = image(x, y, z, 0);

  				bits.xyz(x, max_y - y, z).y = image(x, y, z, 1);

  				bits.xyz(x, max_y - y, z).z = image(x, y, z, 2);

  			}

  	

  

  	return bits;

  

  }

  

  rtsFunction3D<unsigned char> rtsf_LoadGrayTexture(const char* filename)

  {

  

  	CImg<unsigned char> image(filename);

  

  	//CImgDisplay main_disp(image);

  	//while(true);

  

  	unsigned int dim_x = image.dimx();

  	unsigned int dim_y = image.dimy();

  	unsigned int dim_z = image.dimz();

  

  	rtsFunction3D<unsigned char> bits(dim_x, dim_y, dim_z);

  	

  

  	float r, g, b;

  	float greyscale;

  	float max_length = sqrt(3.0f);

  

  	unsigned int x, y, z;

  	for(x = 0; x<dim_x; x++)

  		for(y = 0; y<dim_y; y++)

  			for(z = 0; z<dim_z; z++)

  			{

  				if(image.dimv() == 3)

  				{

  					r = image(x, y, z, 0)/255.0f;

  					g = image(x, y, z, 1)/255.0f;

  					b = image(x, y, z, 2)/255.0f;

  					greyscale = 0.3*r + 0.59*g + 0.11*b;

  				}

  				else

  					greyscale = image(x, y, z, 0)/255.0f;

  

  

  

  				bits.xyz(x, dim_y - y - 1, z) = greyscale * 255;

  			}

  	

  

  	return bits;

  

  }