Welcome to mirror list, hosted at ThFree Co, Russian Federation.

render_tokens.py « render « oscurart_tools - git.blender.org/blender-addons.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 724cc843d3de1f1e9065457cb37cfcf3e3255214 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# ##### BEGIN GPL LICENSE BLOCK #####
#
#  This program is free software; you can redistribute it and/or
#  modify it under the terms of the GNU General Public License
#  as published by the Free Software Foundation; either version 2
#  of the License, or (at your option) any later version.
#
#  This program is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#  GNU General Public License for more details.
#
#  You should have received a copy of the GNU General Public License
#  along with this program; if not, write to the Free Software Foundation,
#  Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# ##### END GPL LICENSE BLOCK #####

# <pep8 compliant>

import bpy
import os
from bpy.app.handlers import persistent

@persistent
def replaceTokens (dummy):
    global renpath
    global nodeDict
    tokens = {
    "$Scene":bpy.context.scene.name,
    "$File":os.path.basename(bpy.data.filepath).split(".")[0],
    "$ViewLayer":bpy.context.view_layer.name,
    "$Camera": "NoCamera" if bpy.context.scene.camera == None else bpy.context.scene.camera.name}

    renpath = bpy.context.scene.render.filepath
    
    nodeDict = []
    #compositor nodes
    if bpy.context.scene.use_nodes:
        for node in bpy.context.scene.node_tree.nodes:
            if node.type == "OUTPUT_FILE":
                nodeDict.append([node,node.base_path])   
                node.base_path = node.base_path.replace("$Scene",tokens["$Scene"]).replace("$File",tokens["$File"]).replace("$ViewLayer",tokens["$ViewLayer"]).replace("$Camera",tokens["$Camera"])
                          
            

    bpy.context.scene.render.filepath = renpath.replace("$Scene",tokens["$Scene"]).replace("$File",tokens["$File"]).replace("$ViewLayer",tokens["$ViewLayer"]).replace("$Camera",tokens["$Camera"])
    print(bpy.context.scene.render.filepath)


@persistent
def restoreTokens (dummy):
    global renpath
    bpy.context.scene.render.filepath = renpath
    
    #restore nodes
    for node in nodeDict:
        node[0].base_path = node[1]


# //RENDER/$Scene/$File/$ViewLayer/$Camera