見出し画像

しせんのゆくて (CGプログラミングに挑む)

はじめに

 初級者によるプログラミング学習の記事です。この記事では、CGプログラミングを学ぶための準備について書きました。
 以前プログラミングを始めた際は、碌な下調べもせずに勢いだけで始めて痛い目にあいました。
 今回は、その教訓を活かしてしっかりと下調べをしました。その下調べのまとめが今回の記事の内容です。

次元

 今回の対象は、コンピュータグラフィクスですが、CGと言ってもはその分野は多岐に渡ります。すべてを網羅することは現実的ではないので、分野を絞り込む必要があります。

 CGを大雑把に分けるとすれば、2DCG3DCGになります。まずは、このどちらかを選択しなければなりません。
 そこで、インターネットで色々と調べて、比較、検討しました(noteでの収益可能性とか)。
 その結果、3DCGに分があるように感じました。具体的には、3DCGのほうが、初心者からの人気(関心)が高いように思います。初心者の数は、資料を集める点からも、また潜在的な読者という点からも重要になります。

 よって、今回は3DCGを選ぶことにしました。

エンジン

 3DCGでは、一般的に、ゲームエンジンと呼ばれるフレームワークが使用されます。

 現在、主流のゲームエンジンは、UnityUnreal Engineの二つです。
 ですが、日本に限れば、Unitiyのほうが圧倒的に愛好家の数が多いです(UEは玄人向けな感じです)。
 そこで、Unitiyにしたい....したい...
 と、思ったのですが残念なことに、能力不足で動きそうにありません。もちろん、ではなく、PCのことです(10年落ちのモバイル向けCPUなので...)。当然UEも動きません。

 仕方がないので、エンジンは使わないことにしました。

ライブラリ

 エンジンを使わないとなると、その下の階層、すなわちライブラリを直接に使うことになります。

 私の環境ではグラフィックライブラリとしてMesaが導入されています。そのため、選べる3DCGライブラリはOpenGLVulkanになります。それぞれの特徴は、以下の通りです。

OpenGL
 開発言語はC言語。設計が古く冗長な部分がある。WebGLも合わせると情報は多い。

Vulkan
 開発言語はC++。OpenGLを刷新すべく作られた。新しいので情報が少ない

 迷うことなく、OpenGLです。C++などと言う「GCを採用したら自身が真っ先に回収されそうな傑作言語」は使いたくありません(前回のArduinoで半日ほど触っての感想です)。

追記
 
Vulkanの公式教材の使用言語がC++だったので、開発言語もC++と勘違いしていました。実際には、C言語でも開発できるようです。ただし、私のCPU(Intel Gen7)は、Vulkan 1.0にしか対応しないので、OpenGLを使うことには変わりません。

教材

 いつものように「無料」の教材を探しました。初心者向けで、学習時間が10時間ぐらいのものが望ましいです。

 これについては、よいものを見つけることができました!

 「今週末、レイトレーシングどう?」です。完読すると、レイトレーサーが出来上がるそうです。サンプルコードはC++ですが、読むだけなら大丈夫でしょう。それに、C++の特徴はあまり使わない、みたいなことも書いてます。

まとめ

 以上のように、CGプログラミングについて、その大まかな方針として、3DCG+OpenGL+レイトレーシングを対象にすることが決まりました。後は、実際に教材を進めてみないと何とも言えません。
 ただ、教材を流し読みした感じでは、OpenGLについて一切触れていないようなので、OpenGLは使わないかも知れません。

本音

 正直なところ、Unityを選べなかった時点で、いつもの負け戦になるのは目に見えていますが、万が一と言うこともあります。やってみなければ分かりません(起業や投資や副業や国際ロマンスと同じです)!

今後の予定

 次回は、いよいよCGプログラミングに挑戦します。かっこいいグラフィックスをお見せできるよう精々がんばってもらいたいと思います。PCに。

古往今来得ざれば即ち書き得れば即ち飽くは筆の常也。と云うわけで御座います、この浅ましき乞食めに何卒皆々様のご慈悲をお願い致します。