すみぬり小屋

hakobuneworksという屋号でいろんなことをしている墨崎達哉のブログ

【UE4】初心者が頑張る建築ビジュアライゼーション:ライティング編

おっすすみさきです。

今日の投稿はUnreal Engine 4 (UE4) Advent Calendar 2017 - Qiitaの21日目の記事になります。

qiita.com

UE4のライティング勉強したい!

いやまあぶっちゃけ公式ドキュメント見ろ、でだいたい片付けられてしまうもんですが。
それだけUE4のドキュメントが優秀ってことだね。

それだとあんまりだーっていう僕みたいな初心者のため(主に自分のため)に、ライティングなしの状態からそれっぽい状態にするチャレンジをします。

これアドカレで良いのかなぁ…?(汗

まずはライトの確認

UE4には色んな種類のライトがあります

  • Point Light
    点光源、オムニライト、全方向性ライトとも。
    UE4では電球の形をしています。
    このライトから出る光は、このライトを配置した「点」から照射されます。 f:id:T_Sumisaki:20171220223025p:plain

  • Spot Light
    円錐型のライトです。
    PointLightに絞り機能をもたせた感じですね。
    Spot Lightの光線幅は円錐角(UE4:Inner Cone Angle)、光線の周りのエッジの柔らかさは半影角(UE4:Outer Cone Angle)によって決まります。
    f:id:T_Sumisaki:20171220224833p:plain

  • Directional Light
    指向性ライト。太陽などの非常に遠方にある光源からの照明に使います。
    「位置」は関係なく「向き」のみが影響します。
    f:id:T_Sumisaki:20171220224851p:plain

  • Sky Light
    環境光に使用する特殊な光源です。
    遠方の色をサンプリングして、その色で照らします。
    2次光源に使用することが多いでしょうか?
    (多分扱いは難しい…) f:id:T_Sumisaki:20171220224946p:plain

なお、UE4にはエリアライト(面光源)に相当するものはありません。
使いたい場合は発光するマテリアルを設定したStaticMeshを使いましょう。
(今回は対象外な)

では、ライトを置いてみる

ライティングのコツは、一気にいろんなライトを置かないことかなと思います。
どのライトがどこに影響を与えているのかわからなくなりますからね。

あと、出来ればライトの数は少ないほうが良いのかなと。

今回はサンプルの部屋を使いますよー

ライトなし

流石にライトがないと見えないのでUnlit表示です。 f:id:T_Sumisaki:20171220225252p:plain

太陽光を設置

太陽光となるDirectionalLightを配置します。
一番確定しやすいかな。 f:id:T_Sumisaki:20171220225505p:plain

天球を設置

今回は昼の想定で行きます。
UE4にはBP_Sky_SphereというActorが用意されていますので、これを使いましょう。
同シーンにあるDirectionalLightと紐付けると、太陽の方向をエミュレートして空の色をいい感じに変えてくれます。

f:id:T_Sumisaki:20171220230114p:plain

BP_Sky_Sphereを使わない場合は、Atomospheric Fogを調整して使うのかな。

Reflectionを使う場合は、この時点で雑に(大きめに)置いておくと良いですよ

2次光源を設置

そのままではあまりにも部屋が暗いです。
デフォルトでグローバルイルミネーションによる反射が行われているとはいえ、ちょっと窓から離れた位置が暗すぎますね。

今回はSkyLightを置きました。

f:id:T_Sumisaki:20171220230553p:plain

置き方が雑過ぎますが、まあええやろ。

f:id:T_Sumisaki:20171220232101p:plain

室内にSkyLightを置いた際、外からの光が入ってくるところ(主に窓)に、Lightmass Portalを設置しておきます。
SkyLightの品質が上がりますよ。

PostProcessを設定

とりあえずこんな感じ、ってなったらPostProcessVolumeを設置しましょう。

f:id:T_Sumisaki:20171220232548p:plain

BloomとAutoExposureを弄ります。
ほかはまあ…今じゃなくてもいいかなって。

PostProcessVolumeにはInfinite Extent(Unbound)のチェックを入れておくと領域指定が不要で楽です。
部屋ごとに印象を変えたい場合でもなければ複数置くことも無いですし。

結果

f:id:T_Sumisaki:20171220232823p:plain

ところどころムラが出てますが…まあええやろ。
ちなみにこの視点の裏側はまだ結構汚いので要修正です。

f:id:T_Sumisaki:20171220233245p:plain

なお、World SettingsのLightmass Settingsを色々弄ると色々変わるようです。
設定項目多すぎ…

どれがどれかまだ勉強中なので、ここはサンプルと勘を信じて弄っておきました。

f:id:T_Sumisaki:20171220233211p:plain

補足

建築ビジュアライゼーションでは、図面があったりするので、図面通りにライトを設置したくなりますが、
省略出来るものは省略したほうが良いです。

現実のライトに合わせすぎると、ライトが集中して重なり、ライトに×マークが付き、StationaryLightではなくMovableLightとして扱われてしまい、処理が重くなります。
(特にSpotLight、PointLightあたり)

ライトの形をReflectionで床に出す、とかでなければ、ある程度マージしたほうが良いでしょう…

参考資料

  • 公式ドキュメント

docs.unrealengine.com

docs.unrealengine.com

  • Lightmass Deep Dive vol.1のスライド

www.slideshare.net

今回は頑張った。

今後も頑張って勉強していきますよ。
(ちょうどお仕事で使ってますし)

ではでは。

SlackのSlash Commandsをとりあえず実装してみる

すみさきです。

最近気が緩みすぎてるのかSAN値が減りすぎてやる気が起きないのか、いろんなことが進んでないです。

というわけで息抜き回。
SlackのSlash Commandsを簡単に使ってみます。

api.slack.com

前提

今回はAWSを使用しています。

あと、Serverless Frameworkも使います。

serverless.com

もちろん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」をクリック。
画面の指示に従ってアプリ名と開発ワークスペースを登録する。

f:id:T_Sumisaki:20171214224324p:plain

アプリが作成できたら、FeaturesのSlash Commandsを選択し、「Create New Command」をクリック

f:id:T_Sumisaki:20171214224800p:plain

コマンド名、リクエスト先、Slack上で表示されるツールヒントなどを入力して登録しましょう。

f:id:T_Sumisaki:20171214224805p:plain

全部作成できたら、SettingsのInstall Appから、自分のワークスペースにインストールすればOK

結果

こんな感じになるはず (コマンドをechoするわけではないのでちょっとわかりづらいっすけどねー) f:id:T_Sumisaki:20171214225433p:plain

AWS Lambdaや他のバックエンドに命令を送ることが出来るようになりますよ。
やったね。

MacでもVSCodeでUnrealC++が書きたい

すみさきです。

ちょっと気になってMacでもVSCodeでUnrealC++とデバッグができるのか調べてみました。

※なお、片っ端からいろんなことを試してたので、確実な環境構築手順がわからないです…

とりあえず導入

まずVisualStudioCodeを入れましょうね
Macで色々開発している人はもちろん入ってるっすよねぇ?)

