もんしょの巣穴blog

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  1. --/--/--(--) --:--:--|
  2. スポンサー広告

[UE4] ポストエフェクトを自作してみる

今回はUE4のマテリアル機能を利用してポストエフェクトを自作してみます。
多分、誰もがとりあえずは実装してみそうなアウトラインを表示するための深度を用いたSobelフィルタと、ちょっとしたおまけのポストエフェクトを作ってみます。

Sobelフィルタは画像フィルタの一種で、今回のようなアウトラインを表示するのによく使われます。
カラーに対して行うことも可能ですが、今回は深度に対してフィルタリングを行っています。

Sobelフィルタは自身のピクセルを中心とした3*3ピクセルに対して以下のような係数を掛け算し、それを合算します。

ue054.png

左側は上下方向のフィルタリング、右側は左右方向へのフィルタリングで用いられる係数です。
今回はこの2種類を適用してみました。

では、適当にプロジェクトを作成し、コンテンツブラウザのGameフォルダ直下にPostProcessフォルダを作成しましょう。
ポストエフェクトを作成する場合にこのフォルダでなければいけない、ということはありませんので、Materialの下に置きたい!という人はそちらに置いてもらってもかまいません。





[[UE4] ポストエフェクトを自作してみる]の続きを読む
スポンサーサイト
  1. 2014/04/27(日) 23:14:53|
  2. UE4
  3. | トラックバック:1
  4. | コメント:0

[UE4] C++でブロック崩し その3

[UE4] C++でブロック崩し その1
[UE4] C++でブロック崩し その2

予想通りに長くなってしまっていますが、今回で最後です。
最後はブロックの実装ですが、ここではUE4の機能である破壊可能メッシュ、DestructibleMeshも使っています。
非プログラマでもこの部分については参考になるのではないかと思います。

DestructibleMeshについてはUE4.0のバグを若干踏んでいたのですが、UE4.1では修正されています。
もしも同じような部分で困っている方がいましたらすぐにUE4.1にアップデートしましょう。

では先に進んでいきます。

[[UE4] C++でブロック崩し その3]の続きを読む
  1. 2014/04/26(土) 20:31:53|
  2. UE4
  3. | トラックバック:0
  4. | コメント:0

[UE4] C++でブロック崩し その2

[UE4] C++でブロック崩し その1

前回はWorldSettingsとGameModeの自作を行いました。
今回はここから、パドル、ボール、ブロックの順に作成していきたいと思います。
早速本題に入りましょう。

[[UE4] C++でブロック崩し その2]の続きを読む
  1. 2014/04/26(土) 12:19:13|
  2. UE4
  3. | トラックバック:0
  4. | コメント:0

[UE4] C++でブロック崩し その1

UE4勉強会ではBlueprintのみでブロック崩しを作っていました。
Blueprintの力の一端を見ることができたわけですが、Blueprintを使わなかったらどれだけ大変なのか?
他の参加者がBPを使ってブロック崩しを作成することは容易に想像がついたので、私はあえてBPを使わないで作成してみることにしました。
どういう部分をC++で作ればよいか、BPに対するメリット・デメリットはなんなのか、などの疑問には実際にやってみるのが一番だろう、というのも理由の1つです。

今回試したものについては以下の制約を加えました。

1.Blueprintは使わない
  パーティクルエフェクトくらいは使おうかとも思ったのですが、結局使っていません
2.リソースの指定をC++コード内では行わない
  レベルデザイナがレベルごとに設定できるようにしておくべきだろう、という理由からです

今回の記事は作成手順だけでなく、自分が嵌ったところや気を付けるべきところなども書いていこうと思います。
なお、プログラマ以外の方はちんぷんかんぷんかもしれませんがご了承ください。

では、まずはプロジェクトを作成しましょう。
今回もBlankプロジェクトではなく、BasicCodeプロジェクトを作成します。
名前は何でもいいでしょう。

作成が終わったらUE4勉強会の時と同じようにボールが反射する枠を作成します。
Brushで当たりをつけ、これをBlockingVolumeに変換、その後、そこに壁となるモデルを割り当てます。
枠ができたらBrushでパドル、ボール、ブロックのStaticMeshを作成します。
ここもUE4勉強会と同じです。
作成した3つのメッシュはレベルエディタから取り除いておきましょう。

UE4勉強会の模様はYoutubeにアップされていますので、そちらをご覧ください。
ここまでの手順はUE4勉強会で実際に行われています。

