settings get to blender per console

This commit is contained in:
2022-11-23 19:47:28 +01:00
parent c768cf225f
commit 57a6d7479b
2 changed files with 67 additions and 48 deletions

View File

@@ -5,10 +5,7 @@ import math
import sys import sys
import time import time
import bpy import bpy
import xml.etree.ElementTree as ET import json
argv = sys.argv
argv = argv[argv.index("--") + 1:]
logger = logging.getLogger('simple_example') logger = logging.getLogger('simple_example')
logger.setLevel(logging.INFO) logger.setLevel(logging.INFO)
@@ -43,28 +40,22 @@ def _map(x, in_min, in_max, out_min, out_max):
logger.info("Blender started successfully!") logger.info("Blender started successfully!")
while True: while True:
command = input("Waiting for command: ") command = input("Waiting for command: ").split(" -- ")
time.sleep(0.5) time.sleep(0.5)
settingsRoot = ET.parse(argv[0]+"/settings.xml").getroot() settings = json.loads(command[1])
StickMode = settingsRoot[3].text stickMode2 = settings["stickMode2"]
if(StickMode == "true"): width = settings["width"]
StickMode = 2 stickDistance = _map(settings["stickDistance"], 0, 100, 5, 105)
else: fps = settings["fps"]
StickMode = 1 videoFormat = settings["videoFormat"]
logs = settings["logs"][1:][:-1].split("\"\"")
width = int(settingsRoot[1].text) output = settings["output"]
StickDistance = _map(int(settingsRoot[2].text), 0, 100, 5, 105) dataPath = settings["dataPath"]
if(command == "startRendering"):
fps = int(settingsRoot[0].text)
videoFormat = settingsRoot[4].text
logs = settingsRoot[5].text[1:][:-1].split("\"\"")
output = settingsRoot[6].text
if(command[0] == "startRendering"):
logCount = len(logs) logCount = len(logs)
logNumber = 1 logNumber = 1
@@ -129,13 +120,13 @@ while True:
bpy.context.scene.render.image_settings.color_mode = 'RGBA' bpy.context.scene.render.image_settings.color_mode = 'RGBA'
scn.render.resolution_x = width scn.render.resolution_x = width
GimbalCoverR.location[0] = StickDistance GimbalCoverR.location[0] = stickDistance
GimbalR.location[0] = StickDistance GimbalR.location[0] = stickDistance
TrailR.location[0] = StickDistance TrailR.location[0] = stickDistance
Plane.location[0] = StickDistance Plane.location[0] = stickDistance
Camera.location[0] = StickDistance/2 Camera.location[0] = stickDistance/2
Camera.data.ortho_scale = StickDistance+5 Camera.data.ortho_scale = stickDistance+5
scn.render.resolution_y = int(width/_map(StickDistance, 5, 105, 2, 21.6)) scn.render.resolution_y = int(width/_map(stickDistance, 5, 105, 2, 21.6))
bpy.context.scene.render.filepath = output + "\\" + log.split("/")[-1].split("\\")[-1].replace(".csv", "."+videoFormat) bpy.context.scene.render.filepath = output + "\\" + log.split("/")[-1].split("\\")[-1].replace(".csv", "."+videoFormat)
scn.render.fps = 1000 scn.render.fps = 1000
@@ -168,7 +159,7 @@ while True:
StickR.rotation_euler=[0,0,0] StickR.rotation_euler=[0,0,0]
GimbalR.rotation_euler=[0,0,0] GimbalR.rotation_euler=[0,0,0]
if StickMode == "1": if stickMode2 == False:
StickL.rotation_euler.rotate_axis("Y", ailP) StickL.rotation_euler.rotate_axis("Y", ailP)
GimbalL.rotation_euler.rotate_axis("X", eleP) GimbalL.rotation_euler.rotate_axis("X", eleP)
StickR.rotation_euler.rotate_axis("Y", rudP) StickR.rotation_euler.rotate_axis("Y", rudP)
@@ -194,19 +185,19 @@ while True:
logNumber+=1 logNumber+=1
elif(command == "getRender"): elif(command[0] == "getRender"):
bpy.context.scene.render.image_settings.file_format = 'PNG' bpy.context.scene.render.image_settings.file_format = 'PNG'
bpy.context.scene.render.filepath = argv[0] + "\\render.png" bpy.context.scene.render.filepath = dataPath + "\\render.png"
scn.render.resolution_x = width scn.render.resolution_x = width
GimbalCoverR.location[0] = StickDistance GimbalCoverR.location[0] = stickDistance
GimbalR.location[0] = StickDistance GimbalR.location[0] = stickDistance
TrailR.location[0] = StickDistance TrailR.location[0] = stickDistance
Plane.location[0] = StickDistance Plane.location[0] = stickDistance
Camera.location[0] = StickDistance/2 Camera.location[0] = stickDistance/2
Camera.data.ortho_scale = StickDistance+5 Camera.data.ortho_scale = stickDistance+5
scn.render.resolution_y = int(width/_map(StickDistance, 5, 105, 2, 21.6)) scn.render.resolution_y = int(width/_map(stickDistance, 5, 105, 2, 21.6))
bpy.context.scene.frame_set(0) bpy.context.scene.frame_set(0)
@@ -215,7 +206,7 @@ while True:
StickR.rotation_euler=[0,0,0] StickR.rotation_euler=[0,0,0]
GimbalR.rotation_euler=[0,0,0] GimbalR.rotation_euler=[0,0,0]
if(StickMode == 2): if(stickMode2 == True):
StickL.rotation_euler.rotate_axis("Y", 0) StickL.rotation_euler.rotate_axis("Y", 0)
GimbalL.rotation_euler.rotate_axis("X", 0.436) GimbalL.rotation_euler.rotate_axis("X", 0.436)
StickR.rotation_euler.rotate_axis("Y", 0) StickR.rotation_euler.rotate_axis("Y", 0)
@@ -238,7 +229,7 @@ while True:
StickR.rotation_euler=[0,0,0] StickR.rotation_euler=[0,0,0]
GimbalR.rotation_euler=[0,0,0] GimbalR.rotation_euler=[0,0,0]
if(StickMode == 2): if(stickMode2 == True):
StickL.rotation_euler.rotate_axis("Y", 0) StickL.rotation_euler.rotate_axis("Y", 0)
GimbalL.rotation_euler.rotate_axis("X", 0.436) GimbalL.rotation_euler.rotate_axis("X", 0.436)
StickR.rotation_euler.rotate_axis("Y", 0) StickR.rotation_euler.rotate_axis("Y", 0)

