Commit 7c1b82bcee1b8f8920d7e9227bab7bc0913b1d4c

Authored by Jiaming Guo
1 parent b31bfd7d

test for 00_GT.swc

Showing 2 changed files with 53 additions and 130 deletions   Show diff stats
CMakeLists.txt
... ... @@ -84,3 +84,4 @@ configure_file(data/04_Ta.obj ${CMAKE_CURRENT_BINARY_DIR}/04_Ta.obj @ONLY)
84 84 configure_file(data/04_Tb.obj ${CMAKE_CURRENT_BINARY_DIR}/04_Tb.obj @ONLY)
85 85 configure_file(data/1.swc ${CMAKE_CURRENT_BINARY_DIR}/1.swc @ONLY)
86 86 configure_file(data/2.swc ${CMAKE_CURRENT_BINARY_DIR}/2.swc @ONLY)
  87 +configure_file(data/00_GT.swc ${CMAKE_CURRENT_BINARY_DIR}/00_GT.swc @ONLY)
... ...
1   -#ifndef GL_MULTISAMPLE
2   -#define GL_MULTISAMPLE 0x809D
3   -#endif
4   -
5   -#include <stdlib.h>
  1 +#include <stdlib.h>
6 2 #include <string>
7 3 #include <fstream>
8 4 #include <algorithm>
... ... @@ -51,7 +47,7 @@ std::vector&lt;unsigned&gt; _t_gt; // store indices of nearest edge points in _
51 47 float resample_rate = 0.5f; //sample rate for the network (fraction of sigma used as the maximum sample rate)
52 48 float camera_factor = 1.2f; //start point of the camera as a function of X and Y size
53 49 float orbit_factor = 0.01f; //degrees per pixel used to orbit the camera
54   -float zoom_factor = 5.0;
  50 +float zoom_factor = 10.0;
55 51  
56 52 //mouse click
57 53 bool LButtonDown = false; // true when left button down
... ... @@ -78,6 +74,8 @@ GLuint dlist2;
78 74 //OpenGL objects
79 75 GLuint cmap_tex = 0; //texture name for the color map
80 76  
  77 +float sigma = 3; //default sigma
  78 +
81 79 //sets an OpenGL viewport taking up the entire window
82 80 void glut_render_single_projection(){
83 81  
... ... @@ -130,17 +128,40 @@ void glut_render(void) {
130 128  
131 129 //no mapping, just comparing
132 130 if (ind == 0) {
133   - //-----working with obj files-----
134   - if (swc_ind == 0) {
135   - if (num_nets == 1) { //if a single network is loaded
136   - glEnable(GL_DEPTH_TEST); //enable depth
137   - glut_render_single_projection(); //fill the entire viewport
138   - glut_render_modelview(); //set up the modelview matrix with camera details
139   - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); //clear the screen
140   - GT.glCenterline0(); //render the GT network (the only one loaded)
141   - }
  131 + if (num_nets == 1) { //if a single network is loaded
  132 + glEnable(GL_DEPTH_TEST); //enable depth
  133 + glut_render_single_projection(); //fill the entire viewport
  134 + glut_render_modelview(); //set up the modelview matrix with camera details
  135 + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); //clear the screen
  136 + GT.glCenterline0(); //render the GT network (the only one loaded)
  137 + }
  138 +
  139 + if (num_nets == 2) { //if two networks are loaded
  140 + glEnable(GL_DEPTH_TEST); //enable depth
  141 + glut_render_left_projection(); //set up a projection for the left half of the window
  142 + glut_render_modelview(); //set up the modelview matrix using camera details
  143 + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); //clear the screen
  144 +
  145 + glEnable(GL_TEXTURE_1D); //enable texture mapping
  146 + glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); //texture map will be used as the network color
  147 + glBindTexture(GL_TEXTURE_1D, cmap_tex); //bind the Brewer texture map
  148 +
  149 + GT.glCylinder(sigma); //render the GT network
  150 +
  151 + glut_render_right_projection(); //set up a projection for the right half of the window
  152 + glut_render_modelview(); //set up the modelview matrix using camera details
  153 + T.glCylinder(sigma); //render the T network
  154 + }
  155 + }
