情報は力ではない

UE4 とか Blender とか。

Blender勉強会 Step 3に行ってきた。

Blender勉強会に行ってきた。

https://togebu.doorkeeper.jp/events/57339

今までスカルプトはとっつきづらいと思ってやってこなかったので 良い機会だなと思って参加した。東ゲ部、初参加でした。

@kurosaurusさんによるスカルプト講座

www.slideshare.net

ブラシのショートカットやDyntopo、Multiresolutionの使い方を学んだ。 スカルプトとは関係ないけど、「ビュー>レンズ」で画角を弄れるの知らなかったので学びだった。

@tomB_saikayaさんの講座

即興でskinモディファイアから手を作る方法やZBrushのtrimブラシ?っぽいブラシを作成する方法について解説していただいた。

skinモディファイアから手を作る方法では、頂点を枝分かれさせるときにメッシュが思った通りにならない場合があるけど、その場合はその枝分かれしている頂点を「ルーズとしてマーク」してあげるといいみたい。

f:id:masahiro8080:20170304232017p:plain

trimブラシっぽいブラシを作成する方法はScrape/Peaksを複製して「エリア平面」を「ビュー平面」に変更し、左のロックをオンにすると良い。

もくもくで作ったもの

スカルプト解説の際に作ってた何か。

f:id:masahiro8080:20170304231201p:plain:w300

skinモディファイアから手を作る方法を解説している際に作ってた手。

f:id:masahiro8080:20170304231000p:plain:w300

犬。

f:id:masahiro8080:20170304230518p:plain:w300

感想

初めてBlenderというかCG関係の勉強会に来たけど非常に学びになったし、刺激になった。 スカルプトは今まで使ってこなかったけど、少し慣れたので使えるところでは積極的に使っていきたいと思う。 東ゲ部Blender勉強会に参加して良かったし、非常に楽しかった。 講師の@kurosaurusさん、即興で解説していただいた@tomB_saikayaさん、スタッフのみなさんありがとうございました!

武器をアタッチする方法

武器をActorにアタッチする方法について少し調べたのでメモ。

アタッチする方法

端的に言うとattachToComponentを使えば良い。

f:id:masahiro8080:20170122123531p:plain:w200

これを使うことでParentSocket NameTargetのActorをアタッチすることができる。

docs.unrealengine.com

Targetへの値の渡し方は次の2種類あると思う(他にもあるのかな)。

  1. Add static mesh componentの戻り値を使う
  2. Spawn Actorの戻り値を使う

1.の方法はもんしょの巣穴blog [UE4] 武器切り替えで解説している方法。2.の方法はHow do I attach an Actor Blueprint to a socket in a Character Blueprint? - UE4 AnswerHub で解説している方法。

どちらがどういうメリット・デメリットがあるのかはまだわかってない。あまり違いはないのかもしれない。

短いけど、今日はこれで。

Blenderで作ったモデルをUE4にインポート

f:id:masahiro8080:20170108233709p:plain

Blenderで上図のようなモデルを作ったのでUE4に持ってきた時のメモ。

バージョン

Blender 2.77a
Unreal Engine 4.14.2

Export

Blenderで作ったモデルをfbxでエクスポート。設定は特にいじってないつもり。アニメーションはつけてないので、アニメーションの設定は 見ていない。
f:id:masahiro8080:20170108134736p:plain:w150f:id:masahiro8080:20170108134744p:plain:w150f:id:masahiro8080:20170108134752p:plain:w150

Import

fbxをUE4にインポート。 ここも特に設定はいじってないつもり。 詳しくはらりほまさんのBlender to UE4 (ver.2016) | rarilogを見た方が良いと思います。
f:id:masahiro8080:20170108135239p:plain:w150

インポートした結果がこちら。お腹周りの影が気になるので解消したい。
f:id:masahiro8080:20170108141027p:plain

マップにおいて見た。やはり影が気になる。
f:id:masahiro8080:20170108141322p:plain

インポート時の設定のNormal Import MethodをCompute NormalsからImport Normals and Tangentsに変更してみたら影が消えた。
f:id:masahiro8080:20170108234153p:plain

まだSmooth情報もない気がする。気のせいかもしれないけど。
もう少し調べてみたいと思う。

感想

FBXのExport/Importの設定がまだよく分かっておらず、こうすべきみたいな情報が まだ得られていない。色々試してみる必要がありそう。

新年の目標

新年一発目なので、簡単に目標をば。 去年まで特に目標とか決めずにきたけど、一旦決めてみようかと思う。

  • ゲームを作る。
  • ぷちコンに出る。
  • UE4もしくはBlenderの記事を12本書く。

とりあえずこんなものかと。

去年入門したUE4とBlenderを今年はもっと使っていきたいという思いが今は強いかな。

短いけど、こんなところで。

Yokohama.vim #8に行って来た。

