Giter Club home page Giter Club logo

blender_screenwriter's Introduction

Blender Screenwriter & Screenplayer

Screenwriter and automatic previz/animatic generation.

Demo of Main Features

Img alt text

Features

Screenwriter

  • Write screenplays in Blender Text Editor.
  • Get live preview of screenplay formatting.
  • Use the simple fountain markup syntax.
  • Open as Fountain.
  • Save as Fountain.
  • Change font(for preview).
  • Insert Title Page.
  • Insert scene numbers.
  • Correct caps.
  • Insert [[SHOT: ]] note/comment - will generate a camera in the scene.
  • ">my action<" will center action.
  • ">" will force transition.
  • "@" will force character(may not be supported by all fountain parsers).
  • "." will force scene header.
  • Export to pdf.
  • Export to fdx(Final Draft).
  • Export to Html.

Screenplayer

  • Script to Screen sequence generation.
  • Assign 3d objects to screenplay keywords.
  • Extract screenplay data and timings.
  • Create a sequence with scene headings, action and dialogue as timed text strips.
  • Generate scenes for each screenplay scene.
  • Populated scenes with 3d objects assigned to words in the screenplay scene, where the words appear.
  • If more cameras are assigned to a scene, scene strips pointing to cameras and a multicam strip will be added to the master edit.
  • Generate cameras for each [[SHOT: ]] note/comment in the scenes where they appear.
  • Switch to the 3d scene based on the position of the screenplay scene.
  • Switch back to the master edit scene.

Mindmap

Blender_.C__Users_45239_Documents_Blender.Projekter_Add-ons_Mural_send_to_mural_01.blend.2023-04-27.10-58-51.mp4

How to Install

Use Blender 2.82 Beta or higher.

Download the repository as zip and use the normal Blender installation procedure.

In the Text Editor Sidebar you'll find the Screenwriting buttons. They'll be disabled until you save a text-block with a .fountain extention or open .fountain a file.

To export the Screenplain[PDF] module https://github.com/vilcans/screenplain is needed. It should install automatic, but if installation fails on GNU/Linux, it can be installed with 2 commands in the terminal:

  • '/INSTALLED_BLENDER_PATH/2.81/python/bin/python3.7m' -m ensurepip
  • '/INSTALLED_BLENDER_PATH/2.81/python/bin/python3.7m' -m pip install screenplain[PDF]

Alternatively this add-on can be used for module installation in Blender: https://github.com/amb/blender_pip/releases

Test Screenplay Files

https://fountain.io/_downloads/Big%20Fish.fountain

https://fountain.io/_downloads/Brick%20&%20Steel.fountain

https://fountain.io/_downloads/The%20Last%20Birthday%20Card.fountain

Fountain Syntax

https://github.com/derickc/Fountainhead#fountain-syntax

For a complete overview of the Fountain syntax, go to http://fountain.io/syntax.

Scene Headings

To indicate a new scene, start a new line and type the location of the scene in all caps. For example:

INT. COFFEE SHOP - DAY

Action

This is where you describe what is happening in the scene. Start a new line and type your action description in plain text. For example:

John walks into the coffee shop and orders a latte.

Dialogue

To indicate dialogue, start a new line and type the character's name in all caps, followed by a period. Then, type the dialogue in plain text. For example:

JOHN
Can I get a latte, please?

Parentheticals

If you need to indicate how a line of dialogue is spoken, you can use a parenthetical. Start a new line and type the character's name in all caps, followed by a period. Then, type the parenthetical in parentheses, followed by the dialogue in plain text. For example:

JOHN
(sarcastic)
Great, just what I needed.

Transitions

To indicate a transition between scenes, start a new line and type the transition in all caps. For example:

CUT TO:

Title Page

The Title Page holds metadata by Key Value pairs that are separated by : Each key can have multiple values by placing them on newlines that are indented 3+ spaces or by a tab

