見出し画像

Unityを知るためにC#の学習を開始

突然だがC#を学ぶことにした。唐突であるw 理由は幾つかあるが、まぁ、たまたま機会が訪れた、という具合。Pythonの弱点みたいなところも分かり始めたというのもある。

(約 2,500文字の記事です。)



Pythonへの不満が分かり始めた

そんなに致命的な点はない、というかそこまで習熟していないのだがそれでもPythonの弱点は少しずつ見えてきた。

  • インタプリンタなので実行速度(レスポンス)が遅い

  • 上から逐次実行なので必要なものは上の行で事前に登場しないとNG

  • GUIにかなり弱い

  • Tkinterは辛いw 分かりやすくはない

  • かといってQt系も結局はC++でできているわけで

  • Blenderのアドオン開発でもGUI周りはBlender APIを使わざるを得ない

先日、フォロワーさんにTkinter無料版のUdemyコースを紹介したばかりで舌の根も乾かぬうちにw というわけではないが、客観的に眺めたらどうやらPythonってGUIにあまり強くはないな、むしろ弱い?と感じた。質実剛健で使えればいいGUIならばTkinterでごり押しできるが、あくまでごり押し。

あとインタプリンタ型なので上の行から順番に解釈される。なので定義を下の方にまとめて~という書き方はできない。書くなら上に、事前に登場させる必要がある。この辺はコンパイル型との違いだと感じた。

Pythonのシンプルで柔軟性が高くて初心者に優しい「いいところ」も十分分かるのだが、でもなんか「足りない」気もするんだよな~。

と思っていたところ、Udemyも今週はサマーセールということで、学ぶなら今がチャンスかも?と思っていた分けよ。


3DCG活動への回帰とBlenderへの不満

PythonはZbrushプラグイン開発も兼ねて自分の武器を増やすための学習だった。そして1つリリースできた。だがZbrushについては今後は色々と懸念材料が多い。

Blenderについては活動再開の予定だが、Blenderにも不満がある。リアルタイム性が悪い。特に物理演算をさせるとモッサリで、演算結果をベイクしないといけない。リアルタイムでいつもサクサクとは行かない。

だからどうしても物理演算についてはBlenderではやりたくないなぁと二の足を踏んでいた。私にとってはBlenderは結局モデリングツール&セットアップツールになっている。

そこで出てくるのがゲームエンジン。Unity, Unreal Engine (UE)だ。ゲームエンジンなら3DCGでも軽くリアルタイムで動かせる。UnityもUEも2, 3年前にどちらも軽く学んでいる。久々に復活という感じ。では今回はどっち?ということで色々考えた結果、UEではなくてUnityを選んだ。

Unityの利点

逆にUEから考えてみたほうが早かった。UEは超絶美麗でフォトリアルな方向に進化している。だが私は実は今後の3DCGにはフォトリアルを求めていない(私のみの個人的な嗜好で)。むしろセルルックというか、情報を丸めた表現のほうが好きなのだ。その点で言ってもUEではないなと感じている。

対してUnityはセルルックなシェーダー表現に歴史があるし、一部のアニメでも製作に使われた実績がある。またVRChatなどでは避けては通れない道だし、AR、仮想現実にも強い。スマホデバイスなどへの応用性が高い。

私が今後の自分の活動での3DCGでは、超絶ハイポリや超絶リアルなモデルの出番はない。逆にミドルポリ程度でつるっとしたセルルックというかアニメ調の「表現を圧縮した」モデルで十分なのだ。逆に処理の軽さ、リアルタイム性がとても重要になる。となればUnity一択だろう。

んでUnityやるならC#ということになる。(UEならばC++だろう。)

それにUnityならばリアルタイムで物理演算による表現ができるので、ようやく物理演算に手を出してみようかな?と思えるようになった。物理演算はソフトごとの独立した実装なので、ソフトAで習熟したテクニックはソフトBではあまり役に立たない=ゼロベースでやり直し、というパターンが結構ある。なのでソフト選びは割と重要。

Unityならば学んだ知識はどこかで生かせる?気がしている。ただの直感。
そう囁くのよ、私のゴーストが w


ゲーム用途の3DCG学習のためのモチベ用途

結局は「ゲーム用途の3DCGモデルや周辺知識を身につける」ためのモチベーションとしてUnityを学んでみようと思ったわけ。そのついでにコンパイル型のC#も学ぼうと思ったわけ。なので早急に身につける必要はない。

ちなみにゲーム開発そのものにはあまり興味がない。今回はリアルタイム3Dモデルモーション再生ツールとしてUnityを捉えている。ゲームエンジンとしては見ていない。視点が違うことに注意。

だがプログラミングには「強烈な目的意識」これがないとすぐに挫折する。目的なしのプログラミング学習は拷問だと思う。

また3DCGモデリングについても「なぜハイポリよりもミドルポリ、ミドルポリよりローポリがいいのか?」についても頭では分かるが体験としては未知のままってのも具合が悪い。Zbrushみたいに無条件なら何億ポリでもいけるぜ!というのでOKならばZbrush一択でいいぢゃん?というのもまぁ分かる。けどそこの反対の視点はどうなのか?がまだ自分にない。

だったら学んで知ってしまえばいい。それだけの話。なのでUnity+C#を学ぼうと思った。せっかくなのでUdemyで高速学習中。Pythonでプログラミング脳になっているうちにPythonとC#での共通事項はすっ飛ばして速習できるのでそのメリットを生かしている。


なんだかインプットしてばかりだ。そろそろアウトプットの用意もしないと。

今回の創作活動は約1時間(累積 約3,891時間)
(1,136回目のnote更新)





読んでくれてありがとう。気長にマイペースに書いてます。この出会いに感謝😊