【UE4】Unreal Engine 4.16 PreviewのGranular Synthを触ってみる
お久しぶりです。なんとか元気にやってます。
さて、UE4.16のプレビュー版が出てからしばらく経っていますが、なんとUE4にSynthesisプラグインなる新しいプラグインが登場し、
これを適用するとUE4の中でシンセサイザーを操作することが出来るようになりました!!
現時点ではこのように、
・「Modular Synth」
・「Granular Synth」
・「Synth Sample Player」
の3種類が追加可能になっています。(また凄いチョイスですねこれ)
このうち「Modular Synth」については、既に国内でもMozPacaさんによるブログ記事や、
mozpaca.hatenablog.com
株式会社プラスシグナルの大久保さんによるブログ記事
www.plus-signal.com
など、既に触れ始めている方がちらほらいらっしゃいます。
実際に私も触ってみましたが、ゲームエンジン内でシンセを触るという初めての感覚がとても面白く、
これをゲーム内でコンテンツとして落とし込めるようになるまでは時間がかかりそうだと思うものの、
シンセサイザーのパラメータをインタラクティブにゲーム側から反映させる事が出来るようになるのはとても大きな魅力であると感じました。
将来、UE4のシンセサイザー機能を利用したゲームが生まれるまではそう遠くないと思いますし、
いつまでたっても出ないなら私が作ってると思います。
というわけでGranularSynthってなんなんだ
それでは本題に入ります。今回私が触ってみたのは「Granular Synth」コンポーネントです。
グラニュラーシンセってなんぞや?と思う方も多いと思いますが、
DTMにおいてはグラニュラーシンセは結構な数が存在しており、
アンビエントやドローン、ノイズ等の領域では使っている方も多いかと思います。
今回はまず、グラニュラーシンセってなんぞやという話からしてみようと思います。
Granular、と入れてGoogle検索すると「粒状」と翻訳されて出てきます。
「偏ったDTM用語辞典」さんの記事を引用しますと、
偏ったDTM用語辞典 - グラニュラーシンセシス:Granular Synthesisとは - DTM / MIDI 用語の意味・解説 | g200kg Music & Software
「シンセサイザーの波形合成方式の一つ。 元の音を数mSec~数十mSec程度の非常に細かな粒子(グレイン)に分割し、再配置する事で新たな音を合成する。」
とあります。
つまりグラニュラーシンセというのは、元の音を粉々にして再配置して発音するというシンセサイザーなのです。
このため、元の音から別物と言ってもいいような出音になったりすることも多く、
飛び道具的な使い方をしたり、あるいは実験音楽などにも使われたりしやすいシンセサイザーです。
さっそくUE4で使ってみよう
それでは4.16Preview版のエディタを立ち上げて、Third Personなりなんなりのテンプレから新しいプロジェクトを作ってみましょう。
名前は「SynthTest」とかでいいと思います。
そして、新しいActor Blueprintを作っておきましょう。
テスト用のプロジェクトですので、適当に「SoundActor」みたいな名前を付けておきました。
このアクタに、コンポーネントを追加してみます。
このように「コンポーネントを追加」からグラニュラーシンセを追加しましょう。
ついでに、シンセの効果を実感するためにAudio Componentも一つ作っておくとよいです。
(またひっどい名前)
さて。このグラニュラーシンセ、なんとコンポーネントの詳細画面を開くとSynth Sample Playerとほぼ同じ項目しか見えません。
グラニュラーシンセとしての本来の項目(グレインの長さやらどこから切り取るかやら)というのはBP上でいじるしかないのが現状です。
このプラグインはまだ仮実装だと思われるので、将来的にシンセの各パラメータへのアクセスは改善されるのではないかと思います。
Granular Synthコンポーネント周りのノードはこんな感じのものが並んでいます。
・Note On/Off……いわゆる鍵盤を弾く・離す(Modular Synthとほぼ同じ感じ)
・Set Attack Time…シンセのアタック時間を設定
・Set Decay Time…同じくディケイ時間を設定
・Set Sustain Gain…同じく、サステイン音量の設定
・Set Release Time Msec…同じく、リリース時間の設定
これら4つの項目は、シンセの「ADSR」と呼ばれる4項目の設定になります。
興味がある方は、是非ネットで調べてみると良いと思います。
・Set Sound Wave…ベースになる音をセットする
グラニュラーシンセは元になる音があってナンボなので、必須ですね。
・Set Scrub Mode…スクラブ再生モードの可否の設定
「スクラブ再生」というのは、偏ったDTM用語辞典さんでこのような説明がありますので御覧ください。
・Set Playback Speed…グレインの再生速度を設定する
・Set Playhead Time…グレインの再生開始位置を設定する。「現在の再生開始位置地点からずらす」「ファイルの先頭からずらす」の2種類が選べる
・Set Grain Duration…グレインの長さの基準と分布範囲を設定する
・Set Grain Envelope Type…グレインのエンベロープの種類を設定する
・Set Grain Pan…グレインのパンの基準点と分布範囲を設定する
・Set Grain Pitch…グレインのピッチの基準点と分布範囲を設定する
・Set Grain Probability…グレインの分布率を設定する。下がれば下がるほど音が歯抜けになる
・Set Grain Volume…グレインの音量を設定する
・Set Grains Per Second…秒間いくつのグレインを鳴らすか設定する
以上がグレインの設定になります。これらはTickなどからでも呼び出せるので、リアルタイムに音に変化をもたせることが出来ます。
Start/Stopはいいとして、他の関数はだいたいこんな感じのようです。
(間違ってたら突っ込んでやってください)
そんなわけで、さっそくブループリントで並べてみましょう。
Tickで毎フレームごとにシンセの設定を変えてやりながら
別々のボタンで元の音とシンセの音を鳴らせるようにします。
実際に鳴らしてみた
実際に起動して鳴らしてみたのがこれです。
UE4でgranular synthを使ってみたテスト。
— D.Ohnuma@どんばれ。 (@dfk_ohnuma) 2017年5月15日
最初に鳴ったのはAudioComponentに突っ込んだWav音声。その後のノイズみたいなのは、同じWav音声をUE4のGranular Synthコンポーネントに突っ込んで適当にパラメータ決めて鳴らしたもの #UE4 pic.twitter.com/BM7AmRxr0r
元の音から全く別物になったのがわかると思います。
もちろん、設定次第ではそこそこ元の音に近いものが出せるようになったりもします。
(今回がかなり極端な例なので……)
【UE4】Sound Visualizations Pluginと描画ターゲットを使ってサウンドの波形を表示する
はじめに
年度が明けました。今年度からは自分を取り巻く環境も大きく変わるため、ブログの更新頻度も落ちるかもしれませんがご了承ください。
さて、いろいろな音楽系のサービスや、UE4でサウンドを読み込んだときなど、音声ファイルの「波形」が表示されるのを見たことがある方も多いかと思います。
↑こんなやつのことです。
今回の記事では、読み込んだサウンドの波形をSound Visualizations Plugin経由で取得し、描画ターゲットへ書き込む仕組みを作ります。
今回のプロジェクトについて
今回のプロジェクトの動作の流れは、次のようになります。
1.レベル上でGキーを押す
2.ブループリントAがサウンドBから波形データを読み込み、描画ターゲットCへ描画する
3.レベル上にはウィジェットDが描画ターゲットCを表示するようになっており、処理が成功すれば画面上にはサウンドBの波形が可視化される
4.描画ターゲットCの描画内容はCキーを押すとクリアされる
というわけなので、
・ブループリントA
・サウンドB
・描画ターゲットC
・ウィジェットD
の4つを用意する必要があります。
その中のサウンドについては、適当にwavファイルを突っ込めばいいだけなので省略します。
それでは、新規プロジェクトを立ち上げましょう。
立ち上がったらすぐに「編集」→「Plugins」へ入り、
「Sound Visualizations Plugin」にチェックを入れてエディタを再起動しましょう。
描画ターゲットを用意しよう
コンテンツブラウザ上で右クリック→「マテリアル・テクスチャ」→「描画ターゲット」で描画ターゲットを作成します。
パラメータは適当にいじっておきます。これは一例です。
これはブループリント等から書き込むことが出来、それをテクスチャとしてウィジェットなどに利用することも出来るオブジェクトです。
いざブループリント
それではここからが本丸です。
新しいActor Blueprintを作成し、開きます。
用意する変数は2つです。
Divide…サウンドの波形データをいくつ分に分割するか。描画ターゲットのXサイズと同じにしておくことを推奨します。int型。
SoundWave…読み込みたいサウンドをデフォルト値のところに入れておきます。SoundWave型へのリファレンス。
まずはウィジェット表示の部分を作りましょう。
次に、Cキーを押したときのクリア機能を付けます。
では、Gキーを押したときの処理を作っていきましょう。
全体図はこのようになります。
それでは細かい部分を見ていきましょう。
「描画ターゲットクリア」は先ほどもありましたね。
次にBegin Draw Canvas To Render Targetノードで描画開始の手続きをします。
「Size」ピンには指定した描画ターゲットの縦横サイズが入るので、右クリックで「ピンを分割」することで画像のようにfloatピンが2つ用意されるようになります。
Get AmplitudeノードはSound Visualizations Plugin付属のノードです。
Sound Wave…取得対象とするサウンドファイル。
Channel…どのチャンネルから取得するか。ステレオwavなら0と1チャンネルに左右それぞれの音が入っています。
Start Time…サウンドファイルの何秒のところからを対象にするか。
Time Length…Start Timeから何秒分の長さを対象にするか
Amplitude Buckets…取得したデータを入れる配列の長さ。多いほど出力されるデータが細かくなる
SoundwaveからGet Durationで音の長さを取得し、Time Lengthへ代入しましょう。
Divideの値をAmplitude Bucketsへ代入します。これでOut Amplitudeから取得したデータが配列となって出てきます。
ここからはそのデータを使って描画ターゲットに線を引きます。
描画ターゲットのXサイズ=Divide=配列の長さ、となっているので、描画ターゲットのX座標を1ずつずらしながらデータの数値の長さだけY方向へ線を引きます。
この時、全配列の中で一番大きな値(=一番音量が大きいところ)を1として、それと比べた比率で描画するため、小さな音のファイルでも縦幅が1になる部分が必ず生ずる事になります。
これが納得いかん!という場合は基準値を何らかの形で取って、処理するほうが良いと思います(なお私も納得行かないかもしれないw)
そして、配列を回し終わったら「描画終了手続き」を経て一連の流れは終了です。
実際に動かすとこうなる
それでは実際に動かし、Gキーを押してみますと……
このように波形が書き込まれれば成功です。
最後に
Sound Visualizations Pluginはまだまだ色々使えそうなのですが、
私自身も勉強中なので、また新しい記事が書けるよう精進します。
また、Sound Visualizations Pluginについて詳しい方がいらっしゃったら是非ブログ記事を書いていただけると大福さんが喜びますのでお願い致します。
というか色々と教えてください(土下座)
以上でこの記事は終わりです。
お疲れ様でした。
【UE4】ウィジェットでメニュー画面などを作った際にマウス入力とキーボード/ジョイパッド入力を両立させる
ウィジェットブループリントあるある
UE4のウィジェットブループリント、とても便利に使ってます。
拙作「L.F.O.」のタイトル画面もポーズ画面も死んだときの画面もスコア表示等のUIも全部ウィジェットです。
しかしひとつだけ困ったことがありました……
「キーボード入力やジョイパッド入力のイベントがないやん!!!!」
そう、キーボードやジョイパッドでのインプットイベントに対応していなかったのです。
なので作ってみました。
間接的にインプットを取る
ウィジェットブループリントではキーインプットをイベントとしてグラフに作ることは出来ません。
しかし、アクタブループリントのキーインプットイベントからウィジェットブループリント内のイベントや関数を呼び出すことは出来ます。
例えるとこんな感じになります。
その手順を説明していきます。
インターフェースを作ろう
この方法で入力を取れるようにする場合、ウィジェット側に持たせておくブループリントインターフェースがあると便利になります。
というのも、ブループリントインターフェースは対象のオブジェクトを指定して呼び出す時、
そのオブジェクトのクラス名や実際にそのオブジェクトクラス内に該当するイベント及び関数が存在するかどうかに関係なく、
メッセージとして投げっぱなしジャーマンをしてくれるからです。
というわけで、さっそくブループリントインターフェースを作ってみましょう。今回は、
・カーソルを上移動させるCurUp
・同じく下移動させるCurDown
・決定ボタンを押すPushDecide
この3つのイベントをブループリントインターフェースで定義します。
あっという間に出来ました。
このブループリントインターフェースを、ウィジェットブループリントに実装します。
これで、このウィジェットブループリントの中に先ほどの3つのイベントが増えました。
使い捨てアクタくん
次に、入力用のアクタブループリントを作成します。今回の場合、中身はこのようになっています。
複数の種類のウィジェットに対応できるようにするため、変数のWidgetはObject型のリファレンスにしてあります。
また、この時、
「ポーズ中でもティックする」にはチェックを入れておかないと、ポーズ中に出て来るウィジェットなどに対して動作してくれなくなります。
この手段を使う場合、ウィジェット自身が入力用のアクタをスポーンし、そこに一対一の関係で紐付けをする必要があります。
そして、ウィジェットがビューポートからリムーブされる際、入力用のアクタも同時に破壊されるようにしなければなりません。
ウィジェット側のコンストラクタには、
このように入力用アクタをスポーンして、そこに自分自身のリファレンスを登録させるようにしています。
そして、スポーンした入力用アクタのリファレンスを変数にもっておきます。
あとは、(適当な作りではありますが)それぞれの入力に対応したイベントと、それに応じた動作をウィジェット側に組み込んでみましょう。
決定ボタンを押したときにはウィジェットが消えるので、入力用のアクタにも消えてもらいます。
これで、ウィジェットに対するマウスの入力の可否に関係なく、ウィジェットへのキーボード/ジョイパッドの入力が可能になります。
まとめ
ブループリントインターフェースと入力用アクタを使うことで、ウィジェット自身だけではやりづらい動作や実装も、
色々と組み込みやすくなると思います。
もし面白そうだと思ったら、是非試してみてください。
また、もっと効率のいい方法をご存知の方いらっしゃいましたら、是非教えてください。
ここまでお読み頂き、ありがとうございました。
【UE4】Procedural MIDIでMIDIファイルを元にオブジェクトを生成する
最初に
この記事はMozPacaさんの
mozpaca.hatenablog.com
こちらの記事を読み、触発されて書いたものです。
Procedural MIDIを掘り下げていく過程がわかりやすく書かれているので、
まずはその記事を読んでみてください。
ただし、現在のProcedural MIDIプラグインとはBPノードの見た目や項目数等が異なっていますので、それだけは注意してください。
Procedural MIDIとは
UE4でMIDI関連を取り扱えるようになるプラグインになります。
www.unrealengine.com
こちらからプラグインはダウンロードできますが、
必ず上記のサイトから飛べる「サンプルプロジェクト」もダウンロードするようにしてください!
サンプルプロジェクトは、機能を再確認したりする時にもとても役に立ちます。
まずはサンプルプロジェクトを見てみよう
まずは上記のサンプルプロジェクトを開いてみましょう。
「BP_Readme」の中に書かれているコメントを読んでおくと、今後の応用もやりやすくなると思います。
このサンプルプロジェクト内には、MIDIの初期化などを担当する「BP_Asset_Player」、それを継承し、MIDIメッセージから音を鳴らすのを担当する「BP_MIDI_Player」、
更にそれを継承し、MIDIメッセージを元に視覚オブジェクトを操作する「BP_Visual_MIDI_Player」という3つのオブジェクトがあります。
この構成を元にしてプロジェクトを作ってみましょう。
あと、できればサンプルプロジェクトを実行してみてください。MIDIの音が鳴ると同時に画面内のオブジェクトの色が変わるのがわかると思います。
一体何が起きているのか、自分で調べてみるのも良いと思います。
新しいプロジェクトでブループリントを作ってみる
新しいプロジェクトを立ち上げて、「編集」→「Plugin」を開き、
の「MIDI Plugin」の「Enabled」がチェックされているかを確認しましょう。
チェックされていなかったら、チェックして再起動します。
確認が終わったら、サンプルプロジェクトを参考にして3つのブループリントクラスを作ります。
「BP_Base」と、
それを継承してMIDIから音を鳴らしたりうんぬんする「BP_ObjBase」、
更にそれを継承して、オブジェ生成を担当する「BP_ObjFactory」です。
この上の「MIDIメッセージの中身表示」の部分は検証用に作ったものなので、ご自由にどうぞ。
MIDIメッセージとMIDIファイルの関係
MIDIファイル内にある譜面を再生している時の
「音符」とか「テンポチェンジ」とか「ピッチ変更」とかの指示がMIDIメッセージとして流されます。
つまり、MIDIファイル=譜面とすると、演奏者の「ここでこの音符を鳴らすぞ!」という脳からの命令がMIDIメッセージで、
それが身体に伝わって楽器(MIDI音源)を鳴らす、ということになります。
UE4でMIDIメッセージをゲームなどに利用する際、どんな種類のメッセージに対応して動作させるのかを決めるのは大事です。
どんな種類のメッセージでも受け付けてしまうと、「音符に合わせてオブジェクトを作りたい/動かしたい」と思って実装したものが、
ピッチの変更や楽器の変更などのメッセージで誤動作してしまうからです。
MIDIメッセージの種類はこのように列挙型でまとめられているので、
この中の「Note」でだけ動作するようにブランチを用意するといいと思います。
それではBP_ObjFactoryの「OnMidiEvent」イベントを見てみましょう。
この引数の意味ですが、
・Event Type:このメッセージはどの種類のメッセージか(前述の列挙型)
・Event Channel:何チャンネル目のメッセージか(MIDIはチャンネル数が16あります。つまり同時に16種類の楽器の音が出せるようになっています)0~15の間の値になります。
・Event Data 1:0~127の値になります。Noteメッセージの場合は音の高さになります。それぞれの数値が低い順に鍵盤に割り当てられていると考えてください。
・Event Data 2:0~127の値になります。Noteメッセージの場合は音の強さ(ベロシティ)になります。0の場合、無音になります。
となっています。
ですので今回、自分の場合では
このようにして、音の高さをY軸、音の強さをZ軸にして、さらにチャンネルごとに高さと生成するオブジェの種類を分けることにしました。
ここで大事なのは、「Noteメッセージは、MIDIの音符開始時と終了時の、合計2回流れる」ということです。
例えばベロシティ64の音が鳴る時、鳴り始めにベロシティ64のNoteメッセージが流れ、鳴り終わりにベロシティ0のNoteメッセージが流れます。
ですので、単にNoteメッセージを受け取るだけの実装にすると、予想だにしないタイミングでイベントが発生してしまうことがあります。
先ほどの画像の左上で「!=0」の判定を用意してブランチを挟んでいるのは、このためです。
MIDIファイルを用意して再生してみる
あとはMIDIファイルを用意して再生してみましょう。
Procedural MIDIの続編。弦楽4重奏でおなじみのカノンを元にオブジェクト生成。トラック番号に応じて生成するオブジェクトの種類を変えてみたので、わかりやすいかと。 #UE4 #UE4Study pic.twitter.com/a7iURXyELP
— D.Ohnuma@2月中にアプデ (@dfk_ohnuma) 2017年1月24日
こちらの動作デモではわかりやすいように、弦楽四重奏のカノンのMIDIファイルを使っています。
音を鳴らさずにMIDIファイルを再生する
さて、ここからがある意味本番です。
BP_ObjBaseの、赤く囲った部分の接続を外して、もう一度実行してみましょう。
すると、音は鳴らないのにMIDIファイルの通りにオブジェが生成されているのがわかると思います。
( ^ω^)これがとても美味しいのです。
つまりBGMを別に用意して、BGMと同じテンポでMIDIファイルを作り、同時に再生すれば、
BGMの音楽に合わせた演出やオブジェ生成のためだけのスクリプトファイルとして使うことが出来ます。
MIDIファイルはチャンネル数が16あるので、16チャンネル分の命令を1つのファイルで作ることが出来ます。
どのチャンネルのメッセージなのかをSwitchノードなどで分岐させて実装すれば、
1つのステージ内の敵出現、演出、その他もろもろを1つのMIDIファイルに集約することも可能になると思います。
【UE4】コントローラを振動させる
振動が生む感動
ダメージを受けた時、必殺技を出した時、ボスが倒れた時。
色んなタイミングでコントローラが振動するゲームがコンシューマゲームには多いと思います。
適切なタイミングに用意された振動は、ゲームのもたらす情報を増幅し、
場合によっては感動や陶酔感を生むこともあります。
UE4ではコントローラを振動させる事ができ、しかもそれが案外簡単な方法で出来たので、
このブログ記事で共有させて頂けたらと思います。
フォースフィードバックエフェクトを用意する
実際のところ、コントローラを振動させるには、
このようなノードを用意するだけでOKでした。
各パラメータは以下の通りです。
・ForceFeedbackEffect……振動のパターンプリセット
・Looping……振動パターンがループするか否か
・Tag……タグを持たせたい時に使う
ちなみに、Client Play Force Feedbackで振動を開始した場合、
任意のタイミングでClient Stop Force Feedbackノードを使って振動を停止させることが出来ます。
さて、ノードを用意したばかりではForceFeedbackEffectには何も割り当てられていない場合がほとんどだと思います。
このノードは指定したパターンを再生するわけで、振動パターンが書き込まれたフォースフィードバックエフェクトを指定しなければなにも起きません。
これがフォースフィードバックエフェクトです。
「その他」→「フォースフィードバックエフェクト」で新規作成できます。
コントローラのどの部分を振動操作の対象とするかをチェックボックスで選び、
グラフで横・時間にたいする縦・振動の強さを描きます。
そして出来上がったフォースフィードバックエフェクトを先ほどのノードから指定して、完了です。
これで、実行パルスが通過するタイミングでコントローラが振動します。
フォースフィードバックエフェクトについては、
imoue.hatenablog.com
こちらの記事も参考にするとよいかと思います。
お疲れ様でした。
【コミケ】C91出展します
このたび、個人サークル「大福フューチャーラボ」として、
12月29日(明日ですね)のC91初日に出店させていただきます。
サークル配置は 1日目・西ほ-14b になります。
このブログで書いていた記事の内容をそっくりそのまま応用して作った、
UE4製のゲームとそのサントラが主な頒布物になります。
L.F.O. DLカード 1200円
L.F.O.サントラ DLカード 800円
2つセットで買えば2000円ぴったりなので、是非セットでどうぞ(宣伝)
dfkfuturelab.wixsite.com
↑この特設ページで体験版等もDL出来ますのでよかったらどうぞ
このL.F.O.というゲームなのですが、
音にシンクロする3DSTG、というところでRezを思い浮かべる方も多いと思いますが、
むしろ自分の中では、このゲームの源流は
・ナイトストライカー
・アフターバーナー
・スペースハリアー
・ダライアス
・アウトラン
このあたりのオールドゲームにあります。
そして研究所らしくゲームを作ったときのテーマを言いますと、
・3DSTGに「音とシンクロするゲーム」という要素を加えたらどれぐらい気持ちいいゲームが作れるのか?
・UE4の個人制作でどこまで頑張れるのか?
・学生生活の最後に、自分の作りたいものと、自分のやってきたことの集大成を作りたい!
この辺りが主要なテーマだったような気がします。
ギリギリまで開発を続けましたが、自分の中で納得できるゲームになることが出来ました。
おしゃべりするだけでもいいので、当日はぜひ遊びに来てやってください。
今年はUE4でミートアップに登壇させていただいたり、色々自分の身の回りで変化が大きい年だった気がします。
年明けにもL.F.O.の開発で得た経験を記事にしていきたいと思いますので、是非よろしくお願いいたします。
【UE4】高解像度なスクリーンショットを撮る
はじめに
この記事はちょっとしたTips的なものです。
進捗の必需品・スクリーンショット
ゲームの開発中に、「今こんな感じです」と進捗をネットに上げたりする時、
だいたいはスクリーンショットか動画を見せると思うのですが、
今回はその中でスクリーンショットを用意するときに、
より高画質なものを撮影できる方法を書きたいと思います。
さっそく撮ってみる
というわけでエディタを開きます。
そして、この中にある
「選択ビューポート」でプレイしてみましょう。
プレイ中に好きなタイミングで一時停止をします。
Shift+F1でマウスをビューポートの外へ出して、一時停止のところをクリックすればOKです。
するとこのような画面になるはずです。
では、この状態で「イジェクト」をクリックしますと、
↓
このように、ビューポート内が普段の編集時と同じような見た目になります。
この状態だと、
こうしてビューポートの視点を自由に移動させたり、
こうしてレンダリングされる内容を変更したり、
他にも邪魔なアクタを非表示にしたりできるので、
撮りたいアングルやらなんやらを自由に決めます。
その後、左上のメニューを開いて、
この「高解像度スクリーンショット」を選択しますと、
警告とともにこんな画面が出てきます。
スクリーンショットの解像度をn乗にして撮影できます。
それでは試しに、乗数を1.0、2.0、4.0にしてそれぞれ撮影してみます。
撮影された画像は/Saved/Screenshots/Windowsフォルダへ保存され、
"HighresScreenshot+通し番号.png"という名前で保存されます。
これが1.0
2.0
4.0
まとめ
もちろん乗数を上げれば上げるほど、画像のサイズも大きくなるので容量にはお気をつけください。
こうして撮影した高解像度のスクリーンショットは、フライヤーやポスターに印刷するときに役に立ちそうですね。
技術的な話ではありませんでしたが、ここまでお読み頂きありがとうございました。