mattak's blog

人生を1ミリ進める

MapboxでUnity3D対応をしたいので調査...

ただの個人的なメモ書き

手がかりをさぐる

同じことを考えている人はいるはずなのでとりあえず検索してみる。

github.com

Qtで同じことをやっている人はいるようだ。 これを真似すれば良さそう。

どのファイルをいじればいいのか?

commitログを眺める。

$ git log --oneline
efca99c [Qt] expose NorthOrientation
...
69465c9 [Qt] Add a Qt wrapper aroung mbgl::Map
d10cfd0 [ci skip] [android] Main loop integration
69465c9 [Qt] Add a Qt wrapper aroung mbgl::Map
d10cfd0 [ci skip] [android] Main loop integration
fd64b14 [glfw] Main loop integration
c31c91e [core] Add foreign main loop integration support to mbgl::RunLoop
bd5fabd [tests] Adapt tests for rendering on the main thread
1676934 [core] Render from the main thread
0f37b67 [core] Do not use std:: namespace for log2()

[Qt] というタグがついてるコミットが対象っぽい.

masterとの差分ファイル一覧を出す

$ git diff --name-only HEAD...qt-app
Makefile
android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/views/MapView.java
android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/views/NativeMapView.java
configure
gyp/common.gypi
gyp/http-qt.gypi
gyp/linux.gyp
gyp/mbgl.gyp
gyp/osx.gyp
gyp/platform-qt.gypi
gyp/qt.gypi
include/mbgl/map/map.hpp
include/mbgl/platform/default/glfw_view.hpp
include/mbgl/platform/qt/QMapboxGL
include/mbgl/platform/qt/qmapboxgl.hpp
include/mbgl/util/run_loop.hpp
platform/android/jni.cpp
platform/android/native_map_view.cpp
platform/default/async_task.cpp
platform/default/glfw_view.cpp
platform/default/run_loop.cpp
platform/default/timer.cpp
platform/qt/application_root.cpp
platform/qt/asset_root.cpp
platform/qt/async_task.cpp
platform/qt/async_task_impl.hpp
platform/qt/http_context_qt.cpp
platform/qt/http_context_qt.hpp
platform/qt/http_request_qt.cpp
platform/qt/http_request_qt.hpp
platform/qt/image.cpp
platform/qt/qmapboxgl.cpp
platform/qt/qmapboxgl.qrc
platform/qt/qmapboxgl_p.hpp
platform/qt/run_loop.cpp
platform/qt/run_loop_impl.hpp
platform/qt/timer.cpp
platform/qt/timer_impl.hpp
qt/main.cpp
qt/mapwindow.cpp
qt/mapwindow.hpp
qt/qmapboxgl.gypi
scripts/linux/configure.sh
scripts/osx/configure.sh
scripts/osx/install.sh
scripts/osx/setup.sh
src/mbgl/map/map.cpp
src/mbgl/map/map_context.cpp
src/mbgl/map/map_context.hpp
src/mbgl/map/map_data.cpp
src/mbgl/map/map_data.hpp
src/mbgl/util/thread_context.hpp
test/api/annotations.cpp
test/api/api_misuse.cpp
test/api/custom_layer.cpp
test/api/repeated_render.cpp
test/api/set_style.cpp
test/fixtures/util.cpp
test/miscellaneous/map.cpp
test/storage/http_error.cpp
test/storage/http_retry_network_status.cpp
test/test.gypi

変更されたディレクトリ一覧を出す

$ git diff --name-only HEAD...qt-app | xargs -n1 dirname | sort | uniq
.
android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/views
gyp
include/mbgl/map
include/mbgl/platform/default
include/mbgl/platform/qt
include/mbgl/util
platform/android
platform/default
platform/qt
qt
scripts/linux
scripts/osx
src/mbgl/map
src/mbgl/util
test
test/api
test/fixtures
test/miscellaneous
test/storage

一つ一つファイルの変更をみていく

Makefile - qtのビルドオプションが追加されただけ

MapView.java - めっちゃ長い. タップイベントやら諸々が書かれてる

NativeMapView.java - 微修正. リネーム等なされているようだ

configure - printの設定が追加されただけ

gyp/linux.gyp gyp/common.gypi - フラグ変更のみ

gyp/qt.gypi gyp/platform-qt.gypi gyp/http-qt.gypi - 新規追加

gyp/mbgl.gyp - qt用に設定追加

...

こっちのソース見るほうが早いかも...

GitHub - tmpsantos/qmapboxgl: Mapbox GL for Qt

疑問点

  • UnityのTextureにmapboxのレンダリング結果を貼り付けることができるか?
  • MapBoxのタッチイベントをUnityに移譲することができるか?
  • Unityでnative c++のソース (mapbox gl のcore部分) をビルド連携可能か?

raspberry piで自宅の湿度と温度を監視したい

