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

Pythonで日付を扱う場合のTips

Pythonで日付を扱いたい場合、datetimeを使うと便利です。

使い方は次のような感じです。

文字列型とdatetime型の変換

datetime型から文字列型に変換

>>> import datetime
>>> date = datetime.datetime(2020, 2, 11)
>>> date.strftime('%Y/%m/%d')
'2020/02/11'

文字列型からdatetime型に変換

>>> datetime.datetime.strptime('2020/02/11', '%Y/%m/%d')
datetime.datetime(2020, 2, 11, 0, 0)

日数の差を計算

>>> date1 = datetime.datetime.(2020, 2, 11)
>>> date2 = datetime.datetime.(2019, 2, 11)
>>> (date1 - date2).days
365

何日か後の日付を計算

>>> date = datetime.datetime.(2019, 2, 11)
>>> date + datetime.timedelta(days=365)
datetime.datetime(2020, 2, 11, 0, 0)

月の日数を調べる

calendarを使って次のような感じで取得できます。

>>> import calendar
>>> calendar.monthrange(2020, 2)[1]
29

1年は12パターンしかありませんが、うるう年も計算してくれるので便利です。

リンク

datetime — Basic date and time types — Python 3.8.2 documentation
https://docs.python.org/3/library/datetime.html

calendar — General calendar-related functions — Python 3.8.2 documentation
https://docs.python.org/3/library/calendar.html