nemesのブログ

初心者による初心者のための初心者を言い訳にした色々創る記録

Mayaで導火線的なエフェクトをつくる

Mayaで導火線的なエフェクトをつくる

この記事は大学生時代に書いてる途中で力尽きた未完成投げっ放しジャーマンです。供養のために公開。

 

タイトルのままです

学校の図書館にMayaのエフェクトの本が何故かあったのでそれの内容から備忘録としてまとめてみる

ちなみにMayaのスキルは独学のお察しレベル

Maya15

 

ジオメトリを作る

1、

CVカーブを使い、導火線にするものを作る

今回は、みんみー(10秒で作った)

アウトライナでカーブノードの名前を変更(minmi

f:id:nemes:20171108162945p:plain

 

2、

名前変更したカーブノード(minmi)を選択する

レンダリングメニュー>ペイントエフェクト>カーブユーティリティ>ブラシをカーブにアタッチ)を選択

f:id:nemes:20171108165304p:plain

すると黒い太線のストロークができる

f:id:nemes:20171108165452p:plain

 

3、

ストロークをジオメトリに変換する

まず、アウトライナで先ほどできた(stroke1)ノードを選択する

(修正>変換>ペイントエフェクトをポリゴンに、のオプションを選択)

出てきたオプションウィンドウで「四角ポリゴン出力」と「ストロークを非表示」にチェックをつける、他はデフォルトのままで変換を押す

f:id:nemes:20171108170045j:plain

 

4、

変換するとアウトライナに(brush2MeshGroup)というノードが作成され、そのグループ下にカーブから生成されたジオメトリが配置される

(brush2MeshGroup)を展開し、中にある(brush2Main)を選択してペアレント化を解除する[Shift + P]

最後に(brush2Mesh)ノードをダブルクリックして名前を変更する(minmiGeo)

f:id:nemes:20171108171530p:plain

 

 シェーダの設定

1、

(ウィンドウ>レンダリングエディタ>ハイパーシェード)からハイパーシェードを開く

blinnシェーダを作成し、ジオメトリ(minmiGeo)にアサインする[マウス中ボタンドラッグ]

 

2、

ハイパーシェードのマテリアルで先ほどのblinnシェーダを選択

アトリビュートエディタを開き、白熱光の右のチェックのボタンを押す

出てきたレンダーノード作成ウィンドウで[2Dテクスチャ>ランプ]の順で選択

f:id:nemes:20171108175733p:plain

 するとこんな感じ([6]キーでテクスチャ表示を忘れずに)

f:id:nemes:20171108180150p:plain

 

 3、

(ウィンドウ>UVテクスチャエディタ)でエディタ画面を開く

開いたらそのエディタのタブで(テクスチャ>minmiGeo | blinn1SG | ramp1)を選択

 

f:id:nemes:20171108180939p:plain

するとエディタにランプが表示される

 

4、

 

UVエディタ上で右クリックし、出てきたメニューから「UV」を選択

エディタでUVをいくつか選択した後、[Ctrl]キーを押しながら選択したUV上で再び右クリック

メニューからシェルを選択

f:id:nemes:20171108185211p:plain

 

5、

UVテクスチャエディタのタブメニューから(ポリゴン>正規化)をクリック

ビュー上でのジオメトリのテクスチャの表示が変わる

 

6、

ハイパーシェードを開き、テクスチャのタブでramp1ノードを選択

アトリビュートエディタを開く

「補間」を「なし」に変更

また、好きな色を下の画像のように設定する

f:id:nemes:20171108185959j:plain

こんな感じになる

f:id:nemes:20171108190523p:plain

 

 なむなむ

 

 

 

 

 

 

 

 

UE4でNPCとの会話を発生させたい。

UE4NPCとの会話を発生させたい。

f:id:nemes:20180913230738j:plain

 

RPGなどで必ず必要な会話。キャラクターを操作し、NPCの近くで何らかのボタンを押すと会話を始める、こんなイベントを実装してみたい。

今回述べてる会話とは、NPCの近くで指定の操作をするとUMGが立ち上がり予め用意しておいたテキストを表示するというもの。ちなみにUMGがなんの略かは知らない。(UnrealMotionGraphicsらしい)

また、選択肢によってその後NPCに異なる動作をさせるところまで出来たら上出来かな。ゲームの中でくらい会話したいよな。

 

ということで今回の理解のゴール。

・インプット処理

コリジョンイベント処理

・UMG作成

・ブループリントとUMGの連携

・選択肢による動作

毎度ながら適当な定義のゴール。まぁやっていきましょう。

 

  • UE4NPCとの会話を発生させたい。
    • 0.準備
    • 1.会話対象の作成と配置
    • 2.確認用のUMG作成
    • 3.ブループリントの実装
    • 4.ブループリントとUMGの連携

 

0.準備

新規プロジェクトをThirdPersonExampleMapで作成。

インプット処理を追加しておく。今回はキーボードFをアクションボタンとする。

編集タブ>左ペインインプット>BindingsでActionMappingsの+ボタンを押す。名前をTalkにしてFキーを割り当てる。

f:id:nemes:20180808200545j:plain

 

1.会話対象の作成と配置

・会話の相手を作る。コンテンツ内で右クリックブループリントクラス>アクターを作成。名前をBP_TalkingActorに変更。

・BP_TalkingActorをダブルクリック。左上コンポーネントを追加、StaticMeshを選択。StaticMeshをDefaultSceneRootに重ねる。

