【UE4】初心者が頑張る建築ビジュアライゼーション:ライティング編
おっすすみさきです。
今日の投稿はUnreal Engine 4 (UE4) Advent Calendar 2017 - Qiitaの21日目の記事になります。
UE4のライティング勉強したい!
いやまあぶっちゃけ公式ドキュメント見ろ、でだいたい片付けられてしまうもんですが。
それだけUE4のドキュメントが優秀ってことだね。
それだとあんまりだーっていう僕みたいな初心者のため(主に自分のため)に、ライティングなしの状態からそれっぽい状態にするチャレンジをします。
これアドカレで良いのかなぁ…?(汗
まずはライトの確認
UE4には色んな種類のライトがあります
Point Light
点光源、オムニライト、全方向性ライトとも。
UE4では電球の形をしています。
このライトから出る光は、このライトを配置した「点」から照射されます。Spot Light
円錐型のライトです。
PointLightに絞り機能をもたせた感じですね。
Spot Lightの光線幅は円錐角(UE4:Inner Cone Angle)、光線の周りのエッジの柔らかさは半影角(UE4:Outer Cone Angle)によって決まります。
Directional Light
指向性ライト。太陽などの非常に遠方にある光源からの照明に使います。
「位置」は関係なく「向き」のみが影響します。
Sky Light
環境光に使用する特殊な光源です。
遠方の色をサンプリングして、その色で照らします。
2次光源に使用することが多いでしょうか?
(多分扱いは難しい…)
なお、UE4にはエリアライト(面光源)に相当するものはありません。
使いたい場合は発光するマテリアルを設定したStaticMeshを使いましょう。
(今回は対象外な)
では、ライトを置いてみる
ライティングのコツは、一気にいろんなライトを置かないことかなと思います。
どのライトがどこに影響を与えているのかわからなくなりますからね。
あと、出来ればライトの数は少ないほうが良いのかなと。
今回はサンプルの部屋を使いますよー
ライトなし
流石にライトがないと見えないのでUnlit表示です。
太陽光を設置
太陽光となるDirectionalLightを配置します。
一番確定しやすいかな。
天球を設置
今回は昼の想定で行きます。
UE4にはBP_Sky_SphereというActorが用意されていますので、これを使いましょう。
同シーンにあるDirectionalLightと紐付けると、太陽の方向をエミュレートして空の色をいい感じに変えてくれます。
BP_Sky_Sphereを使わない場合は、Atomospheric Fogを調整して使うのかな。
Reflectionを使う場合は、この時点で雑に(大きめに)置いておくと良いですよ
2次光源を設置
そのままではあまりにも部屋が暗いです。
デフォルトでグローバルイルミネーションによる反射が行われているとはいえ、ちょっと窓から離れた位置が暗すぎますね。
今回はSkyLightを置きました。
置き方が雑過ぎますが、まあええやろ。
室内にSkyLightを置いた際、外からの光が入ってくるところ(主に窓)に、Lightmass Portalを設置しておきます。
SkyLightの品質が上がりますよ。
PostProcessを設定
とりあえずこんな感じ、ってなったらPostProcessVolumeを設置しましょう。
BloomとAutoExposureを弄ります。
ほかはまあ…今じゃなくてもいいかなって。
PostProcessVolumeにはInfinite Extent(Unbound)のチェックを入れておくと領域指定が不要で楽です。
部屋ごとに印象を変えたい場合でもなければ複数置くことも無いですし。
結果
ところどころムラが出てますが…まあええやろ。
ちなみにこの視点の裏側はまだ結構汚いので要修正です。
なお、World SettingsのLightmass Settingsを色々弄ると色々変わるようです。
設定項目多すぎ…
どれがどれかまだ勉強中なので、ここはサンプルと勘を信じて弄っておきました。
補足
建築ビジュアライゼーションでは、図面があったりするので、図面通りにライトを設置したくなりますが、
省略出来るものは省略したほうが良いです。
現実のライトに合わせすぎると、ライトが集中して重なり、ライトに×マークが付き、StationaryLightではなくMovableLightとして扱われてしまい、処理が重くなります。
(特にSpotLight、PointLightあたり)
ライトの形をReflectionで床に出す、とかでなければ、ある程度マージしたほうが良いでしょう…
参考資料
- 公式ドキュメント
- Lightmass Deep Dive vol.1のスライド
www.slideshare.net
今回は頑張った。
今後も頑張って勉強していきますよ。
(ちょうどお仕事で使ってますし)
ではでは。
SlackのSlash Commandsをとりあえず実装してみる
すみさきです。
最近気が緩みすぎてるのかSAN値が減りすぎてやる気が起きないのか、いろんなことが進んでないです。
というわけで息抜き回。
SlackのSlash Commandsを簡単に使ってみます。
前提
今回はAWSを使用しています。
あと、Serverless Frameworkも使います。
もちろんSlackのアカウントも必要です。
処理部分
まずはSlackからのリクエストを受け付ける部分を作りましょう。
新しいサービスを作成します
sls create -t aws-python3 -p SlackAppService
中にserverless.ymlというファイルがあるので以下のように編集しましょう
service: SlackAppService provider: name: aws runtime: python3.6 stage: dev region: ap-northeast-1 functions: hello: handler: handler.hello events: - http: path: helloworld method: POST
(例では配置先を東京リージョンにしてますよ)
次はhandler.pyを以下のように書き換えます
import json from urllib.parse import parse_qsl def hello(event, context): # Slackからのリクエストをパースする params = dict(parse_qsl(event['body'])) # レスポンスを作成 res_body = {'text': 'hello <@{0}>'.format(params['user_id'])} response = {"statusCode": 200, "body": json.dumps(res_body)} return response
Slackから送られてくるPOSTリクエストの中身は、x-www-urlencodedなので、parse_qslでパースします。
parse_qsで直接dictにしても良いのですが、valueが配列になってしまうので・・・
今回は使っていませんが、使用したコマンドやパラメータを取りたい場合は、commandやtextの中に入っています。
詳しくはドキュメントを見るべし。
ソースが書けたらデプロイしましょう
sls deploy
Slash Commandsの作成
https://api.slack.com/appsにアクセスして、「Create New App」をクリック。
画面の指示に従ってアプリ名と開発ワークスペースを登録する。
アプリが作成できたら、FeaturesのSlash Commandsを選択し、「Create New Command」をクリック
コマンド名、リクエスト先、Slack上で表示されるツールヒントなどを入力して登録しましょう。
全部作成できたら、SettingsのInstall Appから、自分のワークスペースにインストールすればOK
結果
こんな感じになるはず (コマンドをechoするわけではないのでちょっとわかりづらいっすけどねー)
AWS Lambdaや他のバックエンドに命令を送ることが出来るようになりますよ。
やったね。
MacでもVSCodeでUnrealC++が書きたい
すみさきです。
ちょっと気になってMacでもVSCodeでUnrealC++とデバッグができるのか調べてみました。
※なお、片っ端からいろんなことを試してたので、確実な環境構築手順がわからないです…
とりあえず導入
まずVisualStudioCodeを入れましょうね
(Macで色々開発している人はもちろん入ってるっすよねぇ?)
Visual Studio Code - Visual Studio
VSCodeが入ったら、以下のExtensionsを入れましょう。
LLDB Debuggerはデバッグに使うので入れておきましょう
XCodeが入っていたら大抵LLDBも入っていますが、入ってない場合はXCode CommandLine Toolsを入れると入ります
which lldb
か
lldb --version
で導入されているかどうか確かめましょう
ついでに
mono --version
で、Monoが入ってるか確かめておきましょう (UE4が入ってたら入ってるんじゃないかな?)
.NET Core SDKも入れておくと良いかも?(ここ未確認。とりあえず入れた) www.microsoft.com
UE4Editorの設定
EditorPreferenceからSourceCodeEditorを「VisualStudioCode」にしておきましょうねー
デバッグしてみる
左のデバッグツール(虫のマーク)を選択し、「プロジェクト名」または「プロジェクト名+Editor」でデバッグ開始
DebugとかDevelopmentとかはDocumentを見てー
大抵Developmentで良いと思います
今のところの課題
- 「プロジェクト名」でのデバッグが上手く動かない
なんかエラー出て止まるんですよね…
なんか「でぷろいいんぐ なーう」って言って放っておくとエディタも起動しないしデバッグも開始されないんですよねぇ…
統合ターミナル上でEnterキーとか押して無理やり進めるとようやくエディタが起動するんですよ
ビルドタスク用のバッチファイルが悪さしてるんじゃないかなぁ、と思っていますが手を入れてみるべきかどうか…
参考文献
↓詳しい使い方はこちらへ unrealengine.hatenablog.com
LLDB Debugger (GitHub) github.com
Docker上にLaravel環境を構築したい(試行錯誤編)
墨崎です。
授業でPHPを教えているのですが、どうせなら流行りのフレームワークでも教えてみるかと思ってLaravelを検討中です。
いや自分だって触ったことないんですけども。
ついでにいうとPHPなんて専門外なんですけども。
とは言えそこで諦めてたら仕事にならないので、Docker環境上にLaravel開発環境を構築してみようかと。
なお授業でやるのはWindows(+XAMPP)なのでDocker関係ないよ…
試行錯誤の内容
見てたやつ。この辺
これ見ながらやってみたけど初っ端からエラー出たでやんす…
原因わかってるんですけどね。npm系でエラーが出たので。
多分これはGulpとかLaravel-Elixirあたりが関係してくるのかな?
今のところそこまで必要じゃないよね?ってことでこのエラー出た部分は削ってしまおうかと。
大丈夫だよね?
他はこの辺とかも見てます
単純にMac上(Docker上)にLaravelの検証環境が欲しいだけだからこっちのほうがいいかもなぁ…
このあとやること
Docker composeのきちんとした使い方を考えないといけないっぽい。
というのも、イメージ名…というか複数のdocker-compose.yml間で同じ名前を使うのはよろしくないっぽいんだよねぇ…
imageやcontainerを作りっぱなしで消してないっていうのが一番の問題のような気もするけど
うまいやり方を調べてみようかな?
ちょっとだけ技術記事を書きました
Mac買いました
ようやくMacを買った墨崎です。
実はMacを個人所有するの初めてなんですよね。
仕事(前職)ではバリバリ使ってたわけなんですが…
しかし最新のMacbookProってキーボードすごいカチカチなりますね。
あとストロークかなり薄い。
全体的に薄いので荷物重量への影響も少なそうで良かった…
Mac使って何するの?
とりあえずiOSのビルドを試そうと思ってました…が、実機ビルドするのにDeveloperProgramに登録しないといけないみたいっすね。
XCodeのプロジェクトは何もなくビルドできたわけですが。
プロビジョニングする際にAppleIDが必要になっていることから、ビルド時に新しいプロビジョニングファイルを取ってきてるのでしょうかね?
とにかくうまく行きませんでした。
とりあえず、DeveloperProgramに登録すればなんとかなるのでそのうちしようと思います。99ドル…必要経費かな?
色々進捗
フリーランスになって初めて、UE4のお仕事ができそうです。
VRもやれる可能性があります。
とにかく実績を作って次のお仕事につなげていきたいですね。
次のことに手を出すにはお金も必要なので、引き続き稼いでいきたいです。
このあと
- HPをちゃんとする
- Pythonで色々作ってみる
- ARKitを試したい