[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [32336] trunk/blender/release/scripts/io/ netrender: [#24123] Network render gives black images

Martin Poirier theeth at yahoo.com
Wed Oct 6 01:14:31 CEST 2010


Revision: 32336
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=32336
Author:   theeth
Date:     2010-10-06 01:14:31 +0200 (Wed, 06 Oct 2010)

Log Message:
-----------
[#24123] Network render gives black images

Error with buffer handling when reading response.

Also fix bug with blendfile relative path (wasn't converting them properly).

Modified Paths:
--------------
    trunk/blender/release/scripts/io/netrender/client.py
    trunk/blender/release/scripts/io/netrender/operators.py
    trunk/blender/release/scripts/io/netrender/slave.py

Modified: trunk/blender/release/scripts/io/netrender/client.py
===================================================================
--- trunk/blender/release/scripts/io/netrender/client.py	2010-10-05 22:32:29 UTC (rev 32335)
+++ trunk/blender/release/scripts/io/netrender/client.py	2010-10-05 23:14:31 UTC (rev 32336)
@@ -211,7 +211,7 @@
 
         address = "" if netsettings.server_address == "[default]" else netsettings.server_address
 
-        master.runMaster((address, netsettings.server_port), netsettings.use_master_broadcast, netsettings.use_master_clear, netsettings.path, self.update_stats, self.test_break)
+        master.runMaster((address, netsettings.server_port), netsettings.use_master_broadcast, netsettings.use_master_clear, bpy.path.abspath(netsettings.path), self.update_stats, self.test_break)
 
 
     def render_slave(self, scene):
@@ -236,10 +236,11 @@
             # reading back result
 
             self.update_stats("", "Network render waiting for results")
-
+            
+             
             requestResult(conn, job_id, scene.frame_current)
             response = conn.getresponse()
-            response.read()
+            buf = response.read()
 
             if response.status == http.client.NO_CONTENT:
                 new_job = True
@@ -248,13 +249,13 @@
 
                 requestResult(conn, job_id, scene.frame_current)
                 response = conn.getresponse()
-                response.read()
-
+                buf = response.read()
+                
             while response.status == http.client.ACCEPTED and not self.test_break():
                 time.sleep(1)
                 requestResult(conn, job_id, scene.frame_current)
                 response = conn.getresponse()
-                response.read()
+                buf = response.read()
 
             # cancel new jobs (animate on network) on break
             if self.test_break() and new_job:
@@ -271,18 +272,22 @@
             r = scene.render
             x= int(r.resolution_x*r.resolution_percentage*0.01)
             y= int(r.resolution_y*r.resolution_percentage*0.01)
+            
+            result_path = os.path.join(bpy.path.abspath(netsettings.path), "output.exr")
+            
+            folder = os.path.split(result_path)[0]
+            
+            if not os.path.exists(folder):
+                os.mkdir(folder)
 
-            f = open(os.path.join(netsettings.path, "output.exr"), "wb")
-            buf = response.read(1024)
+            f = open(result_path, "wb")
 
-            while buf:
-                f.write(buf)
-                buf = response.read(1024)
+            f.write(buf)
 
             f.close()
 
             result = self.begin_result(0, 0, x, y)
-            result.load_from_file(os.path.join(netsettings.path, "output.exr"))
+            result.load_from_file(result_path)
             self.end_result(result)
 
             conn.close()

Modified: trunk/blender/release/scripts/io/netrender/operators.py
===================================================================
--- trunk/blender/release/scripts/io/netrender/operators.py	2010-10-05 22:32:29 UTC (rev 32335)
+++ trunk/blender/release/scripts/io/netrender/operators.py	2010-10-05 23:14:31 UTC (rev 32336)
@@ -417,7 +417,7 @@
             for frame in job.frames:
                 client.requestResult(conn, job.id, frame.number)
                 response = conn.getresponse()
-                response.read()
+                buf = response.read()
 
                 if response.status != http.client.OK:
                     print("missing", frame.number)
@@ -425,12 +425,9 @@
 
                 print("got back", frame.number)
 
-                f = open(os.path.join(netsettings.path, "%06d.exr" % frame.number), "wb")
-                buf = response.read(1024)
+                f = open(os.path.join(bpy.path.abspath(netsettings.path), "%06d.exr" % frame.number), "wb")
 
-                while buf:
-                    f.write(buf)
-                    buf = response.read(1024)
+                f.write(buf)
 
                 f.close()
 

Modified: trunk/blender/release/scripts/io/netrender/slave.py
===================================================================
--- trunk/blender/release/scripts/io/netrender/slave.py	2010-10-05 22:32:29 UTC (rev 32335)
+++ trunk/blender/release/scripts/io/netrender/slave.py	2010-10-05 23:14:31 UTC (rev 32336)
@@ -21,6 +21,8 @@
 import subprocess, time
 import json
 
+import bpy
+
 from netrender.utils import *
 import netrender.model
 import netrender.repath
@@ -118,7 +120,7 @@
 
         slave_id = response.getheader("slave-id")
 
-        NODE_PREFIX = os.path.join(netsettings.path, "slave_" + slave_id)
+        NODE_PREFIX = os.path.join(bpy.path.abspath(netsettings.path), "slave_" + slave_id)
         if not os.path.exists(NODE_PREFIX):
             os.mkdir(NODE_PREFIX)
 





More information about the Bf-blender-cvs mailing list