モチベーション

最近部屋が乾燥していて朝起きると喉がカラカラになってしまう・・ 湿度計も温度計もないのでraspberry piで自作してみる. ついでに測定したログを監視サービスにポストするようにした.

設定全般

us配列で入力しにくいので、keyboard 配列を変更 /etc/default/keyboard

XKBMODEL="jp106"
XKBLAYOUT="jp"

Raspberry Piを買ってみたのでRaspbianのインストールとか初期設定とかとか | メモ帳代わりのブログ

$ sudo aptitude install vim
$ sudo reboot

計測

make-motion.hatenablog.com

上記ブログを参考にcで書いた。

データのpost

記録した温度と湿度はdatadogのAPIにpostするようにした。

qiita.com

qiita.com

API Reference

最終的にこんなスクリプトを書いた

実行して問題ないことを確認

$ sudo aptitude install libcurl4-openssl-dev
$ gcc -o dht11 dht11.c -L/usr/local/lib -lwiringPi -lcurl
$ sudo ./dht11

結果

f:id:mattaclj:20160314003642p:plain

概ね何もしないと

  • 温度: 17度
  • 湿度: 39%
  • 不快指数: 61 (何も感じない)

ぐらいだった。エヤコンつけて温度を上げると(18度くらいで) 湿度が1%ぐらい減る。 水に濡らしたタオルをエヤコンの上に干してみたり、ドアノブにかけてみたりしたが湿度は0.5%程度しか影響しないようだ。。

matome.naver.jp

上記サイトによると冬場の適切な湿度は 45% ~ 60%のようだ。 一般的に湿度が40%を切ると乾きを感じてくるようなので、もう少し湿度を上げる工夫が必要そう。 またエアコンで温度を上げると湿度が1%程度下がるというのも観測できた。

できれば50%ぐらいに湿度たもちたい。 もう冬場すぎるけど、この際加湿器買おうかなぁ・・。

余談

c/pythonじゃなくてrubyで書きたい。 pcのノリでanyenv => rbenv => ruby 2.2.4をinstallしてみたらビルドするだけで数時間かかった。 こだわりなければ、おとなしくc か systemにpreinstall済みのpythonで書くのが面倒なくてよさそう。

Unreal Engine 4はじめました

簡単な成果物

f:id:mattaclj:20160204221514p:plain

TPSで鬼ごっこするゲームをつくってみた

感想

Blueprintすごい

プログラムを一行も書く必要がなくてもある程度のゲームが作れる。 代わりに条件分岐も、イベント処理もすべてBlueprintで行う。 Blueprintは、Unityにおけるscriptのような立ち位置。 ロジックはすべてblueprintでやる。

楽で誰でもとっつきやすいのは++ 複雑な処理になると自由度が少ないのは-- 自由に使いこなすのには何度かゲームを作って見る必要ありそう。

GUIが軽い

ライトニングのベイク処理が別になっていて軽いイメージ。 コンパイルしないとstatic objectのライトマップは更新されない。

クラッシュ

Mac Book Pro 13inch retinaで作業してると頻繁にクラッシュして辛かった。 ファイルを作るだけでクラッシュ、フォルダを作るだけでクラッシュ・・・

ただ Mac Book Pro 15inch retinaで作業する感じ問題なかったので、単に環境に問題があっただけかも知れない.

チュートリアルは動画で!

文章を読んでも正直画面上のどの部分をいじればいいかパッと理解できないことも多々ある。 チュートリアル動画を何度かやるのがとっつきやすくてよい。

シーンファイルはバイナリ

同時編集は辛そうだ。 プロダクションで使ってる人はどうやってる感じだろ。 ただパーツと部品はファイル分けていけそう

テンプレート便利

プロジェクトを作る際のテンプレートが完成度高い。 そのジャンルのゲーム作る上ではとっつきやすそう。

アセット

そんなに充実してない感。 並んでる商品のクオリティは高そう。お値段も高め。 プロユースという感じ。

ファイルフォーマット

音声はwav モデルはfbx

Unityと比べるとあれがない、これがない、変換面倒って感じたりする。

UI

Blueprintのデザイナ画面で組める Widgetという単位で画面上に追加できる。 基本の要素は整ってて、きちんとアンカーも効くので困ることは今のところない。

2016-01 ハイライト

要約: 走った

  • 84km
  • 16 run
  • 週3-4ぐらいの頻度
  • 1回あたり6kmがメイン

評価

  • [◎] Running => 目標値の2倍達成
  • [✕] 英語 => Chatty 1回
  • [△] 腹筋 => 9/31回
  • [◯] リリース => Autum
  • [△] 寝る時間 => 就寝は早くなったが9時縛りはきつい
  • [✕] 金 => 特別出費がいたい。

目標: 2016

