UE4 SD ベルトコンベアを作る
最近UE4を触っていなかったのでリハビリを兼ねてベルトコンベアを作った。
適当にベルトコンベア pic.twitter.com/T157sbBfQ9
— ai (@ai_9684_dct) 2018年8月6日
Substance Desingerでテクスチャを作る
Substance Designerを使ってベルトコンベア用のテクスチャを作る。説明するほどの事はしていないので画像を説明と代えさせてもらう。こと無機物のテクスチャを作ることにおいてSubstance Designerは最強のツールだと思う。
マテリアルを編集する
作ったテクスチャはsbsar形式でexportし、"Substance Plugin"を導入したUE4で読み込むことが出来る。自動でマテリアルが生成されるのでそれにタイリングやUVアニメート機能を組み込んでいく。
タイリングは、TexCoordをR,Gでそれぞれマスクし、ScalarParameterをかけ合わせればよい。
UVアニメートをX方向Y方向、それぞれをパラメータで制御したい時はMakeFloat2を間に噛ませてSpeedに繋げなければならない。
あとはこれを各テクスチャのUVsにつなげれば良い。
板ポリに貼る
編集したマテリアルを親にマテリアルインスタンスを生成。モードパネルにあるPlaneにそのマテリアルインスタンスを適用し、パラメータを変えれば冒頭の動画のようなベルトコンベアの完成。
UE4 VPS上にSVNサーバを立ててUE4でソースコントロールしたい(コミット編)
続き。
前回でレポジトリの作成と公開ができた。今度はこのリポジトリにUE4プロジェクトを追加して、ソースコントロールに繋ぐ。
TortoiseSVNをDLする
TortoiseSVNの最新バージョンを以下のリンクからDLし、インストールする。
UE4プロジェクトをチェックアウト&コミットする
予めバージョン管理したいUE4プロジェクトを作成しておく。エクスプローラーからそのプロジェクトが入っているディレクトリに移動し、その上で右クリック→SVNチェックアウトを行う。
この時リポジトリのURLにはブラウザでSVNリポジトリを確認する時使ったURLをコピペする。"空でないフォルダーにチェックアウトする"などと警告が出るが無視すればよい。
続けて右クリック→SVNコミットを選択し、プロジェクト全体をリポジトリにコミットする。
ソースコントロールに接続
ここまで終わったらUE4でプロジェクトを開く。ツールバーからソースコントロールを開き、
- プロバイダを「Subversion」
- Repositoryを「ブラウザで確認した時に使ったレポジトリのURL」
- User Name、Passwordを「sudo htpasswdで設定したユーザー名、パスワード」
として設定を承認する。
画像のようにソースコントロールの横に緑色のアイコンが表示されたら成功。
他のPCと共同作業する時
他のPCと共同作業したい時はまず、VPS上のUbuntuで以下のコマンドを叩く。
$ sudo htpasswd -m /etc/apache2/dav_svn.passwd username $ sudo service apache2 restart
これでユーザーを新規追加することが出来る。共同作業するメンバーにそれぞれこのユーザーを割り振るとよい。
共同作業に参加する人はエクスプローラーのどこでもいいので右クリック→SVNチェックアウトを選択。そうすると自動的にリポジトリに上がっているプロジェクトがダウンロードされる。
ここまでできたら後はプロジェクトを起動して同様にソースコントロールに接続するだけ。
まとめ
VPS契約というお金のかかる方法だが、自宅でサーバ構築して運用する時も電気代がかかることを考えればそこまで差はないと思う。
UE4でチーム制作をする時は是非この方法で上手くソース管理をしてみてほしい。
Python Q学習で迷路を解くプログラム作った(コード公開)
大学の講義の最終レポートとして作った。
参考サイトは以下の辺り。
1つめの参考サイトでQ学習についてざっくりと理解した上で、2つめの参考サイトで公開されてるコードを個人的に分かりやすいように改変した。参考サイトと違い可視化をしていない(ようなもの)のでかなりシンプルになっている。
詳細が気になる方はこれの解説をしたレポートを上げるのでDMなりコメント欄なりで連絡ください。
UE4 VPS上にSVNサーバを立ててUE4でソースコントロールしたい(構築編)
チーム開発ではバージョン管理が必須。UE4ではGitではなくSVNを使うのが一般的。そしてチーム開発していくならリポジトリをサーバーに公開し、アクセスできるようにしておかねばならない。一般的には個人でポート開放し、サーバを立てるのだろうが、私は今ポート開放が出来ない環境に住んでいる。そこで、レンタルサーバーを借りて、その上にSVNサーバーを立てることとした。
今回はその手順を二回に分けて説明する。
続きはこちら。
参考サイト
How to Install SVN Server on Ubuntu 16.04 & 14.04 LTS - TecAdmin
VPS契約+Linuxサーバー構築
今回はVPSに初期手数料のかからないConoHaを採用。別に他のVPSでも問題はない。多分。
今回はUbuntu 16.04、1GBプランで作業を進める。
Apacheをインストールする
rootでログインし、OSを更新してからapacheをインストール。
$ sudo apt-get update $ sudo apt-get install apache2
SVNサーバーをインストール
続いてSVNサーバーをインスールする。
$ sudo apt-get install subversion libapache2-mod-svn libapache2-svn libsvn-dev
apacheを再起動。
$ sudo a2enmod dav
$ sudo a2enmod dav_svn
$ sudo service apache2 restart
ここで人によってはsudo: unable to resolve hostが表示される。
その際はまず以下のコマンドで/etc/hostsを確認
$ sudo cat /etc/hosts sudo: unable to resolve host xxxxxx 127.0.0.1 localhost 127.0.1.1 hostname.domainname hostname . . .
この時表示されるxxxxxxを覚えておき、vimで /etc/hostsを編集。
127.0.1.1 hostname.domainname hostname
の直後に、
127.0.1.1 xxxxxx
を追加し上書き保存。
念の為catでちゃんと変更されているか確認しておく。
$ sudo cat /etc/hosts 127.0.0.1 localhost 127.0.1.1 hostname.domainname hostname 127.0.1.1 xxxxxx . . .
これでsudo: unable to resolve hostは表示されなくなるはず。
Apacheの設定ファイルを書き換える
$ vim /etc/apache2/mods-enabled/dav_svn.conf
以下を入力し上書き保存する。
<Location /svn> DAV svn SVNParentPath /var/lib/svn AuthType Basic AuthName "Subversion Repository" AuthUserFile /etc/apache2/dav_svn.passwd Require valid-user </Location>
参考サイトでは
Alias /svn /var/lib/svn
としていたが、これを入力すると後々うまくいかない。理由はわからん。
SVNレポジトリの作成
$ sudo mkdir -p /var/lib/svn/ $ sudo svnadmin create /var/lib/svn/myrepo $ sudo chown -R www-data:www-data /var/lib/svn $ sudo chmod -R 775 /var/lib/svn
SVN用のユーザーを作成する
$ sudo htpasswd -cm /etc/apache2/dav_svn.passwd xxxxxx
xxxxxxはユーザー名。これを打つとパスワード入力が求められる。入力したパスワードがユーザー名と紐付けられる ほかにユーザーを追加したい時は、
$ sudo htpasswd -m /etc/apache2/dav_svn.passwd username
と入力する。
apacheを再起動。
$ sudo service apache2 restart
ブラウザで確認する
ブラウザでURL"http://(IPアドレス)/svn/UErepo"を検索し以下の画面が表示されれば成功。
続き。
GitHubアカウント取った/VS2017でリポジトリ作成時エラー
といっても昔大学の講義の時に取ってたのだが。当面はSiv3D/OpenSiv3Dでの開発に利用すると思う。
VS2017でリポジトリ作成時、以下のエラーメッセージが表示された。
リモート リポジトリの複製を作成中にエラーが発生しました: Git failed with a fatal error. unable to access 'github.com/ai2playgame/...…': SSL certificate problem: self signed certificate in certificate chain
一応このままでもgithub上にリポジトリ作成は出来ているのだがpushができなくなる。
解決するにはコマンドプロンプトに以下のコマンドを入力すればよい。
$ git config --global http.sslVerify false
後はこのサイトの指示に従えばちゃんとcommit出来るはず。
毎日1コミット続けていきたいなあ
UE4 GameModeとGameStateの罠
便利なGameModeとGameStateだが、少し引っかかったことがあったのでメモ。
GameModeBase継承クラスを作ってそれにGameState継承クラスを登録したら以下のようなエラーを吐いた。
LogGameState: Error: Mixing AGameState with AGameModeBase is not compatible. Change AGameModeBase subclass (BP_○○GameMode_C) to derive from AGameMode, or make both derive from Base
GameModeBaseクラスにGameState継承クラスを持たせることは出来ないらしい。つまりGameStateクラスを持つことが出来るのはGameModeBaseを継承したGameModeクラスだけだということ。図で表すとこんな感じ。
要注意。
UE4 Niagaraを触ってみる(4) StaticMeshの形にパーティクルをスポーンさせる②
続き。以下の記事を一通り進めた前提で話を進めるのでまだ見ていない方はそちらからどうぞ。
Lerpノードについて
Niagara Module Scriptを追加。ここではある0.0-1.0の入力を元にパーティクルの位置と色を線形に補間するモジュールを作成する。
ここでLerpノードに要注意。NiagaraのLerpノードは少し分かりづらい。
これがNiagara版Lerpノード。
これがマテリアルのLerpノード。
マテリアルで言うところのAlpha値は、NiagaraではCに相当する。最初見た時は分かり辛いので要注意。ここでは特に説明しないがNiagaraの算術演算系のノードはかなり癖のある見た目のものが多いので慣れが必要(ifとか)。
色と位置を線形補間するModule Scriptを作成する
全体図はこちら。
Map Getで
- Module.beforePos
- Module.afterPos
- Module.beforeColor
- Module.AfterColor
- Module.alpha
を追加。alphaでbefore ○○ と after ○○を線形補間する。
alpha値を0.0から1.0にClampし、その値で位置と色を線形補間(Lerp)。
こうして得た位置と色をParticles.Position、Particles.Colorに設定する。
Emitterの修正
前回記事で作成したEmitterを元に編集する。まず、以下のモジュールを削除。
- Particle -> Static Mesh Location
- Particle -> Color
続いて、Particle Spawnに2つ目のSample Static Meshを追加しStaticMeshを設定する。Niagaraでは同じモジュールが追加された時両者を区別するため001と言ったプレフィックスが自動で付く。
Particle Updateに先程作成したModuleを追加。まず、BeforeColorとAfterColorを設定。
beforePosにはSampleStaticMeshで取得したメッシュの位置を使い回したい。こういった時は画像の赤で囲った下三角マークをクリックし、Link Inputs -> Particle AttributeからInitial.SampleStaticMesh.MeshPositionを選択する。
これでSampleStaticMeshモジュールで取得したMeshPositionをそのままbeforePosに流用できる。
同じようにafterPosをInitial.SampleStaticMesh001.MeshPositionとリンクさせる。
alpha値はカーブで編集したい。青で囲んだ下三角マークをクリックしDynamic Inputs -> float from Curveを選択。これでalpha値をカーブに合わせて設定することが出来る。
ブログ用④ pic.twitter.com/TzgLUEIylq
— ai (@ai_9684_dct) July 22, 2018
完成!
おまけ
今のままではafterが上に表示されてしまい非常に分かりづらい。というわけでエミッター編集画面での表示順を変更する方法を。
Niagara Module Script編集画面のDetail->Variable MetaDataではパラメータに様々なメタデータを設定できる。そのうちのEditor Sort Priorityという数字はエミッター編集画面での表示優先順位を表しており、若い数字ほど上に表示される。もし同じ値の場合は名前の昇順で並び替えられる。
Editor Sort Priorityを設定してやれば、
この様に見やすく並び替えることが出来る。