View File

@@ -1,10 +1,10 @@
import { blenderPath, blenderScriptPath, dataPath, templatePath, finsishedIconPath } from "./paths"; import { blenderPath, blenderScriptPath, templatePath, finsishedIconPath, dataPath } from "./paths";
import {spawn} from "child_process"; import {spawn} from "child_process";
import logger from "./logger"; import logger from "./logger";
import { setBlenderLoading, setBlenderStatus } from "./ui/menu"; import { setBlenderLoading, setBlenderStatus } from "./ui/menu";
import { setLogNumber, setPastTime, setRemainingTime, setRenderDisplayProgress, setStatus, setPastTimeNow, setRemainingTimeNow } from "./ui/renderingPage"; import { setLogNumber, setPastTime, setRemainingTime, setRenderDisplayProgress, setStatus, setPastTimeNow, setRemainingTimeNow } from "./ui/renderingPage";
import {imageLoading, imageLoaded} from "./ui/settingsPage"; import {imageLoading, imageLoaded} from "./ui/settingsPage";
import { getLogSize, getInOutSettings } from "./settings"; import { getLogSize, getInOutSettings, getActiveProfile } from "./settings";
import isValid from "is-valid-path"; import isValid from "is-valid-path";
import { pageSetRendering, setProgress, openPage, Page } from "../renderer"; import { pageSetRendering, setProgress, openPage, Page } from "../renderer";
import { ipcRenderer } from "electron"; import { ipcRenderer } from "electron";
@@ -20,9 +20,7 @@ const blenderStartString = [
templatePath, templatePath,
"--background", "--background",
"--python", "--python",
blenderScriptPath, blenderScriptPath
"--",
dataPath.replaceAll("\\", "/")
] ]
let blenderConsole = spawn(blenderPath, blenderStartString).on('error', function(err) { let blenderConsole = spawn(blenderPath, blenderStartString).on('error', function(err) {
@@ -158,7 +156,17 @@ function startBlender() {
} else { } else {
waitingForRender = false; waitingForRender = false;
renderingPicture = true; renderingPicture = true;
blenderConsole.stdin.write("getRender\n"); const blenderArgs = JSON.stringify({
stickMode2:getActiveProfile().stickMode2,
width:getActiveProfile().width,
stickDistance:getActiveProfile().stickDistance,
fps:getActiveProfile().fps,
videoFormat:getActiveProfile().videoFormat,
logs:getInOutSettings().log,
output:getInOutSettings().output,
dataPath:dataPath
});
blenderConsole.stdin.write("getRender -- "+blenderArgs+"\n");
setBlenderStatus("Rendering"); setBlenderStatus("Rendering");
setBlenderLoading(true); setBlenderLoading(true);
imageLoading(); imageLoading();
@@ -192,7 +200,17 @@ function blender(command:blenderCmd) {
imageLoading(); imageLoading();
setBlenderStatus("Rendering"); setBlenderStatus("Rendering");
setBlenderLoading(true); setBlenderLoading(true);
blenderConsole.stdin.write("getRender\n"); const blenderArgs = JSON.stringify({
stickMode2:getActiveProfile().stickMode2,
width:getActiveProfile().width,
stickDistance:getActiveProfile().stickDistance,
fps:getActiveProfile().fps,
videoFormat:getActiveProfile().videoFormat,
logs:getInOutSettings().log,
output:getInOutSettings().output,
dataPath:dataPath
});
blenderConsole.stdin.write("getRender -- "+blenderArgs+"\n");
} else { } else {
waitingForRender = true; waitingForRender = true;
} }
@@ -225,7 +243,17 @@ function blender(command:blenderCmd) {
pageSetRendering(true); pageSetRendering(true);
setBlenderStatus("Rendering"); setBlenderStatus("Rendering");
setBlenderLoading(true); setBlenderLoading(true);
blenderConsole.stdin.write("startRendering\n"); const blenderArgs = JSON.stringify({
stickMode2:getActiveProfile().stickMode2,
width:getActiveProfile().width,
stickDistance:getActiveProfile().stickDistance,
fps:getActiveProfile().fps,
videoFormat:getActiveProfile().videoFormat,
logs:getInOutSettings().log,
output:getInOutSettings().output,
dataPath:dataPath
});
blenderConsole.stdin.write("startRendering -- "+blenderArgs+"\n");
renderInfo.startTime = new Date().getTime(); renderInfo.startTime = new Date().getTime();
setPastTime("0min 0sec"); setPastTime("0min 0sec");