スローガン

  • 気力とアクティビティを高いまま維持する
  • 生活習慣をガラリと変えたい

  • ランニング 40km / 月. 週2ペースで走る
  • 腹筋 20回 / 日 を継続 (少しづつ増やす)
  • 腕立て 20回 / 日 を継続 (少しづつ増やす)
  • 年末までに体脂肪率10%, 55k

英語

  • rarejob初めてみる.
  • 週1ペースでつづける
  • 楽しく会話できるくらいにしたい

習慣

  • 原則9時以降は食事しない. お菓子禁止
  • 10時以降は刺激物禁止. (ゲーム, アニメ, プログラミング...)
  • 読書のみ許す
  • 刺激物をやりたければ、朝するようにする

  • 読書記録をとる
  • 漫画、小説、真面目本問わず

リリース

  • 月1ペースを目指す
  • ゲーム, ライブラリ, アプリ, ... 問わず
  • その時に興味のあるものを

  • +5万 / 月

ふりかえり

  • 各項目で記録する
  • 月1ペースでブログに残す

エンジニアでも作曲したい

前置き

ゲームジャムでゲームを作るときに作曲できると便利。 面倒な著作権問題やら回避できて、自由にアレンジや改変もし放題。

lycoris102さんと ayaki さんにいろいろ教えてもらって作曲はじめた。 自分で作った曲はいろいろとおかしいのだけど(自覚している)、まあ最近始めた初心者なので許してという感じ。

ツール

作曲に利用したツールDAW (Digital Audio Workstation) というらしい。

FL Studio

FL Studio 12

f:id:mattaclj:20151207003010p:plain

定番ソフトらしい。mac版はbetaでリリースされていて、プロジェクトの読み出しができないもののちょっとした曲を作る分には十分。 こんな曲をつくった。

soundcloud.com

GarageBand

Mac標準の作曲ツール。 いままではなんか邪魔なアプリが入ってるなー程度の認識だったのだけど、使ってみるとDAWとして初心者には十分な機能が入っている。 ドラムも良い感じに自動で鳴らしてくれるのですごい便利。 チュートリアルも充実してて、そもそも作曲とは?コードとは?みたいな人にもオススメ。

f:id:mattaclj:20151207003226p:plain

CMD + クリックでピアノロールに追加できるってことだけわかりにくいが、あとはなんとなく慣れでいける。 追加DLが多いのがたまにキズ。

これで作った曲。

soundcloud.com

GarageBand (iPhone)

モバイルでも作曲できるのだ。 しかもちょっとした打ち込みならこっちのほうがやりやすいくらい。 デフォルトのオートプレイや、スマートドラムもかなり便利。

f:id:mattaclj:20151207004745j:plain f:id:mattaclj:20151207004754j:plain f:id:mattaclj:20151207004751j:plain

少しわかりにくいのだけど、AirDrop やら Dropbox経由でPCに .bandファイルをシェアできる。

試しに作った曲。(ただのオートプレイの組合せ)

soundcloud.com

勉強したサイト

ドラムロールは適当に打ち込んでもリズムになりやすいのだけど、 ピアノロールには打ち込んでも、それっぽい曲に一向にならない。 ので少し勉強した。

YAMAHA コードについて学ぶ

コードについて学ぶ - 音楽について勉強しよう - ヤマハ株式会社

和音の作り方、7th chordあたりが勉強になる。

サビ、メロについて

構成 (曲) ‐ 通信用語の基礎知識

Aメロ、Bメロ、サビなど

そもそもサビの意味すらしらなかった・・・

Timさんの音楽教室

GarageBandを開くと標準でついてくるレッスン。 コードの基礎的な説明や楽器の使い方など、誰でもわかるようにかなり丁寧に説明している。 当たり前だけど楽器に会う演奏スタイルやコード進行があって、基礎を学ぶとそういうことを気づかせてくれる。

f:id:mattaclj:20151207014026p:plain

作曲の難しさ

いまは作れる曲を作るという場当たり的適当さで作っている。 狙った曲でその雰囲気を表現するのはやっぱり難しい。

副作用

自分で作曲をしてみると、世に流れている曲でどんな楽器で演奏しているのか? どんなコード進行をつかってるのか?だいたいドラムロールつかってるなーとか、雰囲気だけをだすなら複雑なメロディはいらないなーとか。 今まで見過ごしていたものへの気付きがある。

当たり前だけど世の中には曲があふれていて、何気ないアニメの一シーン (終物語やらごちうさの劇中歌とか、SEとか)にも耳が反応するようになった。 このパターンを蓄積して、どんな楽器をつかえばいい?こんなパターンがあるんだってのを積み上げてみんなうまくなるんだろうなーと (小並感

2015年においては、ツールも豊富で無料で作曲をはじめられるので良い時代だ。 曲作りは楽しいし、1日くらいで1曲できる手軽さなのでゲームジャムエンジニアにはおすすめです。