ProcessingでP3DやOpenGLの描画モードで実行画面が表示されない時の対応
Processingで3Dグラフィックスを描画していくには、Processingの描画モード「P3D」を利用していきますが、macOSではエラーで実行結果が表示されないといった問題に遭遇することがあります。
エディタのプログラムには、エラー箇所が見当たらないこともあり、原因がわからず悩まれることでしょう。
macOSのバージョンのCatalina以降では、32bitアプリのサポートを終了しており、macOS版のProcessingもこれの影響を受け、Javaプログラムのパッケージのバージョンによって、コンソールにエラーが表示されます。
Windowsではこうしたお話はあまり聞かないので大丈夫かと思いますが。
macOSで3D描画を実装するとAppKit警告が出ます。
状況によっては、実行結果がウィンドウに表示されないこともあります。
通常の2D描画では問題は起きなかったものが、3Dレンダラーでは描画されないという。
この問題については、今後のOSの環境によって変わってきそうですが、frameRate()関数を設定することで、一旦は対応できそうです。
frameRate関数の設定
setup()関数にて、frameRate()関数で1秒間の更新頻度の設定をすることで、3Dで描画できない事象が解決できます。
プログラムを実行した際に、エラー表示はあるもののウィンドウは表示され、描画に影響があることがわかったので、描画に関係してきそうな関数として、frameRate関数を設定しました。
まだ完全にエラーが消えるわけではありませんが、問題なく描画されるようになりました。
Windows PCでは、ご利用のPCに合わせて32bitまたは64bitのProcessingをインストールされますので、描画モードでの実行エラーはほとんど起きないと思います。
プログラミングでは、macOSのほうが環境を整えやすいイメージはありますが、Windows PCが珍しく対応しているという驚き。
とりあえず、macOSでは「frameRate()」の設定で解決しそうです。
Processing 4では解決する
Processing 4からは、macOS用のProcessingも64bitのアプリケーションが提供されますので、3Dレンダラーでの描画のエラーは解決します。
frameRate関数もなくても問題なく実行できます。
今後、Processingのアップデートの際に描画モードでの実行エラーが起こることがありましたら、frameRate関数を設定してみてください。
余談
サンプルプログラムで利用しているOpenGLは現在、実行するとコンソールに「The field PConstants.OPENGL is deprecated」というメッセージが表示され非推奨となっています。
今後のアップデートの影響で動作しなくなる可能性もありますので、3Dの描画は「P3D」で処理しましょう。