「コマンドライン」モードでブレンダーを使用して、素敵な照明と影で色見本をレンダリングする基本的な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 でセーフ モードをオフにして、スクリプトが使用できる最大メモリを増やしましたが、レンダリングされるブレンドはそれほど要求は高くありません。
誰かが助けることができれば、私は永遠に感謝します.