0

「コマンドライン」モードでブレンダーを使用して、素敵な照明と影で色見本をレンダリングする基本的なWebサービスを作成し、phpスクリプトから呼び出します(データベースでの見本のカタログ化も処理します)。すべてがphp 5.2を使用して、win32のApacheの下で実行されています

実際に何かをレンダリングする最終ステップまで、すべてがうまく機能しているように見えますが、その時点ですべてが失敗します。さまざまなphp実行コマンド(exec()、system()、passthru()など)をすべて使用してみましたが、すべて同じ結果になりました-たとえば、まったく何もありません。奇妙なことに、blender に不正な形式の引数を渡すと、php は Blender から正しいエラー メッセージをエコーし​​、プログラムが確実に開始されていることを確認するため、機能しているということです。正しい引数を指定すると、exec() などがハングするだけで、タスク マネージャーにブレンダー プロセスが表示されません。

Blender が jpg ファイルを Web フォルダー (デフォルトの apache インストール ディレクトリにある、例: program files 内) に書き込む必要があるため、ファイルのアクセス許可の問題を感じていますが、正しいアクセス許可を設定する方法がわかりません。窓の下。

コマンド ウィンドウからレンダリング コマンドを実行すると、本来の処理が行われ、レンダリングされたファイルが出力されますが、PHP で同じコマンドを実行しても失敗します。

これが私のphpコードです(この場合はsystem()を使用していますが、他のすべてのバリアントは同じ結果になるようです):

$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

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

PHP でセーフ モードをオフにして、スクリプトが使用できる最大メモリを増やしましたが、レンダリングされるブレンドはそれほど要求は高くありません。

誰かが助けることができれば、私は永遠に感謝します.

4

2 に答える 2