n-yoda's blog

主にUnity3Dに関するあんまり技術的じゃないメモ的な何かを書いています。

Boost.NumPyをMac OS Xで使おうとして躓いたメモ

OS XでBoost.NumPyを使ったときのメモです。PythonのC++モジュールを作るにはBoost.Pythonを使うととても簡単らしく、さらにnumpyの扱いも簡単にしてくれるのがBoost.NumPyとのこと。install_nameという物を知らなくて少し躓きました。何か知見の得られる読…

UnityでMIDIを再生する

UnityでMIDI(Standard MIDI File)を再生する必要が生じたのでやってみました。 MIDIを再生して何がしたかったのかみたいなのもそのうち公開するかもしれません。 動く最小限のサンプルは以下のレポジトリに入っています。MacとiOSで動きました。 github.co…

UnityでDistance Fieldを使った文字の描画をする(WIP)

Unity Advent Calendar 2015 - Qiita 12月20日の記事です。 (今年も間に合わなかったので中途半端な状態で公開します) 昨年のアドベントカレンダーでUnity UIのTextに綺麗な輪郭線を付ける(n-yoda/unity-vertex-effects · GitHub)という話を書きました。…

Metal Shading Language コンパイラの使い方

OS X El CapitanからいよいよMacでもMetalが使えるようになりました。 良い機会なので、次にグラフィックスやGPGPU関連の実装が必要になったときはMetalを使ってみようと思い、 とりあえずHello World的なものを書いて入門してみました。 https://github.com…

Unity ChromaPack のアルファ対応版を書いてみました

ChromaPackとは、Keijiro Takahashiさんが公開しているUnity用のテクスチャ圧縮プラグインです。 ChromaPack -- Unity でテクスチャ圧縮するプラグイン。色差サブサンプリングを使って見た目の劣化ほぼ無しにピクセルあたり 12 bit まで減らします。透過対応…

UnityのシリアライズのルールとInstantiateと実行中のコンパイル

Serializeのルールを理解するとInstantiateや実行中のコンパイルに役に立ちますという話。 目次 シリアライズのルール 共有データはScriptableObjectで 非Serializableな変数の対応 適切なシリアライズ設定は適切なInstantiateを可能にする 適切なシリアライ…

ディザ処理をした16bitsテクスチャはディスク上での容量が大きいかもしれない話

結論から言うと、「16 bpp + ディザ処理」というのはあくまでもメモリ消費を抑えるためのものであって、圧縮を考慮するとディスク上でのサイズはむしろ大きくなる場合があるという話です。 ここに512x512のTexture があります。 Format をTruecolor (32 bits…

UnityのEditor上でTextureを編集する際にRead/Write Enabledを書き換えたくない

Editor上でちょっとフィルタをかけてみたり自前のPackerでパッキングをしたりする際に、「Read/Write Enabled」を書き換えて「実行時に読み書き可能」な状態にしてしまうのは行儀が悪い感じがするので、以下の様なことをする。 AssetPostprocessor.OnPostpro…

UnityのObjectの中身をいろいろ見てみる(SerializedObjectとSerializedProperty)

SerializedObjectEditor.cs 中身を見てみる、と言うのは語弊があるかもしれませんが、 Unityのアセットは基本的に、SerializedObjectとSerializedPropertyを通して何がどのようにシリアライズされているかを確認することが出来るようです。 そこで、選択中の…

Unityでテクスチャ生成(とアンチエイリアシング)

Unityでちょっとしたテクスチャを生成する際の共通部分を書いておけば、結構使う機会あるんじゃないかと思って書いてみました。ソース:https://gist.github.com/n-yoda/8494984Generate関数に、ファイル名、サイズ、アンチエイリアシングの精度、それと描画…

ちょっとしたテストに便利なAttribute(ContextMenu、MenuItem)

Unityには便利なAttributeがいくつか用意されています。 (EditorのAttributeはこちら)よく使うものを2つ紹介します。 public class Example : MonoBehaviour { [ContextMenu("Print Velocity")] void PrintVelocity () { print (rigidbody.velocity); } […

iPhone/Androidで無理矢理フォントサイズを変える

Unity iPhone/Androidは残念ながらダイナミックフォントに対応していません。 (Unity4で対応するらしい?)というわけで、本来ならフォントサイズの数だけフォントを用意しないといけないのですが、 こんな感じで、無理やり引き伸ばすのはいかがでしょうか…

GUITexture.LeftBorder、TopBorder…をOnGUIでやる

UI表示する際に、縁取り分の数ピクセルの幅を固定して、 綺麗な画質のまま拡大縮小したいときってありますよね?GUITextureを使えばLeftBorderなどのプロパティがあるので簡単ですが、 OnGUIの中で同じ事をやる方法を紹介します。 Graphics.DrawTextureを使…

UnityでGUIの回転・変形などなど(GUI.matrix)

OnGUIで描画するGUIの回転・変形の仕方まとめ。行列がわかる人はGUI.matrixに、自分で定義したMatrix4x4を代入してあれこれ出来ると思いますが、普段主に使うのは↓です。 ・指定座標を中心に回転 GUIUtility.RotateAroundPivot ・指定座標を中心に拡大 GUIUt…

OnGUIでの描画とイベント処理の順番

「OnGUI、描画とイベント処理の順番が逆だから、ポップアップ表示とか辛すぎ使えない」などと勘違いしていましたがどうやら違うようです。GUI.depthです。こんな感じで使います。 public class GUIDepthDemo : MonoBehaviour { // インスペクターで設定 publ…

GUIElementのクリック判定

GUIElement(GUITexture、GUIText)のクリック判定まとめ! ただし、GUIElementを使うことはあんまりおすすめしません!! GUIクラスとGUIElementの比較GUIElementの基本的なことはReferenceを見ましょう。 注意点は ・座標指定を絶対座標でやるなら→PixelIn…

GUIクラスとGUIElementの比較

ある程度複雑なものは、NGUI(またはそのうち発表されるuGUI)を使えばいいと思うし、簡単なものやデバッグ目的のGUIはOnGUIを使えって感じでしょうか。 以下は過去に書いたものです。UnityでGUI周りを作る際のいろいろです。 いろいろ調べた結論としては、 …

初投稿

開発メモ的な感じで活用したいですね!!以上です。