Subversion Repositories gelsvn

Rev

Rev 401 | Rev 406 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 401 Rev 403
Line 7... Line 7...
7
 *
7
 *
8
 */
8
 */
9
 
9
 
10
#include "VisObj.h"
10
#include "VisObj.h"
11
 
11
 
-
 
12
#include <GLConsole/GLConsole.h>
12
#include <HMesh/load.h>
13
#include <HMesh/load.h>
-
 
14
#include "curvature.h"
13
 
15
 
14
using namespace std;
16
using namespace std;
15
using namespace CGLA;
17
using namespace CGLA;
16
using namespace HMesh;
18
using namespace HMesh;
17
 
19
 
Line 23... Line 25...
23
{
25
{
24
	if(_file != "") file = _file;
26
	if(_file != "") file = _file;
25
	mani.clear();
27
	mani.clear();
26
	if(!load(file, mani))
28
	if(!load(file, mani))
27
		return false;
29
		return false;
28
	Vec3f c(0,0,0);
-
 
29
	float r = 5;
-
 
30
	mani.get_bsphere(c,r);
30
	mani.get_bsphere(bsphere_center,bsphere_radius);
31
	view_ctrl.set_centre(c);
31
	view_ctrl.set_centre(bsphere_center);
32
	view_ctrl.set_eye_dist(2*r);
32
	view_ctrl.set_eye_dist(2*bsphere_radius);
33
	return true;
33
	return true;
34
}
34
}
35
 
35
 
36
 
36
 
37
void VisObj::display(const std::string& display_method , bool smooth)
37
void VisObj::display(const std::string& display_method , bool smooth)
Line 45... Line 45...
45
		if(short_name== "wir")
45
		if(short_name== "wir")
46
			renderer = new WireframeRenderer(mani, smooth);
46
			renderer = new WireframeRenderer(mani, smooth);
47
		else if(short_name == "har")
47
		else if(short_name == "har")
48
			renderer = new HarmonicsRenderer(harmonics);
48
			renderer = new HarmonicsRenderer(harmonics);
49
		else if(short_name == "iso")
49
		else if(short_name == "iso")
50
			renderer = new IsophoteLineRenderer(mani);
50
			renderer = new IsophoteLineRenderer(mani, smooth);
51
		else if(short_name == "ref")
51
		else if(short_name == "ref")
52
			renderer = new ReflectionLineRenderer(mani);
52
			renderer = new ReflectionLineRenderer(mani, smooth);
53
		else if(short_name == "gla")
53
		else if(short_name == "gla")
54
			renderer = new GlazedRenderer(mani);
54
			renderer = new GlazedRenderer(mani, smooth, bsphere_radius);
55
		else if(short_name == "met")
55
		else if(short_name == "too")
56
			renderer = new MetallicRenderer(mani);
56
			renderer = new ToonRenderer(mani, smooth);
-
 
57
		else if(short_name == "cur")
-
 
58
		{
-
 
59
			static CVar<string> line_direction("display.curvature_lines.direction", "min");
-
 
60
			
-
 
61
			std::vector<CGLA::Mat3x3d> curvature_tensors;
-
 
62
			curvature_tensors_from_edges(mani, curvature_tensors);
-
 
63
			smooth_curvature_tensors(mani,curvature_tensors);
-
 
64
			smooth_curvature_tensors(mani,curvature_tensors);
-
 
65
			std::vector<CGLA::Vec3d> min_curv_direction;
-
 
66
			std::vector<CGLA::Vec3d> max_curv_direction;
-
 
67
			string _line_direction = line_direction;
-
 
68
			vector<Vec3d>& lines = (_line_direction == "min")?min_curv_direction:max_curv_direction;
-
 
69
			
-
 
70
			std::vector<double> curvature;
-
 
71
			curvature_from_tensors(mani, curvature_tensors,
-
 
72
								   min_curv_direction,
-
 
73
								   max_curv_direction,
-
 
74
								   curvature);
-
 
75
			
-
 
76
			renderer = new LineFieldRenderer(mani, smooth, lines, bsphere_radius);
-
 
77
		}
-
 
78
		else if(short_name == "gau")
-
 
79
		{
-
 
80
			static CVar<float> smoothing("display.gaussian_curvature_renderer.smoothing",2);
-
 
81
			vector<double> scalars;
-
 
82
			gaussian_curvature_angle_defects(mani, scalars, smoothing);
-
 
83
			double max_G = 0;
-
 
84
			for(int i=0;i<scalars.size(); ++i)
-
 
85
				max_G = max(abs(scalars[i]), max_G);
-
 
86
			renderer = new ScalarFieldRenderer(mani, smooth, scalars, max_G);
-
 
87
			
-
 
88
		}
-
 
89
		else if(short_name == "mea")
-
 
90
		{
-
 
91
			static CVar<float> smoothing("display.mean_curvature_renderer.smoothing",2);
-
 
92
			vector<double> scalars;
-
 
93
			mean_curvatures(mani, scalars, smoothing);
-
 
94
			double max_G = 0;
-
 
95
			for(int i=0;i<scalars.size(); ++i)
-
 
96
				max_G = max(abs(scalars[i]), max_G);
-
 
97
			renderer = new ScalarFieldRenderer(mani, smooth, scalars, max_G);
-
 
98
			
-
 
99
		}
57
		else
100
		else
58
			renderer = new NormalRenderer(mani,smooth);
101
			renderer = new NormalRenderer(mani,smooth);
59
		
102
		
60
	}
103
	}
61
	view_ctrl.set_gl_modelview();
104
	view_ctrl.set_gl_modelview();