首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Blender 3D render Java servlet接口

Blender 3D render Java servlet接口
EN

Stack Overflow用户
提问于 2012-12-03 21:13:51
回答 1查看 432关注 0票数 2

我需要在服务器上3D渲染一个静止的图像。我被告知Java servlet可以做到这一点。我正在研究它的快速原型,但卡住了。

如何在Java中调用Blender??

代码语言:javascript
运行
复制
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??
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-03 22:23:54

我能想到的最简单的解决方案是这样的:

代码语言:javascript
运行
复制
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);
    }
}

你应该记住几件事:

blender使用备用名称,否则并发请求将覆盖文件每个time.

  • FileUtils都是一个来自apache commons的类-io

  • 我不太熟悉time.

  • FileUtils,所以命令行“
  • -b scene.blend -o ...”可能需要一些额外的关注。
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13684011

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档