我希望有人能帮助我解决这个问题。c#进程,运行批处理文件,用于搅拌器导出得到暂停
现状:
我需要从搅拌机导出动画,因为它必须是一个C#应用程序的内部跳跳虎的序列。我使用的搅拌机OBJ出口与Python脚本,这几乎等同于该搅拌器维基的例子: https://wiki.blender.org/index.php/Extensions:2.6/Py/Scripts/Import-Export/Wavefront_OBJ
这是python脚本我写道:
import bpy
import sys
argv = sys.argv
argv = argv[argv.index("--") + 1:] # get all args after "--"
obj_out = argv[0]
bpy.ops.export_scene.obj(filepath=obj_out, axis_forward='-Z', axis_up='Y', use_animation=1, keep_vertex_order=1, use_normals=1, use_materials=0)
除了我写了如下的批处理文件:
"C:\Program Files\Blender Foundation\Blender\blender.exe" "C:\Users\holgk\Documents\Some Folders\Test.blend" --background --python "C:\Program Files\Blender Foundation\Blender\convert_blend_to_obj.py" -- "C:\Users\holgk\Documents\Some Folders\Test.obj"
我的C#代码如下所示:
using System;
using System.Diagnostics;
namespace BlenderToObjs
{
class Program
{
static void Main(string[] args)
{
ProcessStartInfo processInfo;
Process process;
processInfo = new ProcessStartInfo("cmd.exe", "/c \"" + @"C:\blender_export_to_obj.bat" + "\"");
processInfo.CreateNoWindow = false;
processInfo.UseShellExecute = false;
processInfo.RedirectStandardError = true;
processInfo.RedirectStandardOutput = true;
process = Process.Start(processInfo);
process.WaitForExit();
}
}
}
当我使用窗口CMD外壳时,一切正常。对于每个帧,都会创建一个obj文件。但是,当我使用我的c#应用程序cmd行是打开的时候,搅拌机开始执行,并且对于第一帧大约250个中的12个都按原样工作,然后没有任何反应,应用程序仍在等待退出,但没有新的obj文件被创建。
在我编写批处理文件之前,我试图直接运行带有python脚本的搅拌器作为一个进程,并且我遇到了同样的问题,但是在几个输出框后“暂停”/“拖延”。我猜它必须与我的C#进程代码(因为在cmd shell中运行确实工作),但我不知道我在做什么错了。