Programming」カテゴリーアーカイブ

プログラミング全般に関するカテゴリーです。

Tiling/Offset値をスクリプトから設定する方法

MaterialのTexture設定にあるTilingOffsetの値をスクリプトから設定したい場合はSetTextureScaleSetTextureOffsetを使って次のような感じでできるそうです。

Material material;
// Tiling
material.SetTextureScale("_MainTex", new Vector2(1.0f, 2.0f));
// Offset
material.SetTextureOffset("_MainTex", new Vector2(0.5f, 0.5f));

設定値を取得したい場合はGetTextureScaleGetTextureOffsetが使えるみたいです。

リンク

Unity – Scripting API: Material.SetTextureScale
https://docs.unity3d.com/ScriptReference/Material.SetTextureScale.html

Unity – Scripting API: Material.SetTextureOffset
https://docs.unity3d.com/ScriptReference/Material.SetTextureOffset.html

Shader内でTiling/Offset値の取得方法

UnityのShaderプログラム内で「Tiling」や「Offset」の値を知りたい場合は{TextureName}_STの値を参照すると良いそうです。

sampler2D _MainTex;
float4 _MainTex_ST;
_MainTex_ST.x; // Tilingのxの値
_MainTex_ST.y; // Tilingのyの値
_MainTex_ST.z; // Offsetのxの値
_MainTex_ST.w; // Offsetのyの値

テクスチャーのサイズを知りたい場合は{TextureName}_TexelSizeの方が使えます。

リンク

Unity – Manual: Accessing shader properties in Cg/HLSL
https://docs.unity3d.com/560/Documentation/Manual/SL-PropertiesInPrograms.html

PythonでQRコードのスキャン方法

PythonでQRコードの読み取り方

使用するライブラリ

ZBar
http://zbar.sourceforge.net/

Pillow (Python Imaging Library)
http://python-pillow.github.io/

使い方

QRコードの画像qrcode.pngを読み込む

>>> from PIL import Image
>>> pil = Image.open('qrcode.png').convert('L')
>>> width, height = pil.size
>>> data = pil.tobytes()

tostring()は廃止されたので、代わりにtobytes()を使います。

ZBarを使ってQRコードをスキャン

>>> import zbar
>>> scanner = zbar.ImageScanner()
>>> scanner.parse_config('enable')
>>> image = zbar.Image(width, height, 'Y800', data)
>>> scanner.scan(image)

スキャンした内容

>>> for symbol in image:
>>>   print symbol.type, ':', symbol.data