Users can set their machine name to something containing non-ascii characters. In Python this currently causes problem due to
socket.gethostname() throwing UnicodeEncodingError. Work around this by not using platform.system() (which uses internally socket.gethostname()).
See http://www.pasteall.org/16215 for backtrace
netrender client's functions to get slaves and jobs info didn't work anymore (was reading response content twice).
At the same time, I switched to json for the dump and load, instead of using eval and repr (for obvious security reasons). I should have done this much earlier.
- made operator dir's into python packages
- lazy loading of module which do the actual import and export (faster blender load times)
- general maintanance and small fixes.
- bugfix for exporting x3d materials
- leak fix for exporting 3ds
Changed some names when applying.
- render was use_render, changed to show_viewport so call it show_render
- texface shadow was use_shadow_face, changed to use_shadow_cast since this only affects casting.
- transp was alpha_mode, changed to blend_type since its similar to other overlay blending where this property name is used.
slave use output log option correctly
use os.path.join more consistently (reported by Dalai Felinto)
unify frame range (was 4 digits on master, 6 elsewhere, now 6 everywhere).
Fix occasional broken pipe between master and slave (didn't affect result, just polluted log).
also made all other exporters do this.
Made some internal changes.
- moved path functions from bpy.utils to bpy.path (similar to os.path)
- added functions...
bpy.path.ensure_ext(path, ".ext", case_sensitive=False) # simple function to ensure the extension is set.
bpy.path.resolve_ncase(path) # useful for importing scenes made on windows where the path case doesnt match the files.
poll() function is now a static method in python, this is more correct, matching C where the operator is not created to run poll.
def poll(self, context): ...
is now...
@staticmethod
def poll(context): ...
Pythons way of doing static methods is a bit odd but cant be helped :|
This does make subclassing poll functions with COMPAT_ENGINES break, so had to modify quite a few scripts for this.
Note: this is tested and work with metaclass registering. If it doesn't work with registering lists (as currently in svn), I can still commit the metaclass method...
F8 key enabled again, useful for script UI development.
- keying set freeing wasnt freeing from all scenes and the builtin list.
- PointerProperty() cant refer to a removed python srna type (fixed in rigify and netrender).
- Added a check for freeing a type used by a PointerProperty but its very slow, makes reloading take ~10sec. Only enabled this in debug mode for now.
Netrender register() function isnt re-registering the property, probably because the module is cached by python and not re-run.
- Temporary fix for linked libs repathing (didn't work correctly when using relative links).
- autorefresh only for main page (on job page, it's really annoying because it keeps reseting results preview, so until that's fixed, off it is).
Save and Restore master from disk.
When the "clear on exit" option is off, write a data file (blender_master.data) in the master's path on exit and reads it back on load.
Note: Jobs and Slaves lists are restored, but not balancer settings (problem with the pickle module).
path -> filepath (for rna and operators, as agreed on with elubie)
path -> data_path (for windowmanager context functions, this was alredy used in many places)
Repath functionality: Edit paths in blend file on slaves to match the transfered files.
Tested with textures and point caches. Fluid should work. Point Caches with the External option might not.
This should fix previous problems when using absolute paths in blend files.
- multires cache files and image .tex cache support in dependency list
- Compare md5 of files before using a local copy (not one transfered by netrender). Could be changed to a simpler CRC if speed is an issue. The goal is not to have a strong crypto signature but just to detect outdated local files.
- Reduce slave timeout to 5 minutes (down from 30). Slaves should report at most every 30s, there's no reason for a value to be that high.
- Reorder the presentation tables on the main web page (job list is more important)
- Collapse dependency list by default on job page (only show main file and headers for other files, point cache and fluid cache)
- Slave option (default: True) to also output render log to the console (as well as the usual copy to the master)
* Client connection is made from panel poll functions even if
netrender is disabled
* Network render slave should print when it has connected to server,
now it says "node initiation", I initially thought this meant it was
not connected yet.
* Web interface should auto-refresh, I got confused if job and slaves
were actually found or not.
Also force post process off.
This is a partial fix for Bug [#21410], there is still the problem that loading back multilayer exr as render results doesn't load the composited result correctly (bug is assigned to Brecht). The results are still ok when downloaded outside of the render engine, so there's a work around for now.
rename image.save() --> image.save_render() because it uses render settings for saving.
added image.save() which is like pressing save in the image view, saving to the images path and removing the dirty flag.