[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [21993] branches/blender2.5/blender/ release/io/engine_render_pov.py: - UVs weren't exported correctly.
Campbell Barton
ideasman42 at gmail.com
Tue Jul 28 21:32:46 CEST 2009
Revision: 21993
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=21993
Author: campbellbarton
Date: 2009-07-28 21:32:46 +0200 (Tue, 28 Jul 2009)
Log Message:
-----------
- UVs weren't exported correctly.
- check for user quit while povray is parsing the file.
- detect if povray cant parse the file and exit the render loop.
Modified Paths:
--------------
branches/blender2.5/blender/release/io/engine_render_pov.py
Modified: branches/blender2.5/blender/release/io/engine_render_pov.py
===================================================================
--- branches/blender2.5/blender/release/io/engine_render_pov.py 2009-07-28 19:32:38 UTC (rev 21992)
+++ branches/blender2.5/blender/release/io/engine_render_pov.py 2009-07-28 19:32:46 UTC (rev 21993)
@@ -62,8 +62,7 @@
color = tuple([c * lamp.energy for c in lamp.color]) # Colour is modified by energy
- file.write('light_source')
- file.write('{\n')
+ file.write('light_source {\n')
file.write('\t< 0,0,0 >\n')
file.write('\tcolor red %.6f green %.6f blue %.6f\n' % color)
@@ -365,8 +364,8 @@
# normal_indices indicies
file.write('\tnormal_indices {\n')
file.write('\t\t%d' % (len(me.faces) + quadCount)) # faces count
- for fi, f in enumerate(me.faces):
- fv = faces_verts[fi]
+ for fi, fv in enumerate(faces_verts):
+
if len(fv) == 4: indicies = (0,1,2), (0,2,3)
else: indicies = ((0,1,2),)
@@ -380,32 +379,27 @@
idx = uniqueNormals[faces_normals[fi]][0]
file.write(',\n\t\t<%d,%d,%d>' % (idx, idx, idx)) # vert count
-
file.write('\n }\n')
-
- # normal_indices indicies
-
if uv_layer:
file.write('\tuv_indices {\n')
file.write('\t\t%d' % (len(me.faces) + quadCount)) # faces count
- for f in me.faces:
- fv = faces_verts[fi]
+ for fi, fv in enumerate(faces_verts):
if len(fv) == 4: indicies = (0,1,2), (0,2,3)
else: indicies = ((0,1,2),)
uv = uv_layer[fi]
if len(faces_verts[fi])==4:
- uvs = uv.uv1, uv.uv2, uv.uv3, uv.uv4
+ uvs = tuple(uv.uv1), tuple(uv.uv2), tuple(uv.uv3), tuple(uv.uv4)
else:
- uvs = uv.uv1, uv.uv2, uv.uv3
+ uvs = tuple(uv.uv1), tuple(uv.uv2), tuple(uv.uv3)
for i1, i2, i3 in indicies:
file.write(',\n\t\t<%d,%d,%d>' %\
- (uniqueUVs[tuple(uvs[i1][0:2])][0],\
- uniqueUVs[tuple(uvs[i2][0:2])][0],\
- uniqueUVs[tuple(uvs[i2][0:2])][0])) # vert count
+ (uniqueUVs[uvs[i1]][0],\
+ uniqueUVs[uvs[i2]][0],\
+ uniqueUVs[uvs[i2]][0])) # vert count
file.write('\n }\n')
if me.materials:
@@ -508,8 +502,9 @@
def _cleanup(self):
for f in (self.temp_file_in, self.temp_file_ini, self.temp_file_out):
- try: os.remove(f)
- except: pass
+ #try: os.remove(f)
+ #except: pass
+ pass
self.update_stats("", "")
@@ -530,49 +525,58 @@
# Wait for the file to be created
while not os.path.exists(self.temp_file_out):
- time.sleep(self.DELAY)
-
- self.update_stats("", "POVRAY: Rendering")
-
- prev_size = -1
-
- def update_image():
- result = self.begin_result(0, 0, x, y)
- lay = result.layers[0]
- # possible the image wont load early on.
- try: lay.rect_from_file(self.temp_file_out, 0, 0)
- except: pass
- self.end_result(result)
-
- # Update while povray renders
- while True:
+ if self.test_break():
+ try: self.process.terminate()
+ except: pass
+ break
- # test if povray exists
if self.process.poll() != None:
- update_image();
+ self.update_stats("", "POVRAY: Failed")
break
- # user exit
- if self.test_break():
- try: # It might not be running
- self.process.terminate()
- except:
- pass
-
- break
+ time.sleep(self.DELAY)
+
+ if os.path.exists(self.temp_file_out):
- # Would be nice to redirect the output
- # stdout_value, stderr_value = self.process.communicate() # locks
+ self.update_stats("", "POVRAY: Rendering")
+ prev_size = -1
- # check if the file updated
- new_size = os.path.getsize(self.temp_file_out)
+ def update_image():
+ result = self.begin_result(0, 0, x, y)
+ lay = result.layers[0]
+ # possible the image wont load early on.
+ try: lay.rect_from_file(self.temp_file_out, 0, 0)
+ except: pass
+ self.end_result(result)
- if new_size != prev_size:
- update_image()
- prev_size = new_size
-
- time.sleep(self.DELAY)
+ # Update while povray renders
+ while True:
+
+ # test if povray exists
+ if self.process.poll() != None:
+ update_image();
+ break
+
+ # user exit
+ if self.test_break():
+ try: self.process.terminate()
+ except: pass
+
+ break
+
+ # Would be nice to redirect the output
+ # stdout_value, stderr_value = self.process.communicate() # locks
+
+
+ # check if the file updated
+ new_size = os.path.getsize(self.temp_file_out)
+
+ if new_size != prev_size:
+ update_image()
+ prev_size = new_size
+
+ time.sleep(self.DELAY)
self._cleanup()
More information about the Bf-blender-cvs
mailing list