・右詳細パネルのStaticMesh欄のStaticMeshでSM_TableRoundを選択。なんでもいいです、壁とも会話できますが今回はテーブル。

f:id:nemes:20180808202601j:plain

コンパイルと保存をしてレベル内の適当な場所に配置。

 

2.確認用のUMG作成

 ・今回は標準で配置してあるThirdPersonCharacterに処理を書いていこう・・・と、その前にとりあえずのUMGを作成しておく。仕上げはあとでします。

・コンテンツに新しいフォルダを作成、名前はUMG。その中で右クリックし、ユーザーインターフェイスウィジェットブループリントを作成。名前をTalkBoxに変更。

・TalkBoxを開き、要素を追加していく。左上パレットでCanvas Panelと検索、画面内にドラッグ。アンカーはこれ。

f:id:nemes:20180811020452j:plain

数値はこんな感じf:id:nemes:20180811020548j:plain

・左上パレットでImageと検索、検索に出てきたImageをドラッグして今作ったTalkPanelに重ねて親子付けする。名前はTextWindow。

f:id:nemes:20180816001254j:plain

・アンカーはさっき選んだやつの一つ上の左右下揃えのやつ、その他数値はこんな感じ。Appearance>Brush>Tintで色を変更。好きな色でいいです、また、お好みでアルファで透かしましょう。とりあえずここまでやって放置。

f:id:nemes:20180811021319j:plain

 

続きを読む

UE4でキャラクターを動かすまでを理解する

ゲームの基本?と言える入力からのキャラクター移動についてできる限り理解してみる。

 

今回のゴールはこれらを理解すること

・インプット処理

・移動のためのブループリント

 

0.前準備

 

・コンテンツ有サードパーソンマップでプロジェクトを作成。

 

 1.メッシュの追加

 

・コンテンツ内で右クリック>ブループリントクラス>Pawn を追加。

名前はMyPawn

Pawnはコントローラから入力値を受け取れるアクター。何かしら操作するならコレ?

 

・左上のコンポーネントを追加からStaticMeshを追加。次に右ペインの詳細からStatic Mesh>好きなものを選択、今回は1M_Cube

追加したら左上のStaticMeshをDefaultSceneRootに上書き。ドラッグして重ねるだけ。

 

さらにコンポーネントを追加からcameraを選択し追加。Meshの後ろに動かす。

f:id:nemes:20180806030100j:plain

・ここまで出来たらとりあえずレベルに配置。

 

1.5.インプット(蛇足)

 

・アクションインプットとは

Pressed or Released、つまり押したか押してないかの入力のこと

アクシズインプットとは

マウスをドラックしたりスティックを倒したときの移動量の数値の入力のこと。

すぐ0に戻る。

 

・編集>プロジェクト設定>(左ペイン)インプット>Binding

ここで入力からの操作を割り当てる。ゴミ箱ボタンに注意、全部消える。

f:id:nemes:20180806011635j:plain

・とりあえずなんか設定する。

f:id:nemes:20180806013414j:plain

・レベルBP

こんな感じで書いてみる。ちなみに上のバインディングを設定しないとノード検索のときにそもそもキーボードキーが検索結果に出てこない。今回だとW,S。

f:id:nemes:20180806014346j:plain

これでコンパイルしてプレイすると、Wを押すごとに一瞬「前進」の文字が表示される。そしてTを押すと押している間だけ1になり離すと0になる。

f:id:nemes:20180806014805j:plain

今度はマウスのノードを試す。この場合だと右にマウスをドラッグすると数値が1に近づき、左に動かすと-1に近づく。

 

2.インプット

 

・上記で説明したプロジェクト設定を開く。

f:id:nemes:20180806024958j:plain

こんな感じで設定。マイナス値を設定することで左を表す。

そしてMyPawnイベントグラフ画面へ

 

・イベントグラフの作成

 こう!(投げやり)

f:id:nemes:20180806030612j:plain

 このAddActorLocalOffsetは繋いだコンポーネントにローカルで値を加えるようなやつ。よくわからないね。

 

・ 最後にThirdPersonCharacterがプレイヤー権を所有しているのでそれを変更する。ThirdPersonCharacterを選んで詳細パネルのPawnからAuto Possess PlayerをDisableに変更。

同様にMyPawnの同じ項目をPlayer 0に変更。これで追加したMyPawnがプレイヤー権を得る。

f:id:nemes:20180806031449j:plain

 

動いた?僕のは動いた。

これで何かを動かしたいときに色々できるね。

早くゲーム作りたいね。じゃ!

 

 

 

 

個人的ブループリント学習記録

個人的ブループリント学習記録

 

BPには大きく2種類ある

 

クラスブループリント

・クラスごとに紐づいているブループリント。個別の役割を持たせたいときに使う。

 

レベルブループリント

・レベルに紐づいてるブループリントである。レベルごとに存在する。

 

イベントBeginPlayノード

・ゲームプレイが始まったときに一回だけ呼び出される。例えばPrintStringをそのまま繋げるとプレイと同時に一回だけ表示される。

 

イベントTickノード

・毎フレーム毎に呼ばれるノード。例えばPrintStringをそのまま繋げるとプレイ中は常に表示される。

 

 

・Set/Getについて

Set = 変数に値を格納する。箱に値を入れるイメージ

Get = 変数から値を取り出す。箱から値を取り出すイメージ

 

下の画像は同じこと

f:id:nemes:20180726204706j:plain

f:id:nemes:20180726204712j:plain

 

・関数について

関数とは機能をひとまとめにしたもの(語弊あり)

ローカル変数はその関数内でのみ存在できる