142 156  
143   - if (num_nets == 2) { //if two networks are loaded
  157 + //do comparing and mapping
  158 + else {
  159 + if (num_nets == 1) { //if a single network is loaded
  160 + std::cout << "You should have at least two networks to do mapping." << std::endl; //exit program because there isn't enough network
  161 + exit(1);
  162 + }
  163 + if (num_nets == 2) { //if two networks are loaded
  164 + if (compareMode) {
144 165 glEnable(GL_DEPTH_TEST); //enable depth
145 166 glut_render_left_projection(); //set up a projection for the left half of the window
146 167 glut_render_modelview(); //set up the modelview matrix using camera details
... ... @@ -150,124 +171,26 @@ void glut_render(void) {
150 171 glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); //texture map will be used as the network color
151 172 glBindTexture(GL_TEXTURE_1D, cmap_tex); //bind the Brewer texture map
152 173  
153   - GT.glCylinder(); //render the GT network
  174 + _GT.glCylinder(sigma); //render the GT network
154 175  
155 176 glut_render_right_projection(); //set up a projection for the right half of the window
156 177 glut_render_modelview(); //set up the modelview matrix using camera details
157   - T.glCylinder(); //render the T network
158   - }
159   - }
160   - //-----working with swc files-----
161   - else {
162   - if (num_nets == 1) { //if a single network is loaded
163   - glEnable(GL_DEPTH_TEST); //enable depth
164   - glut_render_single_projection(); //fill the entire viewport
165   - glut_render_modelview(); //set up the modelview matrix with camera details
166   - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); //clear the screen
167   - GT.glCenterline0_swc(); //render the GT network (the only one loaded)
168   - }
  178 + _T.glCylinder(sigma); //render the T network
169 179  
170   - if (num_nets == 2) { //if two networks are loaded
  180 + }
  181 + else {
171 182 glEnable(GL_DEPTH_TEST); //enable depth
172 183 glut_render_left_projection(); //set up a projection for the left half of the window
173 184 glut_render_modelview(); //set up the modelview matrix using camera details
174 185 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); //clear the screen
175 186  
176   - glEnable(GL_TEXTURE_1D); //enable texture mapping
177   - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); //texture map will be used as the network color
178   - glBindTexture(GL_TEXTURE_1D, cmap_tex); //bind the Brewer texture map
179   -
180   - GT.glCenterline(); //render the GT network
  187 + //_GT.glRandColorCenterlineGT(dlist1, _gt_t, colormap);
  188 + _GT.glRandColorCylinder1(dlist1, _gt_t, colormap, sigma);
181 189  
182 190 glut_render_right_projection(); //set up a projection for the right half of the window
183 191 glut_render_modelview(); //set up the modelview matrix using camera details
184   - T.glCenterline(); //render the T network
185   - }
186   - }
187   - }
188   -
189   - //do comparing and mapping
190   - else {
191   - //-----working with obj files-----
192   - if (swc_ind == 0) {
193   - if (num_nets == 1) { //if a single network is loaded
194   - std::cout << "You should have at least two networks to do mapping." << std::endl; //exit program because there isn't enough network
195   - exit(1);
196   - }
197   - if (num_nets == 2) { //if two networks are loaded
198   - if (compareMode) {
199   - glEnable(GL_DEPTH_TEST); //enable depth
200   - glut_render_left_projection(); //set up a projection for the left half of the window
201   - glut_render_modelview(); //set up the modelview matrix using camera details
202   - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); //clear the screen
203   -
204   - glEnable(GL_TEXTURE_1D); //enable texture mapping
205   - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); //texture map will be used as the network color
206   - glBindTexture(GL_TEXTURE_1D, cmap_tex); //bind the Brewer texture map
207   -
208   - _GT.glCylinder(); //render the GT network
209   -
210   - glut_render_right_projection(); //set up a projection for the right half of the window
211   - glut_render_modelview(); //set up the modelview matrix using camera details
212   - _T.glCylinder(); //render the T network
213   -
214   - }
215   - else {
216   - glEnable(GL_DEPTH_TEST); //enable depth
217   - glut_render_left_projection(); //set up a projection for the left half of the window
218   - glut_render_modelview(); //set up the modelview matrix using camera details
219   - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); //clear the screen
220   -
221   - //_GT.glRandColorCenterlineGT(dlist1, _gt_t, colormap);
222   - _GT.glRandColorCylinder1(dlist1, _gt_t, colormap);
223   -
224   - glut_render_right_projection(); //set up a projection for the right half of the window
225   - glut_render_modelview(); //set up the modelview matrix using camera details
226   - //_T.glRandColorCenterlineT(dlist2, _t_gt, colormap);
227   - _T.glRandColorCylinder2(dlist2, _t_gt, colormap);
228   - }
229   - }
230   - }
231   - //-----working with swc files-----
232   - else {
233   - if (num_nets == 1) { //if a single network is loaded
234   - std::cout << "You should have at least two networks to do mapping." << std::endl; //exit program because there isn't enough network
235   - exit(1);
236   - }
237   - if (num_nets == 2) { //if two networks are loaded
238   - //in compare mode
239   - if (compareMode) {
240   - glEnable(GL_DEPTH_TEST); //enable depth
241   - glut_render_left_projection(); //set up a projection for the left half of the window
242   - glut_render_modelview(); //set up the modelview matrix using camera details
243   - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); //clear the screen
244   -
245   - glEnable(GL_TEXTURE_1D); //enable texture mapping
246   - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); //texture map will be used as the network color
247   - glBindTexture(GL_TEXTURE_1D, cmap_tex); //bind the Brewer texture map
248   -
249   - _GT.glCenterline(); //render the GT network
250   -
251   - glut_render_right_projection(); //set up a projection for the right half of the window
252   - glut_render_modelview(); //set up the modelview matrix using camera details
253   - _T.glCenterline(); //render the T network
254   -
255   - }
256   - //in mapping mode
257   - else {
258   - glEnable(GL_DEPTH_TEST); //enable depth
259   - glut_render_left_projection(); //set up a projection for the left half of the window
260   - glut_render_modelview(); //set up the modelview matrix using camera details
261   - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); //clear the screen
262   -
263   - //_GT.glRandColorCenterlineGT(dlist1, _gt_t, colormap);
264   - _GT.glRandColorCylinder1_swc(dlist1, _gt_t, colormap);
265   -
266   - glut_render_right_projection(); //set up a projection for the right half of the window
267   - glut_render_modelview(); //set up the modelview matrix using camera details
268   - //_T.glRandColorCenterlineT(dlist2, _t_gt, colormap);
269   - _T.glRandColorCylinder2_swc(dlist2, _t_gt, colormap);
270   - }
  192 + //_T.glRandColorCenterlineT(dlist2, _t_gt, colormap);
  193 + _T.glRandColorCylinder2(dlist2, _t_gt, colormap, sigma);