http://www.youtube.com/watch?v=roumUAQqVps

さて、ここからが勉強会と大きく違うところです。

[[UE4] C++でブロック崩し その1]の続きを読む
  1. 2014/04/26(土) 01:35:50|
  2. UE4
  3. | トラックバック:0
  4. | コメント:1

[UE4] Level Streaming

今回はLevel Streamingのやり方です。
これだけなら簡単に終わってしまうのですが、それだとつまらないのでちょっと凝ってみます。
まあでも、メインはこれです。

以前も書いたように、Levelというのはスーパーマリオでいうところの1-1とか1-2といったエリア単位で作成します。
通常のLevelの作成方法はEditorの[File] -> [New Level]から作成します。
こうすると今まで編集していたLevelとは別に新しいLevelが作成されます。
そうして1-1のLevel、1-2のLevelと別々に作っていくわけですが、すべてがそれで対応できるわけではありません。

1-1から1-2に進む際には残機表示画面が表示され、背景は隠されます。
その段階で1-1の背景が削除され、1-2が読み込まれて表示されます。
ユーザはその瞬間を見ることができないので、Open LevelによるLevelロードが入ってもそれほど問題ないのです。
しかし、FPSなどの場合は1つのLevelが非常に長いです。
CoDシリーズの場合なら、中東の街に降り立ってから核爆発で主人公がやられるまでが1つのLevelなわけで、この長いLevelをすべてメモリに載せるのはロード時間的にもメモリ容量的にも厳しいわけです。
そこで、フェードインアウトのような場面切り替えをしない方法が必要になってくるのですが、それが今回やるLevel Streamingです。

海外のゲームではエレベータに乗っている時間や先が見えない自動ドアなどでこの手の手法が用いられています。
もちろん、UE4でも比較的簡単に実装できます。
では、やり方を見ていきましょう。

[[UE4] Level Streaming]の続きを読む
  1. 2014/04/16(水) 22:12:59|
  2. UE4
  3. | トラックバック:0
  4. | コメント:0

[UE4] セーブデータ

前回はLevel間で情報をやり取りするだけのためにC++コードを書きました。
しかし、Twitterでも指摘されたように、セーブデータを使うことでBlueprintのみでの実装も可能です。

もちろんこの方法は考えなかったわけではないのですが、個人的には小さなデータを受け渡しするだけのためにセーブデータを利用するというのは好きになれません。
この辺は古くからのコンシューマゲーム開発者だからかもしれません。

PS1、PS2、DC辺りまでは内部ストレージを持っているハードウェアは稀でした。
たいていはメモリーカードのような小容量でアクセスの遅いものを利用していました。
そのため、そこに一時データを書き込んでLevelのロード後に再び読み出すというのはナンセンスでした。

現在のハードはほとんどが内部ストレージを持っていて、UE4が対象としているハードについてはほぼ間違いなく内部ストレージが十分存在している状態です。
コンシューマ機の場合は規約によって一時データの保存ができないかもしれませんが、最近のハードなら規約に引っかからない可能性もありますね。
とにかく、PCをターゲットとするなら問題ないはずです。
なので今回は、前回やったことと同じことをセーブデータを利用してBlueprintのみで実装してみます。

[[UE4] セーブデータ]の続きを読む
  1. 2014/04/14(月) 23:48:41|
  2. UE4
  3. | トラックバック:0
  4. | コメント:0

[UE4] Levelを開く

とりあえず何かやったら記事にする。
自分が困った部分は他の誰かも困ってるはず。

というわけで今回はLevelを開く、というかLevelを移動する処理のお話です。
注意点として、今回はついにソースコードを書きます。
俺はBlueprintのみでゲームを作るんだ!という人にはあまり縁のない話になるかもしれませんが、こだわらなければそういう人にも意味がある話になる…かなぁ?
とにかく、今回はVisual Studioが必要になります。Expressでも問題ないらしいですが、私の環境はProなのでExpressでの動作は確認していません。
MacならXcodeが必要?こちらも環境を持っていないため動作確認していませんが、たぶん大丈夫でしょう。

ではプロジェクトを作成します。
いつもならBlankプロジェクトを作成するところですが、今回はBasic Codeプロジェクトを作成します。
名前は何でもいいのですが、LevelProjectとでもしておきましょう。

ue021.png

