folkertdev / freestyle-svg-exporter

a Blender addon for exporting stylized lines created by the Freestyle render engine to an SVG format.
54 stars 18 forks source link

Where does it export to again? Not able to find an exported svg. #9

Closed Meteor0id closed 6 years ago

Meteor0id commented 6 years ago

Made sure I have the latest version from this repository, made sure I have the default output path set in "user preferences > file > render output". Made sure the plugin is enabled and checked in the render tab. Have restarted blender to make sure all settings apply. Still, when rendering, only getting the png's had set to render but no svg anywhere I can find it.

Using blender on Windows 10.

folkertdev commented 6 years ago

The svg gets written to scene.render.frame_path (run that in the console to get a path, depends on defaults and your system).

Meteor0id commented 6 years ago

That returned "name 'scene' is not defined So I tried bpy.data.scene.render.filepath which also returned "obect BlendData has no attribute 'scene'" So I tried bpy.context.scene.render.filepath, which worked and returned the path defined in the renders tab (buth with escape slashes, so: 'C:\Blender render output\'. But I don't see the output file at that location after rendering.

Either it's not outputting at all, or its outputting elsewhere.

xuv commented 6 years ago

@Meteor0id It will certainly be in your /tmp (system temporary folder). That's where Blender stores it's files when they have not been saved or when the render output has not been defined.

Meteor0id commented 6 years ago

@xuv that is what I expected too, so that was the first place I looked. It is where other output was send before I defined a new path. But no .svg there either. On windows //tmp\ gets resolved as C:\tmp\ Still no idea where the output might have went, if there is any.

folkertdev commented 6 years ago

Sorry for the incomplete piece of code. When I (on linux) run the command

>>> bpy.context.scene.render.filepath
'/tmp/'

This value is set in the Properties at render > output.

Meteor0id commented 6 years ago

I have already succesfully ran the same command on Windows 10, whcih did indeed return the output path. However no svg file is at that location, not after redering an image nor after rendering an animation.

Is it possible the plugin fails to properly escape the Windows filepath, or uses the wrong kind of slashes somethere?

I have not gone though the python involved, as I have much on my hands at the time.

folkertdev commented 6 years ago

The relevant code is here

def create_path(scene):
    """Creates the output path for the svg file"""
    dirname = os.path.dirname(scene.render.frame_path())
    basename = bpy.path.basename(scene.render.filepath)
    if scene.svg_export.mode == 'FRAME':
        frame = "{:04d}".format(scene.frame_current)
    else:
        frame = "{:04d}-{:04d}".format(scene.frame_start, scene.frame_end)
    return os.path.join(dirname, basename + frame + ".svg")

Handling path names in a cross-platform way is tricky, but I don't see anything that could go wrong here. It might also be some sort of permissions issue. Did you run blender in console mode, and did it throw any exceptions/warnings there?

Meteor0id commented 6 years ago

I tried all sorts of things. I ran blender with administrator privileges both the gui and the comand line, still no sign of the add-on outputing anything, not even a warning or error.

I have no idea how to even check if it is being run.

Meteor0id commented 6 years ago

I have to also enable freestyle itself don't I? :\ Yup, now I see an svg.

Lets document this clearly? Idiots like me don't catch up on that on their first 10 attempts.

everything works perfectly after simply also checking freestyle itself. Thanks for this add-on it works great, as soon as I checked that box I had a working svg animation in less than a minute of rendering. Perfect.

folkertdev commented 6 years ago

Happy it works! Good luck with it.