GVKun编程网logo

带有命令行Blender参数的Python脚本(blender python脚本)

24

在这篇文章中,我们将为您详细介绍带有命令行Blender参数的Python脚本的内容,并且讨论关于blenderpython脚本的相关问题。此外,我们还会涉及一些关于asp.net–使用IronPyt

在这篇文章中,我们将为您详细介绍带有命令行Blender参数的Python脚本的内容,并且讨论关于blender python脚本的相关问题。此外,我们还会涉及一些关于asp.net – 使用IronPython调用带有参数的Python脚本 – “需要超过x值才能解压缩”、Blender导入问题:python脚本错误、C#调用带参数的python脚本、main中的python命令行参数,跳过脚本名称的知识,以帮助您更全面地了解这个主题。

本文目录一览:

带有命令行Blender参数的Python脚本(blender python脚本)

带有命令行Blender参数的Python脚本(blender python脚本)

我是Blender和python的新手。我有一个搅拌器模型(.blend),我想批量渲染为几个图像,为每个图像提供一些属性。

我用这些参数编写了一个python脚本,例如:

import bpy

pi = 3.14159265
fov = 50

scene = bpy.data.scenes["Scene"]

# Set render resolution
scene.render.resolution_x = 480
scene.render.resolution_y = 359

# Set camera fov in degrees
scene.camera.data.angle = fov*(pi/180.0)

# Set camera rotation in euler angles
scene.camera.rotation_mode = 'XYZ'
scene.camera.rotation_euler[0] = 0.0*(pi/180.0)
scene.camera.rotation_euler[1] = 0.0*(pi/180.0)
scene.camera.rotation_euler[2] = -30.0*(pi/180.0)

# Set camera translation
scene.camera.location.x = 0.0
scene.camera.location.y = 0.0
scene.camera.location.z = 80.0

所以然后我像

blender -b marker_a4.blend --python "marker_a4.py" -o //out -F JPEG -x 1 -f 1

然后例如,如果我尝试使用python脚本的参数

...
import sys
...
fov = float(sys.argv[5])
...

并运行它:

blender -b marker_a4.blend --python "marker_a4.py" 80.0 -o //out -F JPEG -x 1 -f 1

渲染完成,但我在开始时收到此消息。

read blend: /home/roho/workspace/encuadro/renders/marker/model/marker_a4.blend
read blend: /home/roho/workspace/encuadro/renders/marker/model/80.0
Unable to open "/home/roho/workspace/encuadro/renders/marker/model/80.0": No such file or directory.
...

谁能告诉我是什么原因造成的?我认为Blender也将其解析为模型,但不知道为什么。后来我尝试了一些更复杂的方法来解析python(argparse)中的参数,但是它根本没有用。因此,我认为在此级别上可能会发生一些奇怪的事情。

谢谢!

asp.net – 使用IronPython调用带有参数的Python脚本 – “需要超过x值才能解压缩”

asp.net – 使用IronPython调用带有参数的Python脚本 – “需要超过x值才能解压缩”

我正在使用以下C#代码使用Iron Python调用 Python脚本:

ScriptEngine scriptEngine;