Fountain Element Example
Title: Title: Title
Credit: Credit: Written by
Author: Author: Author Name(s)
Source: Source: Story by...
Draft date: Draft date: Date
Contact: Contact: Contact Info

After dropping to enters the Title Page is followed by the sceenplay elements.

Not all of the following Fountain options are implemented in Blender Screenwriter or the export parsers used.

Fountain Element Example
Sections One # or more at the start of the line
"Act" Section # at start of the line defines a Act section
"Sequence" Section ## at start of the line defines a Sequence section
"Scene" Section ### at start of the line defines a Scene section
Scene Headings . at start of the line forces a Scene Heading. Using INT., EXT., EST., INT./EXT., INT/EXT, I/E at start of line interprets it also as a Scene Heading
Scene Numbers #Scene Number# at the END of the Scene Heading
Action ! at start of the line forces Action or have a paragraph of text with an empty line before and after it
Character @ at start of the line forces Character even for characters with lowercase letter or an all uppercase line with empty line before and no empty line after
Character Extensions (O.S., V.O., CONT'D) at the END of the Character line
Parenthetical Lines of (Parenthetical Text) that are beneath Character or Dialogue lines
Dialogue Lines of text that are beneath Character or Parenthetical lines
Dual Dialogue ^ at the END of the SECOND Character line
Lyrics ~ at the start of the line
Transitions > at start of the line forces a Transition or use FADE IN:, FADE OUT., FADE TO BLACK., alternatively an all uppercase line that ends with: TO:

Comments in the screenplay

Fountain Element Example or Definition Explanation
Synopses Start line with: = invisible text intended as writing aid for metadata
Notes [[Note Text]] invisible text intended for external stakeholders
Boneyard /*Boneyard Text*/ invisible text intended for writer

Styling of sceenplay text

Fountain Element Example or Definition Explanation
Centered Text >Centered Text< -
Page Breaks === Line that only contains three or more consecutive equal signs:
Line Breaks \r\n Lines can be broken up by using carriage returns
Italics *Italic Text* -
Bold **Bold Text** -
Bold Italics ***Bold Italic Text*** -
Underline _Underline Text_ Differs from markdown by not being strikethrough
* \* Special characters can be escaped by prefixing them with a \

Fountain example:

Title:
    Title 1
    Title 2
Credit: Written by
Author: Author name
Source: Story by...
Draft date: 12/10/2014
Contact:
    Contact Info
    Address Line 1
    Address Line 2

# Act 1

= The introduction of Character

EXT. HOUSE - DAY

Some action text.

CHARACTER
(parenthetical)
Dialogue.

CUT TO:

.Scene Heading

More Blender Screenwriter utility add-ons

Add searchable markers for outlining and navigating the text: https://github.com/tin2tin/TextMarker-blender-addon

Adding markers and writing timed script into the 3D View: https://github.com/philippe-lavoie/blender-fountain-addon

Switch cameras in 3D View from Sequencer: https://github.com/tin2tin/scene_strip_tools

Switch to the scene of the Scene strip: https://github.com/tin2tin/VSESwitchToScene

Link text from TExt strip to text in 3D View: https://github.com/gabrielmontagne/blender-addon-link-text-to-vse-subtitle

Split text to node editor frames: https://github.com/gabrielmontagne/blender-addon-split-frame-from-text

Link text to node editor frames: https://github.com/gabrielmontagne/blender-addon-link-text-to-frame

About

This add-on utilizes a fountain script parser, which converts .fountain files to python object. The Fountain screenplay format is by Nima Yousefi & John August; original code for Objective-C at https://github.com/nyousefi/Fountain. It is ported to Python 3 by Colton J. Provias, improved by Manuel Senfft https://github.com/Tagirijus/fountain. The Screenplain module by Martin Vilcans is used for exports https://github.com/vilcans/screenplain.

blender_screenwriter's People

Contributors

b4zz4 avatar samytichadou avatar tin2tin avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

blender_screenwriter's Issues

Linux export - installation of Screenplain fails

Hi, tested the export but there is an error about the module screenplain:
Tested in 2.81 ( GNU/Linux)

Traceback (most recent call last):
  File "/home/linux/.config/blender/2.81/scripts/addons/Blender_Screenwriter.py", line 534, in screenplay_export
    import screenplain
ModuleNotFoundError: No module named 'screenplain'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/linux/App/blender-2.81-0a0d735acd6e-linux-glibc217-x86_64/2.81/python/lib/python3.7/urllib/request.py", line 1317, in do_open
    encode_chunked=req.has_header('Transfer-encoding'))
  File "/home/linux/App/blender-2.81-0a0d735acd6e-linux-glibc217-x86_64/2.81/python/lib/python3.7/http/client.py", line 1244, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "/home/linux/App/blender-2.81-0a0d735acd6e-linux-glibc217-x86_64/2.81/python/lib/python3.7/http/client.py", line 1290, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
  File "/home/linux/App/blender-2.81-0a0d735acd6e-linux-glibc217-x86_64/2.81/python/lib/python3.7/http/client.py", line 1239, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
  File "/home/linux/App/blender-2.81-0a0d735acd6e-linux-glibc217-x86_64/2.81/python/lib/python3.7/http/client.py", line 1026, in _send_output
    self.send(msg)
  File "/home/linux/App/blender-2.81-0a0d735acd6e-linux-glibc217-x86_64/2.81/python/lib/python3.7/http/client.py", line 966, in send
    self.connect()
  File "/home/linux/App/blender-2.81-0a0d735acd6e-linux-glibc217-x86_64/2.81/python/lib/python3.7/http/client.py", line 1414, in connect
    server_hostname=server_hostname)
  File "/home/linux/App/blender-2.81-0a0d735acd6e-linux-glibc217-x86_64/2.81/python/lib/python3.7/ssl.py", line 423, in wrap_socket
    session=session
  File "/home/linux/App/blender-2.81-0a0d735acd6e-linux-glibc217-x86_64/2.81/python/lib/python3.7/ssl.py", line 870, in _create
    self.do_handshake()
  File "/home/linux/App/blender-2.81-0a0d735acd6e-linux-glibc217-x86_64/2.81/python/lib/python3.7/ssl.py", line 1139, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1076)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/linux/.config/blender/2.81/scripts/addons/Blender_Screenwriter.py", line 513, in execute
    self.open_browser)
  File "/home/linux/.config/blender/2.81/scripts/addons/Blender_Screenwriter.py", line 543, in screenplay_export
    urllib.urlretrieve(url, home_url + 'screenplain-0.8.0.zip')
  File "/home/linux/App/blender-2.81-0a0d735acd6e-linux-glibc217-x86_64/2.81/python/lib/python3.7/urllib/request.py", line 247, in urlretrieve
    with contextlib.closing(urlopen(url, data)) as fp:
  File "/home/linux/App/blender-2.81-0a0d735acd6e-linux-glibc217-x86_64/2.81/python/lib/python3.7/urllib/request.py", line 222, in urlopen
    return opener.open(url, data, timeout)
  File "/home/linux/App/blender-2.81-0a0d735acd6e-linux-glibc217-x86_64/2.81/python/lib/python3.7/urllib/request.py", line 525, in open
    response = self._open(req, data)
  File "/home/linux/App/blender-2.81-0a0d735acd6e-linux-glibc217-x86_64/2.81/python/lib/python3.7/urllib/request.py", line 543, in _open
    '_open', req)
  File "/home/linux/App/blender-2.81-0a0d735acd6e-linux-glibc217-x86_64/2.81/python/lib/python3.7/urllib/request.py", line 503, in _call_chain
    result = func(*args)
  File "/home/linux/App/blender-2.81-0a0d735acd6e-linux-glibc217-x86_64/2.81/python/lib/python3.7/urllib/request.py", line 1360, in https_open
    context=self._context, check_hostname=self._check_hostname)
  File "/home/linux/App/blender-2.81-0a0d735acd6e-linux-glibc217-x86_64/2.81/python/lib/python3.7/urllib/request.py", line 1319, in do_open
    raise URLError(err)
urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1076)>

location: <unknown location>:-1

location: <unknown location>:-1

PDF export does not format correctly

The addon seems to have issues formatting when exporting to PDF. I'm using the Git version of the addon, with Blender 2.93.0.

EDIT: I tried it with HTML export too, and it's the same issue.

image

Make timing of scenes more accurate

Currently the timing is calculated against number of lines, but the length of the lines are not taken into account. This needs to be done for optimal precision.

Numbered and unnumbered scenes

  • In the numbered scenes repeating stage, only a scene is created and repeated in the timeline (out of time)
  • Unnumbered scenes: new scenes are created 0001, 0002, etc.

Blender 3.2

Toggle Preview needs rewrite for 2.81+

The current Toggle Preview code only works in 2.80.

area_join seems to have been changed. This used to work(pre 2.80): bpy.ops.screen.area_join(min_x=thisarea.x, min_y=thisarea.y, max_x=otherarea.x, max_y=otherarea.y). Now it is causing this error: TypeError: Converting py args to operator properties: : keyword "min_x" unrecognized. How do I use this python operator post 2.80? There seems to be a cursor=(x,y) option, but setting x&y to the lower left corner of an area, makes Blender crash or areas blink uncontrolled?

Harleya writes: That cursor position should be an x an y that is just within a tolerance near the boundary of two areas. The old values were just the same but expanded out around that point.
It used to be that we’d start from cursor position, expand that out to a square, and send that along to area-join to figure out what areas are involved. Now we send that cursor position to area-join and the same thing happens.
in the end it is just trying to find the neighbouring areas. But using any corner could be problematic because that could identify the wrong area. There could be four areas nearby when we are just trying to get two.
Right now it is designed for interactive mouse-based selection of the two areas. So imaging making a square around the cursor position in order to find what areas are close by...
image
In the above the top-right one will find the two areas you want to join. So will the bottom one. But the top-left one will assume you want to join to the left
So the existing code should work perfectly (unless I'm wrong LOL) if you move that cursor position out of that "bottom corner". If joining two areas horizontally the absolute ideal place is between them at a place that is vertically centered. So trying to avoid that top-left position in my capture, but going for something like the other two
This should for a horizontal join as you've illustrated, assuming that thisarea is on left, otherarea is on right:
bpy.ops.screen.area_join(cursor.x=otherarea.x, cursor.y=otherarea.y+50)
although can't recall how it knows which area to go to and from. There is a "dir" or "direction" in there isn't there?

Assets Resources

I don't think we should include assets in our download, but still it might be good to have some for testing and showcasing, so let's collect links to assets here.

Maybe we should think the assets in 3 styles:

  • Realistic
  • Stylized
  • Grease Pencil Drawings/Cardboard

People:
image
https://sketchfab.com/3d-models/wip-lowpoly-people-2-4cf6f452719c4363bab5faddbc221391

image
https://sketchfab.com/3d-models/wip-lowpoly-people-1-8cfd467af4334ea384d854109865f939

Characters:
image
https://sketchfab.com/3d-models/lowpoly-aztec-pack-8e4f0a3ca8d94e4d91b551ce721a2ada

image
https://kenney.nl/assets/animated-characters

Furniture:
image
https://kenney.nl/assets/furniture-kit

image
https://sketchfab.com/3d-models/rick-and-morty-assets-from-smith-residence-0a03fe19a2514ec6aaa1516ab20bcbea

image
https://sketchfab.com/3d-models/rick-and-morty-c-137-smith-residence-fdc6a442de534ed8b68e01129a5d47f5

Transportation:
image
https://sketchfab.com/scailman/collections/transportation

Location:
image
https://sketchfab.com/3d-models/categories/places-travel?features=downloadable&sort_by=-likeCount

image
https://sketchfab.com/3d-models/low-poly-winter-scene-2ffe1ed449414cc184078dd1e2882284

image
https://sketchfab.com/3d-models/classic-dinner-1ad30e0585f545229e5f8ffdb715f92f

image
https://sketchfab.com/3d-models/props-scene-5-city-related-props1dae06-04b6c548f10e41cdb2cc8930e3d6f6f2

image
https://sketchfab.com/3d-models/positano-cityscene-c8a34444b11742b79f8852e5a41f3a39

image

https://sketchfab.com/3d-models/l-p-shark-cage-diving-scene-5bf4fcbbc6ea40b69c734f54180fa38c

image
https://sketchfab.com/3d-models/low-poly-ufo-scene-207cb85b20a5430eb636966d408f1bd0

Backgrounds:
image
https://kenney.nl/assets/background-elements-redux

image
https://kenney.nl/assets/background-elements

Good asset artists:
https://sketchfab.com/burunduk

scenes_to_strips operator could mess with existing sequencer edit

This is not a bug, more a kind of feature request.

It would be great to have a check done before adding strips to sequencer. If there are any strips from before, a warning should be raised and ask if the user want to delete it or cancel the operations, or even pick manually some sequencer channel to put the created strips

And in case the operator was already used, it should check if scenes already exists !

This will be such a great feature to use ! thanks a lot for it !

Problem to add camera

ERROR (wm.operator): /home/sources/buildbot-x86_64-slave/linux_glibc217_x86_64_cmake/blender.git/source/blender/windowmanager/intern/wm_event_system.c:1462 wm_operator_invoke: invalid operator call 'VIEW3D_OT_add_scene_strip'

overlap of dialog when creating scene strips

Hi, on linux 19.04 and blender 2.82 (-e5b788bad8bc-linux-glibc217-x86_64), when creating scene strips from the script you put in the latest zip release, i get some overlapping dialog at 01'05"02
image
Here's what it gives when putting the first dialog one channel up
I took a look at the script and i don't think it is wanted. Appart from that , this is a great tool sir ! thanks a lot !

Convert Script Scenes/Dialogue to Scene/Text Strips in the VSE

The basic idea is to collect all script headings and make a new scene for each, and add them to the sequencer master scene(current scene) as scene strips(or dialogue as text strips). The duration of the scene/text strips should be calculated against one script page(56 lines) equals 1 minute.

This is a feature which should go into a tab in the Sequencer Sidebar, where you would have to select what text-block from text Text Editor should be converted into scene strips.

Bay Raitt writes:
That screenplay editor in blender is so awesome I thought I'd share some of my code.

Since bender has the sequencer, and can create scene clips it makes sense that if fountain supports a "scene" concept it should generate a simple scene. you could even populate characters etc directly from the script.

To that end, I thought I'd share this. If the screenplay code generates a scene per scene call,

i.e.
bpy.ops.scene.new ()

then the code below will generate a scene strip and add every scene loaded as a scene strip clip.

class BR_OT_regenerate_scene_video(bpy.types.Operator):
    """remake video sequencer scene strip from all scenes"""
    bl_idname = "view3d.regenerate_scene_video"
    bl_label = "Regenerate Video"
    bl_options = {'REGISTER', 'UNDO'}

    def execute(self, context):
        main_scene = bpy.context.scene
        count = 0
        original_type = bpy.context.area.type

        for a in bpy.context.screen.areas:
            if a.type == 'SEQUENCE_EDITOR':
                if a.spaces[0].view_type == 'SEQUENCER':  
                    bpy.context.area.type ="SEQUENCE_EDITOR"
                    for scene in http://bpy.data.scenes :
                        if scene is not main_scene :
                            bpy.ops.sequencer.scene_strip_add(frame_start=count, channel=1, scene=bpy.data.scenes[count].name)
                            activeStrip = bpy.context.scene.sequence_editor.active_strip            
                            bpy.context.scene.sequence_editor.sequences_all[activeStrip.name].frame_final_duration = 1
                        count = count + 1
                    bpy.context.area.type = original_type
        return {'FINISHED'}

problem with preview

Hi, i installed the addon on ubuntu 19.04 and tried with blender 2.82 (-e5b788bad8bc-linux-glibc217-x86_64)
I have hard times to get a preview working, i opened the fountain script you provided in the zip of the last release, but when clicking on any of the 3 operators, i don't get anything and it raises no error at all.
The preview operator do get me a "wrong way" cursor which disappears when clicking or hitting esc key.
I don't have a good knowledge of the addon so far, what should happend when working correctly ? splitting the text editor to get a preview windows when hitting preview is that right ?

Created scenes don't respect source scene dimensions or framerate

First things first: this project is super cool. Thanks for making it.

Now, I have a main scene, on which I load the fountain file, which has special dimensions and framerate. When I run the "Create sequence" operator, the scenes are created with the default blender configuration, which is a, to me, random framerate and size. All the scenes are then squished, and when I switch to the scenes, the framerate is also off.

I hacked my version to my taste, but I'm not sure if there'd be a better, more elegant solution to this issue?

diff --git a/operators/scene_to_strip.py b/operators/scene_to_strip.py
index bcf0c23..8e0f30c 100644
--- a/operators/scene_to_strip.py
+++ b/operators/scene_to_strip.py
@@ -47,6 +47,7 @@ class TEXT_OT_scenes_to_strips(bpy.types.Operator):
         first_duration = 0
         render = bpy.context.scene.render
         fps = round((render.fps / render.fps_base), 3)
+
         count = 0
         f_collected = []
         duration = 0
@@ -58,13 +59,20 @@ class TEXT_OT_scenes_to_strips(bpy.types.Operator):
         for fc, f in enumerate(f_collected):
             if str(f.scene_number) != "": f.scene_number = f.scene_number+ " "
             name = str(f.scene_number + f.element_text.title())
+
             new_scene = bpy.data.scenes.new(name=name)
 
+            new_scene.render.fps_base = render.fps_base
+            new_scene.render.fps = render.fps
+            new_scene.render.resolution_x = render.resolution_x
+            new_scene.render.resolution_y = render.resolution_y
+
             cam = bpy.data.cameras.new("Camera")
-            cam.lens = 35
+            cam.lens = 50
             cam_obj1 = bpy.data.objects.new("Camera", cam)
-            cam_obj1.location = (9.69, -10.85, 12.388)
-            cam_obj1.rotation_euler = (0.6799, 0, 0.8254)
+            cam_obj1.location = (0.0, -5, 0.5)
+            cam_obj1.rotation_euler = (1.5707963705062866, 0.0, 0.0)
+
             new_scene.collection.objects.link(cam_obj1)
 
             if fc == 0:

Asset linking for auto insertion into created sequence

Now that it is possible to create a sequence with generated scenes and added subtitles, additional greatness would be to assign 3d assets to elements in the script like characters, locations, props, lightning setups, camera setups etc.

I did a quick update of eLinker to 2.80, there are still a few things which needs to be updated, but the coder will take a look this weekend:
image
https://github.com/EibrielInv/scripts

Maybe it could somehow be expanded to do the screenplay key element assigning and insertion?

Automatic installation of screenplain fails with `NameError: name 'subprocess' is not defined`

When tried to install the add-on in Blender 2.91 in Windows, I got this error when trying to enable it. It seems like there is an automatic install that fails because subprocess isn't imported.

  File "C:\Users\vilcans\AppData\Roaming\Blender Foundation\Blender\2.91\scripts\addons\Blender_Screenwriter-master\__init__.py", line 45, in <module>
    import screenplain.parsers.fountain as fountain
ModuleNotFoundError: No module named 'screenplain'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Program Files\Blender Foundation\Blender 2.91\2.91\scripts\modules\addon_utils.py", line 351, in enable
    mod = __import__(module_name)
  File "C:\Users\vilcans\AppData\Roaming\Blender Foundation\Blender\2.91\scripts\addons\Blender_Screenwriter-master\__init__.py", line 48, in <module>
    subprocess.check_call([pybin, '-m', 'pip', 'install', 'screenplain[PDF]'])
NameError: name 'subprocess' is not defined

As a workaround, I could install screenplain manually from the command line, and then I could enable the add-on.

When in Preview change mono-spaced font to Courier 12

In theory something like this should work on Windows:

        # setting font (on Windows)
        try:
            for a in bpy.context.screen.areas:
                if a.type == 'PREFERENCES': 
                    bpy.context.area.type ="PREFERENCES"
                    bpy.context.preferences.view.font_path_ui_mono("C:\\Windows\\Fonts\\Courier.ttf")
                    break
        except RuntimeError as ex:
            error_report = "\n".join(ex.args)
            print("Caught error:", error_report)
            #pass

But it doesn't. On top of this, finding the right folders for installed fonts isn't a trivial matter on Mac and Linux... And do all OS have Courier pre-installed?

Or should Courier Prime be installed with the Screenwriter add-on?

Blender 4 changes

To fix exception in dual_view.py when Dual is clicked, make the following changes at lines 62 and 80

Change:
bpy.ops.screen.region_flip(c)

To:
with context.temp_override(**c):
bpy.ops.screen.region_flip()

This is a result of changes to the Blender API.

Bug in Version 0.1 14/11/19 ~14:30

Testing with 2.81 and 2.82, error report in both ( yesterday version works) :
OS: GNU/Linux

After pressing Preview and Refresh buttons:

`Traceback (most recent call last):
File "/home/linux/.config/blender/2.81/scripts/addons/Blender_Screenwriter.py", line 320, in execute
bpy.ops.scene.preview_fountain()
File "/home/linux/App/blender-2.81-0a0d735acd6e-linux-glibc217-x86_64/2.81/scripts/modules/bpy/ops.py", line 201, in call
ret = op_call(self.idname_py(), None, kw)
RuntimeError: Error: Traceback (most recent call last):
File "/home/linux/.config/blender/2.81/scripts/addons/Blender_Screenwriter.py", line 142, in execute
F = fountain.Fountain(fountain_script)
AttributeError: module 'fountain' has no attribute 'Fountain'

location: /home/linux/App/blender-2.81-0a0d735acd6e-linux-glibc217-x86_64/2.81/scripts/modules/bpy/ops.py:201

location: :-1

location: :-1
Traceback (most recent call last):
File "/home/linux/.config/blender/2.81/scripts/addons/Blender_Screenwriter.py", line 142, in execute
F = fountain.Fountain(fountain_script)
AttributeError: module 'fountain' has no attribute 'Fountain'

location: :-1

location: :-1
`

error generating mindmap

hello there ,thanks alot dev for this awesome tool
i have a problem when i generate mindmap i get this error

Python: RuntimeError: class SCREENWRITER_OT_mindmap_fountain, function execute: incompatible return value , , Function.result expected a set, not a NoneType

note that im using blender 3.3

Strip to fountain

Create text notes for the rest of the script, so you can edit the script and recreate script in fountain.

        max_channel = 0
        # search top strip
        for i in (bpy.context.scene.sequence_editor.sequences_all):
            if i.type == 'TEXT' :
                if i.channel > max_channel:
                    max_channel = i.channel
        # frames al scene
        for f in range(bpy.context.window.scene.frame_end):
            # all text channel
            for ch in range(max_channel+1):
                for i in (bpy.context.scene.sequence_editor.sequences_all):
                    if i.type == 'TEXT' and i.channel == ch  and i.frame_start == f :
                        print(i.text)
                        print()

Switch to Scene

This function needs to be improved. Ex. it will fail if scene numbers are added before scenes are generated. It doesn't work for non-scene header lines. And the name of the Main scene should be permanently stored, so users will have the option to switch back to the main edit scene.

Error in polls

If the context doesn't have the right file extension an error will will be written in the console.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.