271 194 }
272 195 }
273 196 }
... ... @@ -399,9 +322,9 @@ void glut_wheel(int wheel, int direction, int x, int y) {
399 322 float delta;
400 323  
401 324 if (direction > 0) // if it is button 3(up)
402   - delta = -zoom_factor;
403   - else // if it is button 4(down)
404 325 delta = zoom_factor;
  326 + else // if it is button 4(down)
  327 + delta = -zoom_factor;
405 328  
406 329 cam.Push(delta);
407 330 glutPostRedisplay();
... ... @@ -463,12 +386,11 @@ void glut_initialize(){
463 386  
464 387 glutInit(&myargc, myargv); //pass bogus arguments to glutInit()
465 388 glutSetOption(GLUT_MULTISAMPLE, 8);
466   - glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA | GLUT_MULTISAMPLE); //generate a color buffer, depth buffer, and enable double buffering
  389 + glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA); //generate a color buffer, depth buffer, and enable double buffering
467 390 glutInitWindowPosition(100,100); //set the initial window position
468 391 glutInitWindowSize(320, 320); //set the initial window size
469 392 glutCreateWindow("NetMets - STIM Lab, UH"); //set the dialog box title
470 393  
471   - glEnable(GL_MULTISAMPLE);
472 394 // register callback functions
473 395 glutDisplayFunc(glut_render); //function executed for rendering - renders networks
474 396 glutMouseFunc(glut_mouse); //executed on a mouse click - sets starting mouse positions for rotations
... ... @@ -653,12 +575,12 @@ int main(int argc, char* argv[])
653 575 }
654 576 }
655 577  
656   - if (args.nargs() == 2) { //if two files are specified, they will be displayed in neighboring viewports and compared
657   - if (1 == swc_ind) { //loading swc files
  578 + if (args.nargs() == 2) { //if two files are specified, they will be displayed in neighboring viewports and compared
  579 + if (1 == swc_ind) { //loading swc files
658 580 int device = args["device"].as_int(); //get the device value from the user
659 581 num_nets = 2; //set the number of networks to two
660 582 //does it need to be resampled??
661   - float sigma = args["sigma"].as_float(); //get the sigma value from the user
  583 + sigma = args["sigma"].as_float(); //get the sigma value from the user
662 584 T.load_swc(args.arg(1)); //load the second (test) network
663 585 if (args["features"].is_set()) //if the user wants to save features
664 586 features(args["features"].as_string());
... ... @@ -676,7 +598,7 @@ int main(int argc, char* argv[])
676 598 else {
677 599 int device = args["device"].as_int(); //get the device value from the user
678 600 num_nets = 2; //set the number of networks to two
679   - float sigma = args["sigma"].as_float(); //get the sigma value from the user
  601 + sigma = args["sigma"].as_float(); //get the sigma value from the user
680 602 T.load_obj(args.arg(1)); //load the second (test) network
681 603 if (args["features"].is_set()) //if the user wants to save features
682 604 features(args["features"].as_string());
... ...