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