var opts = new Dictionary<string,object>();
opts["Arguments"] = new[] { 
    Server.MapPath(@"~\Processing\input.7z"),// Input
    Server.MapPath(@"~\Processing\key.pem"),// Key
    Server.MapPath(@"~\Processing\") };       // Output
        scriptEngine = Python.CreateEngine(opts);

var sp = scriptEngine.GetSearchPaths();
sp.Add(Server.MapPath(@"~\python\lib"));
scriptEngine.SetSearchPaths(sp);

var scope = scriptEngine.Runtime.ExecuteFile(Server.MapPath(@"~\python\test.py"));

该脚本采用以下参数:

arg0,input,key,output = sys.argv

我收到错误“需要超过3个值来解压”.我究竟做错了什么?

解决方法

这条线

arg0,output = sys.argv

将sys.argv中的参数列表解压缩到左侧的四个变量中.由于sys.argv中只有三个参数,因此失败并显示您发布的错误消息(显然您需要手动传入脚本路径,以使其显示为sys.argv中的第一个元素).

尝试使用不同的方式传递命令行参数(从this answer开始):

scriptEngine.Sys.argv = List.Make(new[] { 'input.7z',... });

或者,如果这不起作用,则从Python文件中的赋值中删除arg0变量,或者将脚本的路径显式添加为C#中的第一个参数.

Blender导入问题:python脚本错误

Blender导入问题:python脚本错误

如何解决Blender导入问题:python脚本错误?

当我尝试在搅拌器上从unrealengine4导入某些结构时,在控制台上出现问题,提示如下:

PYTHON INteraCTIVE CONSOLE 3.7.7 (default,Jun 13 2020,11:11:23) [MSC v.1916 64 bit (AMD64)]

Builtin Modules:       bpy,bpy.data,bpy.ops,bpy.props,bpy.types,bpy.context,bpy.utils,bgl,blf,mathutils
Convenience Imports:   from mathutils import *; from math import *
Convenience Variables: C = bpy.context,D = bpy.data

我从没学习过python,也不知道如何解决。 对不起,我的英语不好。预先感谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

C#调用带参数的python脚本

C#调用带参数的python脚本

问题描述:使用C#调用下面的带参数的用python写的方法,并且想要获取返回值。

def Quadratic_Equations(a,b,c):
    D=b**2-4*a*c
    ans=[]
    ans.append((-b+math.sqrt(D))/(2*a))
    ans.append((-b-math.sqrt(D))/(2*a))
    return ans

C#代码如下:

class Program
    {
        static void Main(string[] args)
        {
            string name = "CallPythonExam.py";
            List<string> param = new List<string>() { "3", "5", "1" };
            RunPythonScript(name, param);
        }
        
        static void RunPythonScript(string name, List<string> args)
        {
            Process p = new Process();
            // .py文件的绝对路径
            string path = @"D:\PythonPrograms\VelocityProfile\VelocityProfile\" + name;
            string arguments = path;
            // 添加参数
            foreach (var item in args)
                arguments += " " + item;
            // python安装路径
            p.StartInfo.FileName = @"C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\python.exe";
            
            // 下面这些是我直接从网上抄下来的.......
            p.StartInfo.Arguments = arguments;
            // 不启用shell启动进程
            p.StartInfo.UseShellExecute = false;
            p.StartInfo.RedirectStandardOutput = true;
            p.StartInfo.RedirectStandardInput = true;
            p.StartInfo.RedirectStandardError = true;
            // 不创建新窗口
            p.StartInfo.CreateNoWindow = true;
            p.Start();
            StreamReader sr = p.StandardOutput;
            while (!sr.EndOfStream)
                Console.WriteLine(sr.ReadLine());
            Console.ReadLine();
            p.WaitForExit();
        }
    }

python代码如下:

import math
import sys

def Quadratic_Equations(stra,strb,strc):
    a=float(stra)
    b=float(strb)
    c=float(strc)
    D=b**2-4*a*c
    ans=[]
    ans.append((-b+math.sqrt(D))/(2*a))
    ans.append((-b-math.sqrt(D))/(2*a))
    print(ans[0])
    print(ans[1])
    #return str(ans[0])

Quadratic_Equations(sys.argv[1],sys.argv[2],sys.argv[3])

这样就可以在屏幕上输出方程的解。

https://github.com/Larissa1990/use-C-to-call-.py-file

main中的python命令行参数,跳过脚本名称

main中的python命令行参数,跳过脚本名称

这是我的剧本

def main(argv):    if len(sys.argv)>1:        for x in sys.argv:            build(x)if __name__ == "__main__":    main(sys.argv)

所以从命令行我写 python myscript.py commandlineargument

我希望它跳过myscript.py和简单的运行commandlineargument通过commandlineargument(n)

所以我知道我的for循环并不能解决这个问题,但是我如何使它做到这一点呢?

答案1

小编典典

由于sys.argv是一个列表,因此可以使用slicing
sys.argv[1:]

def main(argv):    for x in argv[1:]:        build(x)if __name__ == "__main__":    main(sys.argv)

但是,如果您只能有一个脚本参数,则只需通过index:获得它sys.argv[1]。但是,您应该检查的长度sys.argv是否大于1,如果不超过则抛出错误,例如:

def main(argv):    if len(argv) == 1:        print "Not enough arguments"        return    else:        build(argv[1])if __name__ == "__main__":    main(sys.argv)

今天的关于带有命令行Blender参数的Python脚本blender python脚本的分享已经结束,谢谢您的关注,如果想了解更多关于asp.net – 使用IronPython调用带有参数的Python脚本 – “需要超过x值才能解压缩”、Blender导入问题:python脚本错误、C#调用带参数的python脚本、main中的python命令行参数,跳过脚本名称的相关知识,请在本站进行查询。

本文标签: