2012-05-02 10 views
0

私はその「コマンドライン」モードでブレンダーを使用して、素敵な光と影と色見本を描画するための基本的なWebサービスを書き込み、(データベースにもカタログ見本を扱う)、PHPスクリプトから呼び出されています。すべてがWin32でapacheの下で実行され、PHP 5.2PHPスクリプトから呼び出されたBlenderでファイルをレンダリングする方法は?

すべてが実際にすべてが失敗した時点で何かをレンダリングの最終段階まで、うまく動作しているようです。私は、すべての異なるPHP実行コマンド(exec()、system()、passthru()など)を使用してみました。変わったことは、私がミキサーに不正な引数を渡すと、PHPがブレンダーから正しいエラーメッセージをエコーし​​て、確実にプログラムを開始していることを確認するためです。正しい引数を指定した場合、exec()などはハングし、ブレンダープロセスはタスクマネージャに表示されません。

BlenderがjpgファイルをWebフォルダ(デフォルトのApacheインストールディレクトリにあります:プログラムファイル内にあります)に書き込む必要があるため、ファイルアクセス許可の問題がありますが、どのようにすればよいか分かりませんウィンドウの下で正しいパーミッションを設定してください。私は、コマンドウィンドウからコマンドを実行するレンダリング

は、まさにそれが必要とレンダリングされたファイルを出力を行いますが、PHPで同じコマンドは失敗します。

はこちら(system()を使用して、この場合には他のすべての変異体は、同じ結果を持っているように見える)私のPHPコードです:

これはコマンドになり
$swatchId = $args->swatchId; 
$sql = "SELECT * FROM `colours` WHERE `Id` = ".$swatchId." LIMIT 0, 1 "; 
$rows = mysql_query($sql); 
$command = ".\blender\blender -b _swatches.blend "; 

while ($row = mysql_fetch_assoc($rows)) { 
    $filename = $row["ProductCode"]; 
    $red = $row["Red"]; 
    $green = $row["Green"]; 
    $blue = $row["Blue"]; 
} 

$command = $command."-o ".$filename." -F JPEG -x 1 -f 1"; 
echo json_encode(array("Command"=>$command)); 
$result = system($command); 

.\blender\blender -b _swatches.blend -o NPRKGAP -F JPEG -x 1 -f 1 

実行コマンドウィンドウでは正しく表示されますが、Webリクエストからphpで呼び出された場合は表示されません。

私はセーフモードはPHPでオフになっていると、レンダリングされているブレンドが厳しいということはありませんが、スクリプトを使用できる最大メモリをぶつけてきました。

誰もが、私は永遠に感謝するだろうことができます。

+0

これは役に立つかもしれません:http://sourceforge.net/projects/phpblender/ –

+1

また、netrenderレンダリングエンジンの使用に関する情報:http://wiki.blender.org/index.php/Doc:2.6/Manual/Render/Performance/Netrender –

+0

ありがとうございましたgeorge - 私はそれらのリンクを調べますが、phpBlenderは一見して私とまったく同じように見えます。 – bharling

答えて

0

blenderコマンドにフラグを追加してみてください。

-noaudio -nojoystick 

私はPythonを使用していますが、私は似たようなことをしています。

バックストーリー: wwwデータユーザーがブレンダーを起動しようとしているとき(あなたもやっていること)、私は狂気の問題を抱えていました。私はGeorge Reithのコメントを見て、ネットレンダーの例では、彼らはあなたにnoaudioとnojoystickを置くように見せました。だから私は無作為に試してみました。突然www-データがブレンダーを走らせることができます!

関連する問題