28日に、BlenderのテストリリースとUPBGEのα版が更新されていました。
先日まで、3.0のAlpha版が出ていましたが、BETA版に昇格しており、それと同時に、最新版の3.1のAlpa版がリリースされていました。
BGEのフォークとしてUPBGEの仕様を踏襲して制作されている、UPBGEですが、こちらも28日にアップデートが入っており、M1 MACにも対応したようです。
B lener 3.1
Blender 3.0では色々な機能が入っていましたが、3.1がどんな感じになっているのか試してみることにしました。3.1を開くと、
のようになっており、新規インストール後にはスプラッシュで設定の変更をするUIが表示されます。
3.0の設定を引き継ぐか、新規設定をするのかの選択ができますが、メニューの中のLangageでローカライズが出来るで、母国語に合わせると画面内の表示を切り替えることができます。
インストール直後は、GPU連打理ぬぐの設定になっていないので、処理の内容がCPUの設定になっているので、これをプリファレンスで変更していきます。プリファレンスは2.8から編集のメニューから入れるようになっていますが、
のように選択すると、
のようなウインドウが表示されますが、
のように細かな設定が出来るようになっています。ここで変更したほうがいいのが、
■ システム
■ アドオン
の二つになります。
■ システムの設定
システムでは、レンダリングやオーディオ関連の設定ができます。
まず、Cyclesのレンダリングですが、デフォルトではアーキテクチャ依存がないようにCPUレンダリングになっていますが、CUDAやOptiXが使用できます。ビューポートでのドラフトレンダリングでOSLなどをt買わない表示でボリュームの品質を落としても大丈夫な場合だと、OptiXがかなり速度が出る設定になっています。GPUレンダリングにするとボリュームの品質が落ちるのでそうした欠点はありますが、RTXシリーズだとそう言った選択肢もあります。
メモリーと制限では、アンドゥの回数なども指定できますが、ガーベージコレクションをどのタイミングで行うのかの指定もできます。ガーベージコレクションは自動でメモリー開放する機能でPythonなどでも使用できますが、Blenderでも使用できます。
ビデオシーケンサですが、動画のプレビュー時にキャッシュを行えますが、ここで使用するメモリーの量を指定できます。これとは別に、ディスクキャッシュも使えますが、 【 最大メモリキャッシュ 】 の量はトラッキングを行う時に必要になるので、容量が多いほど効果があります。
その為、Blederでコンポジションをお行う場合、32GB以上のメモリーがあった方が作業がしやすくなります。
そして、プロキシですが、これは元のファイルよりも小さなファイルを作成して、それを参照しながら作業をするので作業時の負荷軽減が出来る機能になりますが、プロキシファイルの保存先の要領が埋まっていくのでストレージの容量を大きくしておく必要があります。書き出しは、レンダリングになるのですが、ボリューム関連の品質を問わない場合だとGPUレンダリングでいいので、ボリュームライトや煙や炎などを使わない条件だと、OptiXとかでレンダリングすると高速な書き出しができます。その為、RTXシリーズで速度の出る構成だと作業がしやすくなります。この条件から、素材制作と動画の書き出しでGPUの性能が必要になり、キャッシュ容量の確保などでメモリーの実装量が必要になる為、3DCGツールで動画制作をする場合には、GPU性能を上げてメモリーの実装量も増やしておく必要があります。ソフトウェア全般の処理はCPUになりますが、複数のソフトを立ち上げて動かすような場合だと、スレッド数の消費が増えるので、スレッド数が多く速度の出るPCを選ぶとソフトの行き来をしながら作業をすることができます。
こうした作業の例でいうと、GIMPとBlenderを往復するような作業になりますが、UVメッシュをエクスポートしてそれを参照してテクスチャを描く場合などにソフトの往復をしますが、コードエディタとBlenderを往復してbpyの記述で処理をする(というかオブジェクト周りだとジオメトリノードが追加されたので、その部分をコードではなくノードだけでも制御できるようになっています。)時にもそう言った使い方ができます。
Blenderでは、7.1chまでのサラウンドに対応していますが、音質の設定はプリファレンスで行います。
オーディオデバイスの設定から、チャンネル数やサンプリング周波数や量子化ビット数の設定までできるので、使用する音質に合わせてこの部分を設定します。
現在のオーディオインターフェースだと24/192KHz対応の製品が増えているので、Blu-Rayの仕様と同じ音質のオーディオの設定ができますが、32bitの量子化ビット数の指定が出来る王になっています。
■ アドオン
アドオンの設定ですが、
のように最初は殆どのアドオンが適応されていない状態になっています。と言ってもこのまま作業をするのは大変なので、
のようにプルダウンを使ってメニュー単位でs根拓することになります。
メニューには、
のような物があり、ここで選択する事になりますが、外部アドオンだとテスト中に含まれることもあるので、使う時には配布元の設定方法を参照して使う事になります。アドオンの選択は、検索窓で行えるようになっているので、追加後にキーワードを入力すると、大将のアドオンが抽出されます。
使うアドオンにチェックを入れていくと
のような感じになりますが、元から用意されているアドオンでも使い康夫物が多く含まれているので、メッシュやパスなどの追加はしておいた方がいいです。あと、リギングをする時に称するRigfyもインストール直後だとチェックが入っていないので、チェックを入れておく必要があります。
■ 画面構成
画面の構成ですが、
のようになっており、ビューポートの右上の
の部分を使うと、マウス操作でUIを動かして視点の変更などが行えるようになっています。その為、タブレットやスタイラス操作をする端末でも扱いやすくなっています。表示については、
の部分で設定できるようになっており、右側にレンダリングが用意されており、その下が、ビューポートでWROKbenchで行える設定を適応するモードになりますソリッドだとそう言った指定が出来るようになっていますが、マテリアルビューだと用意されたHDRIを使ったIBLを適応した結果が反映される仕様になっています。2.8からメニューは上部に配置されており、ワークスペースの切り替えはタブで行うようになっています。
ワークスペースで作業をする時のUIは左側に配置されており、
ここから選択して作業を行う事になります。そして、 【 N 】 キーでシェルフを呼び出せるのですが、ここで、オブジェクトの座標などに指定ができます。ビューでは、ビューポート上の制御が出来るので、視点変更時にカメラビューにした状謡でカメラを動かして視点の変更をする事もできます。
右側ですが、上部にオブジェクトを配置する 【 アウトライナー 】
が用意されています。2.8からレイヤーグループのように使用できる、コレクションが追加されており、オブジェクトの目的ごとにフォルダーを使うように分けることが出来るようになりました。
その下にはプロパティがあり、個別のオブジェクトの詳細の設定をおこで指定できるようになっています。
ここはレンダリングの設定になりますが、Eeveeではポスプロの項目が多いので、マテリアルの項目と合わせて設定を詰めていくことになります。
レンダリング結果ですが、カラーマネージメントで露出とガンマを使って明るさをコントロールしたり、コントラストや色空間の設定もできますが、トーンカーブを使って方向性を変えることもできます。
レンダリングオプションの項目もすっきりしており、
のように動画の設定とコーディックの指定が一元化されたようです。以前は違う場所にあったので、かなり使いやすくなっています。
ワールドですが、Eeveeん状態でもワールドとボリュームの設定がここで行えるようになっていますが、IBLの設定もここで行います。
そして、コレクションにはラインアートもありますが、2.93では無かったコレクションマスクの項目が追加されています。
オブジェクトのプロパティでは、位置の変更やロックを描ける事もできます。また、 【 関係 】 ではペアレントの指定も可能で、パスを用意した場合、モーションパスを使ってパスの動きをトレースできます。
パーティクルについては、ヘアとエミッターを飛ばす子弟がありますが、物体を飛ばすときにはオブジェクトやグループの指定ができます。
パーティクルについては、
■ プリミーディブに質感を与えてみる 【 Blender 2.93.0 】
の中で、
のような物を作っていますが、
■ ヘアダイナミクス
のように紙を用意してダイナミクスで動かしてみたり、
■ パーティクル(1)
■ パーティクル(2)
のように散らす事もできます。ダイナミクスは
のような物が用意されていますが、これは、物理演算を行う物なので、硬い物の衝突だけでなく、柔らかい物や布の干渉とか液体や炎の動きなども再現できます。ちなみに、この中のダイナミックペイントとパーティクルを組み合わせると、
■ ダイナミックペイント+パーティクル
のような感じになります。コンストレイントは動きの制約になりますが、この設定では、
のような物が用意されています。グループのプロパティでは、
頂点グループは、リグの影響範囲を指定する時のウェイトでも使いますが、ヘアを指定する時に部分的に指定する場合にも使います。オブジェクトを固定する場合にも使用できますから、樹木に葉を配置する時に適応する場所とそうでない場所の指定をして配置することもできます。シェイプキーは 【 モーフィング 】 なので、ベースを始点、シェイプキーで追加した部分を終点として考えた時の変化の度合いを数値で調整する項目になりますが、この機能はブレンドも可能なので、複数のキーを組み合わせて使う事が出来ます。
そして、マテリアルですが、これは質感の設定になります。
現在はBSDFなので、テクスチャを割り当てて使う事になりますが、適応した画像にマスクなどを当てる場合には、
のようにミックスを適応して、その場所にベースと重ねる物を用意して、合成の方法を指定する事になります。
ブラシの項目については、
のようになっており、新規で追加する仕様になっています。そして、モディファイヤでは、
のように多くの機能が用意されていますが、
■ ワイヤーフレーム+BUOLD
のようなのを作る事もできます。
■ レンダー
レンダーでは、
の3つが用意されており、プリレンダリングだけではなく、レンダービューでの表示でもドラフト表示でこれが適応されます。同じシーンでも
のような違いが出ます。
■ アドオンの追加
アドオンを追加すると、シェルフのタブが増え
のようになります。そして、
のようになるだけではなく、
のようにメニューで表示した時の項目も増えます。
■ レンダリングとスクリーンショット
メニューからレンダリングとスクリーンショットの取得が出来るようになっており、レンダリングでは、
のように映像だけでなく音声のレンダリングも可能になっています。また、ウインドウの項目では、ワークスペースの選択だけでなくスクリーンショットの取得も行えるようになってます。
U PBGE 0.3Alpha
少し前のバージョンで色々行ってますが、最新版では、M1対応になったようです。なので、Intel MACとM1 MACのバイナリーが用意されています。
このソフトは、Blemderの機能を使ったゲームエンジンなのですが、ゲームと動画の違いについて書いておくと、動画にはリアルタイムで発生する入出力がなく、状況に対して判定を行って動くオブジェクトの制御が存在しません。つまり、再生時には、完成した動画ファイルの形になっているので、画像をフレームレートの数に合わせて再生し、音ズレがなく音声が鳴るようにした状態に仕上がっています。その為、動画の場合だと、プレイヤー内でのデコード処理が行われています。
ゲームの場合、動く物はすべて演算処理ですから常に計算が発生しているという違いがあります。つまり、を同時に行っています。まず、見えているものだとがありますが、これに加えて、立体ではない文字情報が重なっていると思います。つまり、この 【 フレーム 】 に該当する部分はゲームの始点とは別の挙動をしています。そして、カメラで見えている中の物と、スコアなどの文字情報は常に変化しますから、これについても演算処理で制御する必要があります。そして、3DCGの場合、空間内の情報を計算する事で座標制御をしている二変数関数のデータのような物を正方形の敷き詰められた空間内にある正方形の色のデータに変換して表示しなくてはなりませんから、3次元空間の状態をスクリーン上に変換してピクセルの色の情報に変換して処理をする必要があります。ゲームのリフレッシュノートが60Hzとすると、このリアルタイムレンダリングでの画像での出力を秒間に60回行わなくてはなりません。
その為、見えている部分だけでもそう言った計算を行う事になります。プレイヤーの挙動はデバイスの入力待ちという考え方ができますが、それ以外の物は自動処理で動いています。そう考えると、指定したアルゴリズムで動かす事になりますから、この処理は、内部処理になりますが、実装しない事には動いてくれません。その為、こうしたゲーム内で存在する動きの計算は常に行う事になります。判定については、プレイヤーの入力だけでなく、MOBなどとの接触の判定もありますし、MOBのアルゴリズムに距離を使う場合もある(2Dだと座標間の距離で判定を入れて、遮蔽物がない状態だとアークタンジェントで向きを決めれば、指定した向きに直進するだけの状態でもプレイヤーに向かっていくアルゴリズムを作れるのですが、遮蔽物を入れると、迷路探索のようなアルゴリズムが必要になるので少し様子が変わってきます。)のですが、条件で何をするのか?や特定の条件の時に確率を用意しておいて挙動を判断して選択するようなアルゴリズムを実装するなど、色々な方法がありますが、こうした処理は 【 状態変化で判定結果が変わる 】 ので、サンプリングを行ってデータの参照後の挙動を決定する必要があります。そうなると、内部処理についても様々な処理を実装する必要が出てきます。
つまり、こうした演算処理が、ゲーム実行時に発生しているので、動画のように再生支援機能を実装するとそれほどスペックを高くしなくても対応できるような作りの物は異なります。動画の場合、コンテナ内に格納されたコーディックのデコードをして再生しているだけなので、そのデコード後の再生時のビットレートにマシンが対応していない状態だとコマ落ちや音ズレが発生するだけなので、ゲームほど大きな負荷はかかりません。その理由にSTBのSoCの性能を見ても、それほど高くなく、ゲーミングスマホのような過激な仕様だったり、ゲーム機のような状態ではないので、処理能力をそこまで高くしなくても動く訳です。つまり、動画の再生の場合だと、再生支援ののようなデコード周りとファイルの再生に必要なビットレートの担保が出来ればいいので、データ転送の部分だけで済むので、ゲームのようにリアルタイムレンダリングが発生しないので、ラスタライズ時に必要な膨大な演算処理は発生しません。その為、ゲームと映像では、根本的な処理の方法自体が異なる訳です。
■ UPBGEでの作業
UPBGEはBlenderにゲーム制作機能が付いているので、ゲーム制作用の 【 制御し住む部分 】 が追加された仕様になっています。その為、
■ 素材制作
■ シーンの構築
■ 映像内で使用する動画の制作
のような作業は、従来のBlenderでも出来るので、プロジェクトファイル内でそう言った処理をするとして、これをゲームとして動かすための機能として 【 ロジックエディタ 】 を使用します。
PUBGEを開くと、
のようなスプラッシュが出て、画面下には、
のようにバージョンの情報が出ます。これを見ると、3.0 Alphaがベースになっている事が確認できます。ゲームの出力は、エクスポートで行うので、メニューから
のように 【 Save as game runtime 】 を選択すると書き出す事が出来ます。
■ ワークスペースを作る
正式版の0.2.5だと必要ありませんが、0.3Alphaだとワークスペースを作らないとロジックエディタが存在しないので最初にワークスペースを作る必要があります。まず、
のようにレンダリング画面を用意して、そこから、画面左上にあるアイコンをクリックしてメニューを開き
のように 【 Logic Brics Editior 】 を開きます。すると、ロジックエディタだけの画面になるので、ウインドウの端にカーソルを当てて右クリックすると、
のような状態になるので、ここで水平に分割します。すると、
のように同じ画面になるので、ここを3Dビューポートに変更します。そして上の画面を縦に分割してアウトライナーを追加して、
の状態にします。これで作業が出来る状態になりました。
■ ロジックエディタ
ロジックエディタは、
と言う三つの工程をで制御する事になります。この仕様ですが、センサーで入力の検知をして、アクチェーターで処理をすることになりますが、この時の判定をコントローラーで行う仕様になっています。その為、コントローラーでは、
を実装する事になります。ここでのコードはPythonスクリプトになりますが、コードなしでも動く物を作ることはできます。
Pythonを使う場合、 【 センサー 】 と 【 アクチュエーター 】 を呼び出して動作させる仕様になります。
センサーは処理を検知しますが、 【 アクチュエーターの結果 】 を参照して動作させることができます。また、ランダムの指定もできるので、結果を入力として用意してそれに対して別の条件を用意して判定で処理をするようなロジックを組むこともできます。それぞれに、
■ センサー
■ コントローラー
■ アクチュエーター
が用意されていますが、以前もここで書きましたが、0.3 Alphaだとマイクロソフトのゲーミング用のコントローラーがそのまま動きました。
以前のバージョンだとスティック同士の組み合わせを行うとダメだった(ラグを入れずに処理をする方式のロジックを組みました。)ので、すが、バイブレーションと単独のスティックとボタンだとフツーに動いたので、コントローラーで動く仕様にもできて、21世紀のゲーム機ではごく当たり前に実装されている振動によるダートに突っ込んだ時の振動や、何かを持った時の重さの表現のようなのも再現できます。
バージョンで使用も違うかも知れないので、色々確認する必要がありそうですが、Pythonで制御しない場合だと、論理演算子を使った判定で挙動を作て行くような流れになります。
■ 変数の処理
変数はプロパティを追加する事で扱う事が出来ますが、の2つああります。これは、になりますが、前者がオブジェクトに格納できるプロパティなので、変数の実装になります。この変数を参照して挙動を変えることもできますし、装備の変更や状態の変更などを数値で制御する事が出来るようになります。通常のオブジェクトだと、
のようなプロパティで複数個追加できますが、数値の格納をするだけの存在になります。これに対して、テキストトゲームプロパティは少し特殊な仕様で、 【 テキスト 】 オブジェクトにのみ指定できるプロパティになります。
のようにメニューを呼び出してテキストを追加すると、
のようになりますが、この状態でテキストを選択してプロパティを見ると、
のように数値と名称の指定が出来ないプロパティが実装されています。つまり、名称が 【 text 】 で初期値はロジックで指定しなければならない物が出来上がります。これとは別にプロパティを追加できるのですが、二者を比較すると構造が違う事が解ります。型を見てみると、
のようになっており文字列の条件がなくなっています。
このプロパティは、1つのオブジェクトに1つしか実装できず、型の指定だけをする物になります。その為、テキスト自体を編集すると 【 数的な処理が出来るオブジェクトではなくなる 】 ので、そのまま配置する事になります。あと、このオブジェクトはパスなのでポリゴンではないという特性があります。
■ デバグ
ゲームを作った場合実際に動かしてみないと状態が解りませんから、デバグを行う必要があります。Eevveを選択すると、ゲーム用の設定のプロパティが表示さえっるので、ここでゲームのデバッグが行えます。デバッグのプロパティは、
のようになっており、
のようにシーンの選択が可能になっていますが、8スロット程用意されています。そして、ゲームの実行については、
のような仕様になっており、ビューポート内での実行とゲームとして独立したウインドウでの実行の二種類から選択できるようになっています。
デバッグ時にパフォーマンスの変化を見ながら調整する事になりますが、
のようにコリジョンの判定やフレームレートやプロパティーの表示をするだけでなく、各種変数として実装したプロパティも表示できるようになっています。そして、表示段階のクオリティーも調整できるようになっており、アンチエイリアシングにはSMAAを適応する事が出来るようになっています。
ゲームの実行をすると、ビューポートの設定で差が出るようで、
のようになります。マテリアルビューは影の計算をせずに環境光が効いてる状態なので
のようになりますが、Eeveeだと用意した光源の結果しか得られないので、
のような状態になります。環境色がグレーで、光源が当たっているので、こんな感じになりますが、オブジェクトを追加して間接光の計算をすると、
のようになります。実際の画面は、
のようになりますが、ゲーム内でDoFが使えるので、
のような表現が出来たり、VoFを使う事で、
のように焦点距離を変えることもできます。DoFとVoFは3DCGでプリレンダリングをする場合には当たり前に使えますが、DoFはポスプロの処理になりますから、レンダリング後の結果に対して後処理で追加する物になります。この機能がEeveeでは標準実装となっているので、レンダリングオプションの項目を調整するだけでこうした効果を追加できるようになっています。
■ サンプル
UPBGEを使うと
■ UPBGEのサンプル 1
Blenderの機能でシーンを作り、ロジックエディタで動きを作るような仕組みになっていますが、表示については、Eeveeが使えるので、
■ UPBGEのサンプル 2
■ UPBGEのサンプル 3
のようなことができます。また、ゲーム内では、シェイプキーをアクションとして登録できるので、シェイプキーを作って、それにキーフレームを打って動かしたものをロジックでアクションとして読み込むと、
■ シェイプキーを使った物
のような動きを実装できます。Blender 2.79の場合だと、シーンをレイヤーのように使って
■ オーバーレイ部分 : 平行投影
■ ゲーム画面の部分 : 透視投影
にして、ロジックのシーンのコントロールでこれを常に重ねる仕組みにして使っていましたが、0.3 Alphaではこれがコレクション単位になったので、コレクションにシーンの要素一式を保存してそれを表示させるような仕様に変更されているようです。とりあえず、歪みが出てしまいますが、カメラにテキストオブジェクトをペアレントしてもオーバーレイ表示もどきの事は出来るので、表示が出来なくなったわけではありませんが、
■ テキストの表示をするサンプル
のような事もできます。Eeveeでは、ポスプロの機能が使えるので、ボリュームなども使用できますから、マシンスペックが高い場合、そうした処理も実装できます。マシンスペックが低いのでローポリで行っていますが、
■ ポスプロの処理
のような効果を入れることもできます。
U PBGE 0.2.5
正式版は2.79を使った物になりますが、
■ UPBGE 0.2.5 【 カメラ&キャラの移動 】
のように操作を実装する事も可能ですが、ショットについても追加可能で、
■ UPBGE 0.2.5 【 ショットの射出 】
のような動きや、操作方法を全く考えてなかったので、かなり厳しい作りになりましたが、
■ キャラの移動
■ オプションの回転
■ ショット
の操作を入れた物も作っています。
■ ショットの射出&オプション操作
■ グラフィックの制作に使用した環境
■ Core i5 650(2コア/4スレッド 3.2GHz)
■ ASROC H55M-Pro
■ DDR3 1333 1GBx2 + 2GBx2 (Dual Channel)
■ ELSA Quadro K620 【 PCIex16(GEN2) DDR3 2GB 】
■ HGST HDD & WD HDD
■ WINDOWS 10 x64 (21H1)