Yokohama.vimに初参加して来ました。

yokohamavim.connpass.com

@gu4さんによる挨拶

www.slideshare.net

最初にYokohama.vimVimの軌跡の比較をしていた。 スライドに記載していたはずのYokohama.vimの軌跡が残念ながら消えてたらしい :( Yokohama.vim #0は2010年から続いているみたい。 Yokohama.vim.osaka? #7には自分は大阪(Osaka.vim #6)から参加していたなぁとか思ってた。

そういえば10/29(土)にOsaka.vim #8があるそうです。関西の方は是非!

osaka-vim.connpass.com

次にアイスブレイクとして、自己組織化ゲームをした。 指示役と移動役という役割を持った二人一組で行うゲーム。 指示役が「前」といえば、移動役が一歩前に歩くといった感じ。 複数のチームの中でどのチームが一番多く歩けるかというのがゲームに対するモチベーションだった。

今回はVimバージョンということで、指示役が行う指示はhjklだった。 自分の相手は@h0k0r0biさんで、指示役をやらせていただいた。 指示を出すとき、慣れるまでhが左でlが右ということがすっと出てこなかった。 Vim上でカーソルを移動する際におそらくhとかlとかを考えずに指が覚えているからだろうなぁと思った。 このゲームではhjkl以外のmapを使用可能だった。自分たちは特に使用しなかったけど ゲーム中に「gg」とか聞こえて来た気がする。

改めて@h0k0r0biさんありがとうございました。

@Watson_DNAさんの発表

speakerdeck.com

TeXVim scriptのクイックソートを比較していた。 TeXVim scriptも遅いねという感じだった。

@Linda_ppさんの発表

すごいということしかわからなかったのだけれど、CコンパイラVim scriptで作成したいという話だったと思う。すごい。

@thincaさんによるVim 8.0の機能の説明

:help version-8.0の内容を@thincaさんが解説するという急遽開催されたもの。 色々便利なものがあったけど、まだ自分は全然把握できていないので復習をする必要がありそう。

したこと

特に何もせずに話を聞いたり、少しもくもくしたり、TweetVimを始めたりしていた。

所感

Yokohama.vimは初参加だったけど、わいのわいのした感じで楽しかった。 ただ、vimrc読書会でお会いする方々に話しかけたい気もしたけど、人見知りなので話しかけれなかったのが残念だった(これは自分の問題だけれども)。 また参加する時にはお邪魔したいと思います。

Vim 8.0にした。

先々週9/12にVim 8がリリースされたので、だいぶ遅れたがVim 8をインストールした。 今回はソースコードビルドに挑戦してみたので、そのメモを書きます。 何気にソースコードビルドは初挑戦(お恥ずかしいことに今までVim 7.4.729を使っていた...)。

やり方

gitからVimソースコードを持ってきます。

git clone https://github.com/vim/vim.git

あとは、READMEに従ってビルドするだけです。 自分はOS XユーザなのでREADMEdir/README_mac.txtを見ながら実施。

make
sudo make install

これでvim/src以下にVimの実行ファイルが出来ます。 あとは、VimにPATHを通すだけです。 例えば、~Vimをcloneしたのであれば.bashrcとかに

export PATH=~/vim/src/:$PATH

とすれば良いかと思います。

感想

ソースコードからVimをビルドするのは簡単。 これでVim活が捗る(はず)。

TaPL 演習4.2.2

問題

arithの実装におけるeval関数の定義を、大ステップスタイルに変えよ。

答案

もう少しうまく書きたい。

let rec eval1' t = 
  try
    match t with
      TmIf(_, t1, t2, t3) -> (
        let t1' = eval1'(t1) in
        match t1' with
          TmTrue(_)  -> let v2 = eval1'(t2) in v2
        | TmFalse(_) -> let v3 = eval1'(t3) in v3
        | _ -> raise NoRuleApplies)
    | TmSucc(fi, t1) when isnumericval t1 ->
        TmSucc(fi, eval1'(t1))
    | TmPred(_, t1) -> (
        let t1' = eval1'(t1) in
        match t1' with
          TmZero(_) -> t1'
        | TmSucc(_, nv1) when isnumericval nv1 -> nv1
        | _ -> raise NoRuleApplies)
    | TmIsZero(_, t1) -> (
        let t1' = eval1'(t1) in
        match t1' with
          TmZero(_) -> TmTrue(dummyinfo)
        | TmSucc(_, nv1) when isnumericval nv1 -> TmFalse(dummyinfo)
        | _ -> raise NoRuleApplies)
    | _ -> raise NoRuleApplies
  with NoRuleApplies -> t

感想

軽く試した感じは、ちゃんと動いてる。ただ正確に動くかどうかはCoq等で証明すべきなんだろうな。 あとは関数名をeval'とかにすべきだったかも。