Visual Studio Code - Visual Studio

VSCodeが入ったら、以下のExtensionsを入れましょう。

f:id:T_Sumisaki:20171211230547p:plain

f:id:T_Sumisaki:20171211230559p:plain

f:id:T_Sumisaki:20171211230603p:plain

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」にしておきましょうねー f:id:T_Sumisaki:20171211232025p:plain

デバッグしてみる

左のデバッグツール(虫のマーク)を選択し、「プロジェクト名」または「プロジェクト名+Editor」でデバッグ開始
DebugとかDevelopmentとかはDocumentを見てー
大抵Developmentで良いと思います

f:id:T_Sumisaki:20171211232612p:plain

今のところの課題

  • 「プロジェクト名」でのデバッグが上手く動かない

なんかエラー出て止まるんですよね…

なんか「でぷろいいんぐ なーう」って言って放っておくとエディタも起動しないしデバッグも開始されないんですよねぇ…

f:id:T_Sumisaki:20171211234558p:plain

統合ターミナル上でEnterキーとか押して無理やり進めるとようやくエディタが起動するんですよ

ビルドタスク用のバッチファイルが悪さしてるんじゃないかなぁ、と思っていますが手を入れてみるべきかどうか…

参考文献

↓詳しい使い方はこちらへ unrealengine.hatenablog.com

LLDB Debugger (GitHub) github.com

Docker上にLaravel環境を構築したい(試行錯誤編)

墨崎です。

