2

サーバーで静止画像を3Dレンダリングする必要があります。Javaサーブレットがそれを行うとアドバイスされました。私はそれを迅速なプロトタイプのために研究していて、行き詰まっています。

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??
    }
}
4

1 に答える 1

3

私が考えることができる最も単純な解決策は次のようになります:

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はapachecommons-ioのクラスです
  • 私はblenderにあまり詳しくないので、コマンドライン「blender -bscene.blend-o[...]」にはさらに注意が必要な場合があります。
于 2012-12-03T14:23:54.467 に答える