1 #ifndef HOUSEMATERIALDESCRIPTION
  2 #define HOUSEMATERIALDESCRIPTION
  3 
  4 #include "SceneMaterialDescription.hxx"
  5 #include "Material.hxx"
  6 
  7 class HouseMaterialDescription
  8 	: public SceneMaterialDescription
  9 {
 10 public:
 11 	// This function will later return a material pointer
 12 	virtual Material *parse(std::istream &stream)
 13 	{
 14 		string materialname;
 15 		stream >> materialname;
 16 
 17 		Material *mat;
 18 
 19 		// Bad, but what will you do if you don't want to setup parsers
 20 		// for own material description files?
 21 		if (materialname == "Bambushut")
 22 		{
 23 			mat = new Material(Vec3f(0.73f,0.66f,0.50f));
 24 			mat->SetSchlickParams(0.2f,0.5f,0.7f);
 25 		}
 26 		else if (materialname == "Beckenrand"
 27 		      || materialname == "Fischbecken")
 28 		{
 29 			mat = new Material(Vec3f(1.0f));
 30 			mat->SetSchlickParams(0.2f,0.8f,0.5f);
 31 			mat->SetGlossyMirrorParams(0.2f,0.3f);
 32 			mat->procedural.push_back(new ProceduralGranite(true,false,50));
 33 		}
 34 		else if (materialname == "Boden")
 35 		{
 36 			mat = new Material(Vec3f(1.0f));
 37 			mat->SetSchlickParams(0.3f, 0.3f, 0.5f);
 38 			mat->procedural.push_back(new ProceduralWoodTiles(true, true,
 39 				                                          Vec3f(0,1,0),          Vec3f(1,0,0),         0.2,  0.8,
 40 				                                          Vec3f( 15.0, 30.0,4.0), Vec3f( 0.0,0.1,-0.3), 0.05,
 41 				                                          Vec3f( 13.0,-27.0,5.0), Vec3f(-0.1,0.1, 0.9), 0.05,
 42 				                                          Vec3f(-10.0, 32.0,6.0), Vec3f( 0.1,0.2,-0.7), 0.05,
 43 				                                          0.01, 5.0));
 44 		}
 45 		else if (materialname == "Drum")
 46 		{
 47 			mat = new Material(Vec3f(1.0));
 48 			mat->SetSchlickParams(0.269f, 0.9f, 0.1f);
 49 			mat->procedural.push_back(new ProceduralPaper(true,false,40));
 50 		}
 51 		else if (materialname == "Dumpling")
 52 		{
 53 			mat = new Material(Vec3f(0.90f,0.82f,0.34f));
 54 			mat->SetSchlickParams(0.3f, 0.1f, 0.9f);
 55 		}
 56 		else if (materialname == "Dumplingstick")
 57 		{
 58 			mat = new Material(Vec3f(0.87f,0.84f,0.74f));
 59 			mat->SetSchlickParams(0.269f, 0.9f, 0.1f);
 60 		}
 61 		else if (materialname == "Glasbruecke"
 62 		      || materialname == "Flasche")
 63 		{
 64 			mat = new Material(Vec3f(0.7f,1.0f,0.9f));
 65 			mat->SetTransparencyParams(1.0f,1.5f,0.1f);
 66 			mat->SetMirrorParams(0.0f, 0.3f);
 67 			mat->SetSchlickParams(0.04f, 0.9f, 0.5f);
 68 			
 69 		}
 70 		else if (materialname == "Fensterscheibe")
 71 		{
 72 			mat = new Material(Vec3f(0.7f,1.0f,0.9f));
 73 			mat->SetTransparencyParams(1.0f,1.0f,0.1f);
 74 			mat->SetMirrorParams(0.0f, 0.3f);
 75 			mat->SetSchlickParams(0.04f, 0.9f, 0.5f);
 76 			
 77 		}
 78 		else if (materialname == "FensterscheibeHi")
 79 		{
 80 			mat = new Material(Vec3f(0.7f,1.0f,0.9f));
 81 			mat->SetTransparencyParams(1.0f,1.0f,0.1f);
 82 			mat->SetMirrorParams(0.0f, 0.3f);
 83 			mat->SetSchlickParams(0.04f, 0.9f, 0.5f);
 84 			
 85 		}
 86 		else if (materialname == "Hauswaende")
 87 		{
 88 			mat = new Material(Vec3f(1.0f));
 89 			mat->SetSchlickParams(0.3f, 0.3f, 0.5f);
 90 			mat->procedural.push_back(new ProceduralPaper(true,false,40,Vec3f(0.95f,0.95f,0.95f),Vec3f(0.85f,0.85f,0.85f)));
 91 		}
 92 		else if (materialname == "HauswaendeBalken"
 93 		      || materialname == "KommodeHolz"
 94 		      || materialname == "Drumstaender")
 95 		{
 96 			mat = new Material(Vec3f(1.0f));
 97 			mat->SetSchlickParams(0.3f, 0.3f, 0.5f);
 98 			mat->procedural.push_back(new ProceduralWood(true, true, Vec3f(0), Vec3f(1.0,0.3,0.4), 0.05f, 0.3f, 3.0f,
 99 			                                             Vec3f(0.33,0.22,0.02), Vec3f(0.17,0.12,0.01)));
100 		}
101 		else if (materialname == "Klappstuhlsitz"
102 		      || materialname == "Rundmatte")
103 		{
104 			mat = new Material(Vec3f(1.0f));
105 			mat->SetSchlickParams(0.2f, 0.2f, 0.9f);
106 			mat->procedural.push_back(new ProceduralPaper(true,false,40,Vec3f(0.56f,0.04f,0.04f),Vec3f(0.28f,0.02f,0.02f)));
107 		}
108 		else if (materialname == "Koi"
109 		      || materialname == "Koi_KoiT.bmp")
110 		{
111 			mat = new Material(Vec3f(1.0f));
112 			mat->SetSchlickParams(0.2f, 0.2f, 0.9f);
113 			mat->procedural.push_back(new ProceduralGranite(true, false, 35, Vec3f(0.9), Vec3f(1.0,0.45,0.27)));
114 		}
115 		else if (materialname == "KommodeHolzSchublad"
116 		      || materialname == "Klappstuhl"
117 		      || materialname == "Spiegelstaender"
118 		      || materialname == "Drumsticks"
119 		      || materialname == "Reistopf")
120 		{
121 			mat = new Material(Vec3f(1.0f));
122 			mat->SetSchlickParams(0.3f, 0.1f, 0.9f);
123 			mat->procedural.push_back(new ProceduralWood(true, true, Vec3f(1.234f), Vec3f(0.1,0.2,1.0), 0.05f, 0.1f, 3.0f,
124 			                                             Vec3f(0.76f,0.69f,0.40f), Vec3f(0.68,0.60,0.28)));
125 		}
126 		else if (materialname == "Papierlampe"
127 		      || materialname == "KommodeGriffe"
128 		      || materialname == "Drumverzierung"
129 		      || materialname == "Drumgriffumrandung")
130 		{
131 			mat = new Material(Vec3f(0.95f,0.84f,0.55f));
132 			mat->SetSchlickParams(0.269f, 0.9f, 0.1f);
133 			mat->SetMirrorParams(0.8,1.0);
134 		}
135 		else if (materialname == "Papierschirm")
136 		{
137 			mat = new Material(Vec3f(1.0));
138 			mat->SetSchlickParams(0.3f, 0.1f, 0.9f);
139 			mat->SetTransparencyParams(0.5,1.0,1.0);
140 			mat->procedural.push_back(new ProceduralPaper(true,false,40));
141 			mat->SetSubsurfaceScattering(0.4);
142 		}
143 		else if (materialname == "Pfeife")
144 		{
145 			mat = new Material(Vec3f(0.87f,0.84f,0.74f));
146 			mat->SetSchlickParams(0.269f, 0.9f, 0.1f);
147 			mat->procedural.push_back(new ProceduralGranite(true, false, 60));
148 		}
149 		else if (materialname == "Pflanzenblaetter1")
150 		{
151 			mat = new Material(Vec3f(0.31f,0.40f,0.0f));
152 			mat->SetTransparencyParams(0.0);
153 			mat->SetSchlickParams(0.3f, 0.3f, 0.5f);
154 		}
155 		else if (materialname == "Pflanzenblaetter2")
156 		{
157 			mat = new Material(Vec3f(0.51f,0.60f,0.21f));
158 			mat->SetTransparencyParams(0.0);
159 			mat->SetSchlickParams(0.3f, 0.3f, 0.5f);
160 		}
161 		else if (materialname == "Pflanzenerde")
162 		{
163 			mat = new Material(Vec3f(0.50f,0.38f,0.22f));
164 			mat->SetSchlickParams(0.3f, 0.3f, 0.5f);
165 			mat->procedural.push_back(new ProceduralWater(0.3, Vec3f(1,1,0)));
166 		}
167 		else if (materialname == "Pflanzenstamm")
168 		{
169 			mat = new Material(Vec3f(0.61f,0.70f,0.44f));
170 			mat->SetSchlickParams(0.3f, 0.3f, 0.5f);
171 			mat->procedural.push_back(new ProceduralGranite(true, false, 60));
172 		}
173 		else if (materialname == "Pflanzentopf"
174 		      || materialname == "Essensschale"
175 		      || materialname == "Dumplingteller")
176 		{
177 			mat = new Material(Vec3f(1.0f));
178 			mat->SetMirrorParams(0.3f,0.5f);
179 			mat->SetSchlickParams(0.269f, 0.9f, 0.1f);
180 		}
181 		else if (materialname == "Reisbaelle")
182 		{
183 			mat = new Material(Vec3f(0.9f));
184 			mat->SetSchlickParams(0.3f, 0.1f, 0.9f);
185 		}
186 		else if (materialname == "Reisballschale")
187 		{
188 			mat = new Material(Vec3f(0.9f));
189 			mat->SetSchlickParams(0.1189f, 0.8f, 0.6f);
190 			mat->SetMirrorParams(0.5);
191 		}
192 		else if (materialname == "Sandalen")
193 		{
194 			mat = new Material(Vec3f(0.84f,0.72f,0.47f));
195 			mat->SetSchlickParams(0.3f, 0.1f, 0.9f);
196 		}
197 		else if (materialname == "Sandalenaufsatz")
198 		{
199 			mat = new Material(Vec3f(0.67f,0.58f,0.38f));
200 			mat->SetSchlickParams(0.3f, 0.1f, 0.9f);
201 		}
202 		else if (materialname == "Sitzmatte")
203 		{
204 			mat = new Material(Vec3f(1.0f));
205 			mat->SetSchlickParams(0.3f, 0.1f, 0.9f);
206 			mat->procedural.push_back(new ProceduralCarpet(true, true, 50, 0.2, Vec3f(1.0f,0.0f,0.0f)));
207 		}
208 		else if (materialname == "SitzmatteUmrandung")
209 		{
210 			mat = new Material(Vec3f(1.0f));
211 			mat->SetSchlickParams(0.33f, 0.22f, 0.02f);
212 		}
213 		else if (materialname == "Spiegel"
214 		      || materialname == "Reisloeffel")
215 		{
216 			mat = new Material(Vec3f(0.7f,1.0f,0.8f));
217 			mat->SetMirrorParams(1.0);
218 		}
219 		else if (materialname == "Wasser")
220 		{
221 			mat = new Material(Vec3f(0.7f,1.0f,0.8f));
222 			mat->SetTransparencyParams(1.0f,1.333f,0.1f);
223 			mat->SetSchlickParams(0.02f, 0.9f, 0.5f);
224 			mat->procedural.push_back(new ProceduralWater(0.7, Vec3f(1,1,0)));
225 		}
226 		else
227 		{
228 			mat = new Material(Vec3f(1.0,0.0,0.0));
229 			mat->SetSchlickParams(0.3f, 0.6f, 0.5f);
230 		}
231 		return mat;
232 	};
233 
234 	virtual ~HouseMaterialDescription(){};
235 };
236 
237 #endif


syntax highlighted by Code2HTML, v. 0.9.1