ナビゲーションバー用のアイコン画像に@2x,@3xを追加してリサイズするスクリプト

iOSのナビゲーションバーのアイコンアプリをピクセルレシオ2や3に対応した画像をリサイズして作るシェルスクリプト。解像度決め打ちで使い勝手悪いけど、とりあえずは十分楽になった。


#!/bin/bash
find . -name "*.png" -maxdepth 1 | while read f; do
sips -z 66 66 $f --out resize/${f%.*}@3x.png
sips -z 44 44 $f --out resize/${f%.*}@2x.png
sips -z 22 22 $f --out resize/${f%.*}.png
mv $f original/
done

画像のあるフォルダで実行するとリサイズしてresizeフォルダ作って中に画像を作ります。

社内の古いPCをGitリモートリポジトリにする

GitはほとんどBitbucketにリポジトリを作って使ってましたが、最近はデータが上限の2GBを大きく超えて4GBくらいになってきてて、プッシュしてもリジェクトされるので、社内の古いPCをGitのリモートリポジトリにして運用することにしたので、超簡単な手順をメモ。

リモートリポジトリを作る

1.古いPCにGit for Windowsを入れる。

2.リポジトリを入れるフォルダを作って移動(/git/hoge)

3.git init –bare –shared

これでリポジトリは完成。

クローンする

4.クローンしたいPCにフォルダを作って移動

5.git init してから、git clone //pc/git/hoge

6.git remote add origin //pc/git/hoge でリモート設定

これでOK

———-
Macでやる場合

1. システム環境設定の共有から、リモートログインを入にする

2. “ssh xxxxx@192.168.0.0″と入力してください。の xxxxx@192.168.0.0 でリモートから接続 ポート番号はたぶん22

3. git remote add origin ssh://xxxx@192.168.0.0:22/git/hoge でリモートに追加

Blender でベイクする手順

Blenderは翌日には使い方を忘れるのでとりあえず手順をメモ

UV展開

1.UV展開 : モデル選択して、エディットモードにして全ポリゴンを選択し、左メニューのshading/UVs > unwrap > Smart UV Project

2.UVにテクスチャを適用:左下のメニューの3D ViewをUV/Image Editerに変更し、切り替わった画面の下の+ボタンでベイク用のテクスチャを新規に作成

Worldの設定

1.右のインスペクター内の地球のアイコンのworld設定を選択

2.Ambient OcclusionとEnvironment Lightingにチェック、適当な数値を入れる

ライトの設定

1.光源のモデルを選択して、右のインスペクター内の太陽っぽいアイコンを選択

2.Lamp > Energy で明るさを調整

3.Shadow > Samples で影の正確さ、Shadow > Soft Size で影のぼかし具合を調整

各マテリアルの設定

1.モデルを選択して、右のインスペクター内のマテリアルアイコンを選択

2.Shading > Ambient でアンビエントを設定

3D Viewでの設定

1.3D View で「N」を押して別のインスペクターを表示

2.Shading 内のmultitexture を GLSLに変更

3.Shading内のAmbient Occlusionにチェック、色を調整

ベイク

1.ベイクしたいモデルを選択

2.右のインスペクターのレンダリングアイコンを選択

3.Bake > Bake mode > Full Render

4.Bakeボタンを押す

iOS/Androidで最高にリアルな3D表示を実現できた

ミニチュアストーリーズ」でスマートフォンでリアルの3D表現を追求して、そこからさらに精度をあげて、かつ軽量なデータを実現する手法がだいたいわかってきた。

まだ改善の余地はあるけど、このレベルでスマートフォンで表示できるのは実用レベルになってきたと思う。ちなみに上のドーナッツはUnityで作ってGalaxy S6で操作しているもの。下のミニチュアストーリーズと比べてみると面白いです。

Google 360°VR動画「Pearl」

アカデミー賞短編映画賞にノミネートされた「Pearl」

グーグルのVRアニメ『Pearl』 VR作品初のアカデミー賞ノミネート

ミュージシャンの父と娘の物語が、車の中に固定された視点で進んでいきます。過去の記憶と現在が入れ替わりながら父と娘の成長が描かれ、VRの没入感とテンポの良さが心地いい作品です。何度も見ました。自分にも娘がいるので何度見てもウルっときます。

ただVRは感動的な作品には全く向いていないなと感じた作品で、ウルっとくるとHMDのレンズが曇るのでそのたびに外してレンズを拭かないといけないという、これはもうVRの最大の弱点だなというのを奇しくも露呈してしまってます笑

Unity Listからforeachを使ってremoveする


foreach(Class item in Lists){
 if(item.id == id){ 
  Lists.remove(item);
 }
}

こんなかんじでやると、

InvalidOperationException: Collection was modified; enumeration operation may not execute.

とエラーになるので、


List<Class> TmpList = Lists;
foreach(Class item in Lists){
 TmpList.Add(item );
}

foreach(Class item in TmpList){
 if(item.id == id){ 
  Lists.remove(item);
 }
}

こうしてやる

Unity StreamingAssetsからファイルを読み出す

Streaming Assets で iOSとAndroidの違いにハマったのでメモ。

string FilePath;
#if UNITY_IPHONE
  FilePath = Application.dataPath + "/Raw/" + filename;
#else
  string fullPath = "jar:file://" + Application.dataPath + "/!/assets/" + filename;
  WWW www = new WWW (fullPath);
    while (!www.isDone) {
  }
  FilePath = Application.persistentDataPath + filename;
  File.WriteAllBytes (toPath,www.bytes);
#endif

iOSはそのままパスからファイル読み込みできるけど、Androidは一度Application.persistentDataPathにコピーしてから開かないといけない。