プロジェクトを作成するとEditorは立ち上がりません。その代わりにVisual Studioが立ち上がります。
VSが立ち上がったら構成が[Development Editor]になっていることを確認してから[ビルド] -> [ソリューションのビルド]を選択してビルドしてください。
少々時間はかかりますが、ビルドが成功したら[デバッグ] -> [デバッグの開始]を選択します。
いつものスプラッシュスクリーンが表示され、Editorが立ち上がり、いつものテーブルと椅子が表示されたらまずは成功です。
ビルドに失敗したりEditorが立ち上がらなかったりするようなら…申し訳ないですがForumなどで聞いてみてください。

[[UE4] Levelを開く]の続きを読む
  1. 2014/04/13(日) 20:39:06|
  2. UE4
  3. | トラックバック:0
  4. | コメント:0

[UE4] カメラを設定する

本日はUE4勉強会でした。
講演者の方々、運営の方々、すべての参加者の皆さん、お疲れ様でした。
とても勉強になりましたし、このブログを更新する励みになりました。

というわけで、勉強会から持ち帰った知識を使って当初困ってたカメラの設定をやってみます。
このカメラの設定、結構面白いことも分かったのでその辺も交えて解説していきます。
よろしくお願いします。

UE4でカメラを設定する方法としてはMatineeを使うという方法があります。
もともとMatineeはカットシーン(演劇シーンというとわかりやすい?)を作成するのを目的として存在しています。
いわゆるキャラ劇以外にも、初めてのマップに入ってきたときに全体を見回すようにカメラを動かしたりもしますが、これもMatineeが得意とする部分です。
しかし、プレイヤーが操作可能なカメラはMatineeでは作成しづらい(というかできない?)ですし、ただの固定されたカメラであればMatineeを使うのももったいない。
そこで、シーンにカメラを置いてそれを動かしたり、必要な場所に固定したりして使おうということになるのですが、シーンにカメラを置いたらそれだけでOKということにはなりません。
そこで、Blueprintを利用して設定します。

[[UE4] カメラを設定する]の続きを読む
  1. 2014/04/13(日) 00:17:41|
  2. UE4
  3. | トラックバック:0
  4. | コメント:0

[UE4] UE4のフレームワーク

第2回目は何かを作ってみた、というものではなく、UE4の基本となるフレームワークを自分なりに解釈したものを書いていこうかと思います。
ゲームエンジンはそのフレームワークを理解するのが重要だと考えています。
フレームワークを理解すると、自分がやりたいことをどうやって実現するのかひらめきやすくなると思います。
今回は自分の理解を深めるため、および間違いがあったら突っ込んでもらうために記事を書きます。
なお、元ネタはUE4ドキュメントの以下のページです。

https://docs.unrealengine.com/latest/INT/Programming/Gameplay/Framework/index.html

また、UE4のソースコードとしては以下のフォルダに今回説明するもののほとんどが入っています。

Engine/Source/Runtime/Engine/Classes/GameFramework

では、進めていきましょう。

[[UE4] UE4のフレームワーク]の続きを読む
  1. 2014/04/11(金) 23:46:53|
  2. UE4
  3. | トラックバック:0
  4. | コメント:0

[UE4] Matineeを使ったフェードイン・アウト

 このブログはもんしょの巣穴 Unreal Engine 4 出張所になりました。
いや、まあ、それは半分嘘ですが、半分はほんとです。たぶん、UE4の話題はここでやります。
画像貼るとかはこっちの方が楽かな、と。
動画でやる方法もありそうですが、喋りの下手な人間は文章でやった方がいいはず。

ってなわけで、今回は第1回ですが、Matineeを使ってフェードイン・アウトをやってみようと思います。
ゲームを開始したら黒画面からフェードインして、テーブル上の置物に近づいたらフェードアウトするだけです。

まずはブランクプロジェクトを作成します。名前はFadeProjectとでもしておきましょう。

ue001.png

 作成するとテーブルと椅子、置物のレベルが出てくるはずです。

[[UE4] Matineeを使ったフェードイン・アウト]の続きを読む
  1. 2014/04/09(水) 00:26:32|
  2. UE4
  3. | トラックバック:0
  4. | コメント:0

プロフィール

monsho

Author:monsho
ゲームプログラマ?

最近の記事

最近のコメント

最近のトラックバック

月別アーカイブ

カテゴリー

ブロとも申請フォーム

この人とブロともになる

ブログ内検索

RSSフィード

リンク

このブログをリンクに追加する

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。