授業でPHPを教えているのですが、どうせなら流行りのフレームワークでも教えてみるかと思ってLaravelを検討中です。
いや自分だって触ったことないんですけども。

ついでにいうとPHPなんて専門外なんですけども。

とは言えそこで諦めてたら仕事にならないので、Docker環境上にLaravel開発環境を構築してみようかと。
なお授業でやるのはWindows(+XAMPP)なのでDocker関係ないよ…

試行錯誤の内容

見てたやつ。この辺

qiita.com

これ見ながらやってみたけど初っ端からエラー出たでやんす…

f:id:T_Sumisaki:20171202223721p:plain

原因わかってるんですけどね。npm系でエラーが出たので。
多分これはGulpとかLaravel-Elixirあたりが関係してくるのかな?

今のところそこまで必要じゃないよね?ってことでこのエラー出た部分は削ってしまおうかと。
大丈夫だよね?

他はこの辺とかも見てます

qiita.com

単純にMac上(Docker上)にLaravelの検証環境が欲しいだけだからこっちのほうがいいかもなぁ…

このあとやること

Docker composeのきちんとした使い方を考えないといけないっぽい。

というのも、イメージ名…というか複数のdocker-compose.yml間で同じ名前を使うのはよろしくないっぽいんだよねぇ…
imageやcontainerを作りっぱなしで消してないっていうのが一番の問題のような気もするけど

うまいやり方を調べてみようかな?

iPad版ClipStudioPaintが出たようです

久しぶりにお絵かきしてる墨崎です。

いやブログも久しぶりですけども。

iPad版ClipStudioPaintEXが配信されました

CLIP STUDIO PAINT EX 漫画・イラスト制作

CLIP STUDIO PAINT EX 漫画・イラスト制作

  • CELSYS,Inc.
  • エンターテインメント
  • 無料

月額制…なんですねぇ

中身はほぼmac版のClipStudioPaintって感じです。
キーボードショートカットもあるので、キーボードとの併用が前提なのかな?

PC版と同じ構成なので、ペンと消しゴムを切り替える機能がないです…
やはりキーボードが必要か…??

今持っているiPadProは1の方で、日本語配列に対応してないので買ってないんですよね…

でも、使い勝手は良好なので、次からこちらを使っていこうと思ってます

ちょっとだけ技術記事を書きました

すみさきです。

最近UE4に関わる機会がどんどん増えてきてて、ちょっと楽しいです。

(あんまり楽しくない案件もありますが、そこはなんとかしようかと)

技術記事を書きました

Qiitaで技術記事を2件書きました。

qiita.com

qiita.com

わりと自分用のメモだったりします。

英語の記事はあるけど、日本語の情報がないなと思って、自分が困ったものは記事にしようと。

…誰得ですけど

東北ずん子6周年ですってね

10月27日はずん誕でしたね

僕もTwitterで一枚書いてお祭りに参加してました。

f:id:T_Sumisaki:20171029214241p:plain

土曜日の資料を作っていたので本格的に参加することはできませんでしたが…

それでも、応援しています!

Mac買いました

ようやくMacを買った墨崎です。

f:id:T_Sumisaki:20171019222008j:plain

実はMacを個人所有するの初めてなんですよね。
仕事(前職)ではバリバリ使ってたわけなんですが…

しかし最新のMacbookProってキーボードすごいカチカチなりますね。
あとストロークかなり薄い。

全体的に薄いので荷物重量への影響も少なそうで良かった…

Mac使って何するの?

とりあえずiOSのビルドを試そうと思ってました…が、実機ビルドするのにDeveloperProgramに登録しないといけないみたいっすね。

XCodeのプロジェクトは何もなくビルドできたわけですが。

プロビジョニングする際にAppleIDが必要になっていることから、ビルド時に新しいプロビジョニングファイルを取ってきてるのでしょうかね?

とにかくうまく行きませんでした。

とりあえず、DeveloperProgramに登録すればなんとかなるのでそのうちしようと思います。99ドル…必要経費かな?

色々進捗

フリーランスになって初めて、UE4のお仕事ができそうです。
VRもやれる可能性があります。

とにかく実績を作って次のお仕事につなげていきたいですね。

次のことに手を出すにはお金も必要なので、引き続き稼いでいきたいです。

このあと

  • HPをちゃんとする
  • Pythonで色々作ってみる
  • ARKitを試したい