gpt4 book ai didi

java - Blender 3D 渲染 Java servlet 接口(interface)

转载 作者:行者123 更新时间:2023-12-04 05:20:59 25 4
gpt4 key购买 nike

我需要在服务器中进行 3D 渲染静止图像。我被告知 Java servlet 会这样做。我正在研究它以获得快速原型(prototype)并且被卡住了。

我应该如何在 Java 中调用 Blender?

import java.io.*;
import javax.servlet.http.*;

@WebServlet("/HelloworldInServlet")
public class HelloworldInServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//Run Blender on server (localhost for now)
// I need something here??
}
}

最佳答案

我能想到的最简单的解决方案如下所示:

public class RenderSceneServlet extends HttpServlet {
protected void doGet(HttServletRequest request, HttpServletResponse response) {
String outputFile = "/path/to/output-file";

// execute command to render a frame from scene.blend
Runtime runtime = Runtime.getRuntime();
Process exec = runtime.exec("blender -b scene.blend -o " + outputFile + " -F JPEG -x 1 -f 1");

// wait for blender to finish
exec.waitFor();

// serve the rendered file
File file = new File(outputFile);
byte[] bytes = FileUtils.readFileToByteArray(file);
response.setContentLength(bytes.length);
response.setContentType("image/jpeg");
response.getOutputStream().write(bytes);
}
}

你应该记住几件事:
  • 使用 outputFile 的替代名称否则并发请求每次都会覆盖文件。
  • FileUtils是来自 apache commons-io
  • 的一个类
  • 我对 blender 不是很熟悉,所以命令行“blender -b scene.blend -o [...]”可能需要额外注意。
  • 关于java - Blender 3D 渲染 Java servlet 接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13684011/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com