@@ -52,8 +52,15 @@ def __init__(self, name, is_default=False):
5252 self .ambient = [.2 , .2 , .2 , 1. ]
5353 self .specular = [0. , 0. , 0. , 1. ]
5454 self .emissive = [0. , 0. , 0. , 1. ]
55+ self .transparency = 1.0
5556 self .shininess = 0.
56- self .texture = None
57+ self .texture = None # diffuse
58+ self .texture_ambient = None
59+ self .texture_specular_color = None
60+ self .texture_specular_highlight = None
61+ self .texture_alpha = None
62+ self .texture_bump = None
63+
5764 self .is_default = is_default
5865
5966 # Interleaved array of floats in GL_T2F_N3F_V3F format
@@ -62,11 +69,6 @@ def __init__(self, name, is_default=False):
6269
6370 self .gl_floats = None
6471
65- @property
66- def file (self ):
67- """File with full path"""
68- return os .path .join (self .path , self .name )
69-
7072 @property
7173 def has_normals (self ):
7274 return "N3F" in self .vertex_format
@@ -95,7 +97,7 @@ def pad_light(self, values):
9597
9698 def set_alpha (self , alpha ):
9799 """Set alpha/last value on all four lighting attributes."""
98- alpha = float ( alpha )
100+ self . transparency = alpha
99101 self .diffuse [3 ] = alpha
100102 self .ambient [3 ] = alpha
101103 self .specular [3 ] = alpha
@@ -116,6 +118,21 @@ def set_emissive(self, values=None):
116118 def set_texture (self , path ):
117119 self .texture = Texture (path )
118120
121+ def set_texture_ambient (self , path ):
122+ self .texture_ambient = Texture (path )
123+
124+ def set_texture_specular_color (self , path ):
125+ self .texture_specular_color = Texture (path )
126+
127+ def set_texture_specular_highlight (self , path ):
128+ self .texture_specular_highlight = Texture (path )
129+
130+ def set_texture_alpha (self , path ):
131+ self .texture_alpha = Texture (path )
132+
133+ def set_texture_bump (self , path ):
134+ self .texture_bump = Texture (path )
135+
119136 def unset_texture (self ):
120137 self .texture = None
121138
@@ -166,24 +183,57 @@ def parse_Ns(self):
166183
167184 @auto_consume
168185 def parse_d (self ):
169- self .this_material .set_alpha (self .values [1 ])
186+ """Transparency"""
187+ self .this_material .set_alpha (float (self .values [1 ]))
188+
189+ @auto_consume
190+ def parse_Tr (self ):
191+ """Transparency (alternative)"""
192+ self .this_material .set_alpha (1.0 - float (self .values [1 ]))
170193
171194 @auto_consume
172195 def parse_map_Kd (self ):
196+ """Diffuse map"""
173197 Kd = os .path .join (self .dir , " " .join (self .values [1 :]))
174198 self .this_material .set_texture (Kd )
175199
176200 @auto_consume
177- def parse_Ni (self ):
178- # unimplemented
179- pass
201+ def parse_map_Ka (self ):
202+ """Ambient map"""
203+ Kd = os .path .join (self .dir , " " .join (self .values [1 :]))
204+ self .this_material .set_texture_ambient (Kd )
180205
181206 @auto_consume
182- def parse_Tr (self ):
183- # unimplemented
207+ def parse_map_Ks (self ):
208+ """Specular color map"""
209+ Kd = os .path .join (self .dir , " " .join (self .values [1 :]))
210+ self .this_material .set_texture_specular_color (Kd )
211+
212+ @auto_consume
213+ def parse_map_Ns (self ):
214+ """Specular color map"""
215+ Kd = os .path .join (self .dir , " " .join (self .values [1 :]))
216+ self .this_material .set_texture_specular_highlight (Kd )
217+
218+ @auto_consume
219+ def parse_map_d (self ):
220+ """Aplha map"""
221+ Kd = os .path .join (self .dir , " " .join (self .values [1 :]))
222+ self .this_material .set_texture_alpha (Kd )
223+
224+ @auto_consume
225+ def parse_map_bump (self ):
226+ """Bump map"""
227+ Kd = os .path .join (self .dir , " " .join (self .values [1 :]))
228+ self .this_material .set_texture_bump (Kd )
229+
230+ def parse_bump (self ):
231+ self .parse_map_bump ()
232+
233+ @auto_consume
234+ def parse_Ni (self ):
184235 pass
185236
186237 @auto_consume
187238 def parse_illum (self ):
188- # unimplemented
189239 pass
0 commit comments