BOIDS (人工生命)


鳥や魚の群衆の動きをシミュレートするロジックとしてよく利用されるBOIDSを作ってみた。
だいぶ前に作ったんだけど、忙しくてなにもできていなかったのでもう1度作ってみた。

Continue…

iPhone5s, iPad mini等で UI が描画されない

iPhone5, iPad mini2/3, iPad Air にて UI が表示されないことがあったのでメモ。
条件としては極めてレアだと思うので発生頻度は少なそう。
まず上記の端末は SoC が A7 と呼ばれているチップなので、この機種で発生しそう。
わかっている条件としては

  • UIが表示されない端末のチップがA7
  • SpriteRenderer があり、それを映すカメラがある
  • Canvas の Render Mode の設定が Screen Space – Camera
  • SpreiteRenderer, UI を移すカメラの Clear Flags は共に Depth Only
  • UIの要素が、UIを写すカメラの一番端 Clipping Planes の一番端にある

この条件で発生しました。
解決方法は2つ
UIのカメラの Clear Flags を Don’t Clear にする。
もう1つはUIの要素をカメラの Clipping Planes の端ではなく、少しカメラ側に寄せる。

Unsupported FBX version (7500)

Blender2.78cで

Couldn’t open file ‘/Users/nao/Desktop/Coin.fbx’ (Unsupported FBX version (7500), binary format is incompatible!)

というエラーが出たけど、2.79bにしたら読めるようになっていた。

深度センサーカメラ+OSC

今更ながらKinectを借りる機会があったのでUnityに繋いでみました。(しかもv1)
Kinectの開発に関わっていたPrimeScene社がオープンソースでOpenNIを作っていたけど、PrimeScene社はAppleに買収されその後配布サイトが閉鎖。いまならIntelのReal ScenseD415/D435を使って、ミドルウェアにNUItrack(Winのみ)がよさそうな気がします。
とりあえず今回はKinectをOpenNIをつかってUnity(Mac)で繋いでみました。

Continue…

非同期化して高速化

今回画像処理があり、その高速化のためTaskを使って非同期化しました。
まずはカメラの画像を白黒にする普通のコード。だいたい僕のPCで20fps出るか出ないくらい。

Continue…

ScriptableObjectのデータ保存

今回のお仕事で管理画面での設定データをScriptableObjectに保存。今回はResourcesフォルダに保存してシングルトンとしてデータを書き換えられるようにした。ScriptableObjectはUnityEditor上では再生時に値を書き換えたりしても値が戻らないけど、書き出した時は話が別。
(UnityEditor上でもビルドとかすると値が戻ったりするけど)
そこで、Jsonで保存/リストアができるように。

Continue…

動的に追加するコンポーネントを選択

コンポーネントを追加する際に、状況に応じて追加したいコンポーネントを変える方法。
C#ではClass型を変数に格納することはできないので(?)、typeof()でその型がもつType型(型宣言)が取得できる。UnityではAddComponent<T>()の他にAddComponent(Type componentType)があるので、生成したいコンポーネントをType型で渡してあげれば動的に追加するコンポーネントが選べる。
(そもそもこんなやり方でいいのかな…)

Continue…

NURBS (非一様有理Bスプライン)



github | naochang | Curve

NURBSはNon-Uniform Rational B-Splineの略で、非一様有理Bスプライン。非一様なのでノットが一様ではなく、\((t_{i-1} \leq t < t_{i+1})\)の範囲で調整が可能。また有理なので、有理ベジェ同様に重みを加えたものがNURBS。 B-Splineでは滑らかな曲線が作れたが、NURBSの方は自然かつ意図的なカーブが作れる。製品の3DCGやCADなどによく使われる。 Continue…

B-スプライン曲線 (B-spline Curve)



github | naochang | Curve

B-スプライン曲線はベジェ曲線と違い、点を通らない。その代わり曲線同士の曲率(曲がり具合)が連続していて滑らかな曲線となる。曲線は基底関数を重ね合わせて表現され、重ね合わせる具合をノットという数値の集合で表す。ノットの数は制御点の数+次数+1となる。(次数+1を階数(order)と呼ぶ)
ノットの値は絶対的な数値ではなく、複数の基底関数を重ね合せる祭の相対的な数値の列であり、B-スプライン曲線では通常ノット値を0からはじめ、1ずつ増やして等間隔にする。(uniform:一様)
制御点6で次数が3の場合は10個のノット値があり
\([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]\)
となる。

Continue…