UnityのCanvas RenderModeについて深堀りしてみたVer2

以前、UnityのCanvasについて紹介しました。
Render ModeをScreen-Space Cameraについてお話しました。
Screen-Space Cameraとは、CameraのViewの範囲の特定エリアに常にCanvasを配置しておく、といった設定でした。

今回は、World Spaceについて深堀りしてみたいと思います。

通常の使い方でいうと、Scene全体を示す World SpaceにCanvasを貼り付けることを想像する人もあるかもしれないですが、今回は特定Objectに対してWorld Spaceを設定することです。

特定のObjectをA Objectとした際に、Aを親・Canvasを子としてRender ModeをWorld Spaceに設定します。

そうすることで何が出来るようになるかと言うと、
特定のObject Aに対して、クッツイた状態のCanvasが設定することが出来るのです。
イメージがつきますでしょうか??

よくある例でいうと
・ゲームのHPを特定のPlayerにクッツイた状態で表記
・Playerに表記する矢印キーをくっついた状態で表記
など色々と応用可能かと思います。

UnityのCanvasのRender Modeについて深堀りしてみた

Render Modeについて調べていたら、めちゃくちゃ分かりやすい記事に出会いました。
https://light11.hatenadiary.com/entry/2019/04/15/232416

で、これでも相当理解できたのですが、
Render ModeをScreen-Space Cameraの理解を深めました。
というか、Canvasのサイズに起因している要素について2つのパラメータが影響しています。

(1):CanvasをScene上に配置してください。
(2):Render ModeをScreen-Space Cameraへ変更
(3):Render Mode > Render CameraにMain Cameraを設置

ここまで前準備で行ってみてください。

ここから調整してみて欲しいパラメーターは
①:Canvasの Plane Distance
②:Main Cameraの Field of View

この2つのパラメータを調整してみると、Canvasのサイズも同時に変化していることが分かると思います。
当たり前と言えば当たり前なのですが(Screen-Space CameraはCameraのサイズにFitしたCanvasなので)

実際に、パラメーターを調整してみると、Screen-Space Cameraがどんな設定なのか分かると思います。

‘Incorrect padding’ エラー対処方法.Pythonでbase64を用いてdecode

Pythonでbase64を用いてdecodeする際に、非常に苦しみました。
Canvasの画像をbase64にして、POSTでデータ送信し後、base64を画像データにdecodeしようとした際にエラーが発生しました。

'Incorrect padding'

decodeする際には、下記のようにdecodeすればOKという記述も多々ありますが、

img_data = base64.b64decode(base64image)
img_data = base64.urlsafe_b64decode(base64image)

これでは、Incorrect paddingらしい…..
(原因はあまりわかっていないのだが、形式が違うのだろうと想い….)
stackflowで下記を見つけました。

https://stackoverflow.com/questions/2941995/python-ignore-incorrect-padding-error-when-base64-decoding

b64_string += "=" * ((4 - len(b64_string) % 4) % 4) #ugh

これを使ってみました。

base64image += "=" * ((4 - len(base64image) % 4) % 4)        
img_data = base64.urlsafe_b64decode(base64image)

これで、エラーが解消されました。

原因などは、正しく理解できていないので、ご利用は自己責任でお願いします!!