相変わらず暑い日が続きます。
年々、酷くなって来ているようで、早くSSPGを世に出したいのですが、思うようには進みません。
他方、日本の政治は混乱続きで、こちらは暑苦しい毎日のようです。
先月は政府の中枢にいた人と話をしたのですが、政策決定のスキームを根本から変えて行く必要がありそうです。
政治家が官僚に案件を投げて、官僚が御用学者等と相談して無難な案を作る。
国が旗を振り、それに大企業が乗っかって、オールドメディアがちょーちんを付ける。 ➡ 護送船団方式
こんなやり方を何時までも続けていては、日本はダメになってしまうし、これまでの反動で過激な思想に流れ過ぎるのも避けたいところです。
一方、怪しいアルバイトのおっさんは、SSPGを少しでも早く世に出すために、急がば回れでPythonを勉強中です。
Pythonを使って正確な図形を描き、それをAIでリアルなパーツに変換して、バーチャルなSSPGを構築して行きます。
その過程を逐次SNSで公開して、これを”実際に構築すれば良い”と、応援してくれる人を増やしてゆきたいのです。
何故にPythonが登場するのか?
生成AIは、何でも言葉で指示できて便利ですが、時として、まどろっこしさを感じます。
例えば、縦100,横100,厚さ5の正方形の薄いメタル板を作ろうとします。
Geminiのプロンプトで座標を指示するとこんな図形が出来上がりました。
気を利かせてZ軸のスケールを大きくとってくれました。
正方形にはなりましたが、テーパーがついてしまって、厚みも5ではなさそうです。
どうも、こちらの指示以外に何か自分の工夫を入れたいようです。
私と性格が似ています。
ちなみに、私の思いを汲み取った、正確なディメンジョンと質感でグラフィックを作ってもらうのにはどうプロンプトを入力すれば良いのか?
ここまでのチャットを元に、そのプロンプトを出力してもらいました。
A realistic, simple graphic image of a thin rectangular metal plate with a brushed aluminum finish, in a clean studio setting. The plate is exactly 100mm by 100mm and 5mm thick.
そう、まさしく、これが洗練されたプロンプトです。
ここまでの、チャットのやり取りでGeminiは私の意図を正確に理解できているようです。
(だったら、素直にこちらの望み通りのグラフィックを生成せんかいっ!!)
これをそのまま入力すると次のようなグラフィックが返って来ました。
そう、これが正解です。
人間の言語は、特に日本語は、表現の幅が広すぎて、なかなかピンポイントで意図を伝えにくい面があります。
だったら、もっと表現方法(文法)に制約があるプログラム言語を使う方が効率的です。
ちなみに、GeminiはPythonのコードも生成できて、この例の場合には次のようになるそうです。
import matplotlib.pyplot as plt
import numpy as np
# Create a new figure and an axes object for 3D plotting
fig = plt.figure(figsize=(10, 8))
ax = fig.add_subplot(111, projection='3d')
# Define the coordinates for the six faces of the cuboid
# Face 1: Bottom (z=0)
x_bottom = np.array([[0, 100], [0, 100]])
y_bottom = np.array([[0, 0], [100, 100]])
z_bottom = np.array([[0, 0], [0, 0]])
ax.plot_surface(x_bottom, y_bottom, z_bottom, color='skyblue', alpha=0.8)
# Face 2: Top (z=5)
x_top = np.array([[0, 100], [0, 100]])
y_top = np.array([[0, 0], [100, 100]])
z_top = np.array([[5, 5], [5, 5]])
ax.plot_surface(x_top, y_top, z_top, color='salmon', alpha=0.8)
# Face 3: Back (y=0)
x_back = np.array([[0, 100], [0, 100]])
y_back = np.array([[0, 0], [0, 0]])
z_back = np.array([[0, 5], [0, 5]])
ax.plot_surface(x_back, y_back, z_back, color='lightgreen', alpha=0.8)
# Face 4: Front (y=100)
x_front = np.array([[0, 100], [0, 100]])
y_front = np.array([[100, 100], [100, 100]])
z_front = np.array([[0, 5], [0, 5]])
ax.plot_surface(x_front, y_front, z_front, color='gold', alpha=0.8)
# Face 5: Left (x=0)
x_left = np.array([[0, 0], [0, 0]])
y_left = np.array([[0, 100], [0, 100]])
z_left = np.array([[0, 0], [5, 5]])
ax.plot_surface(x_left, y_left, z_left, color='orange', alpha=0.8)
# Face 6: Right (x=100)
x_right = np.array([[100, 100], [100, 100]])
y_right = np.array([[0, 100], [0, 100]])
z_right = np.array([[0, 0], [5, 5]])
ax.plot_surface(x_right, y_right, z_right, color='purple', alpha=0.8)
# Set axis labels and a title for the plot
ax.set_xlabel('X 軸', fontsize=12)
ax.set_ylabel('Y 軸', fontsize=12)
ax.set_zlabel('Z 軸', fontsize=12)
ax.set_title('正方形の直方体 (100x100x5)', fontsize=14)
# Set the axis limits to ensure the cuboid is fully visible
ax.set_xlim(0, 100)
ax.set_ylim(0, 100)
ax.set_zlim(0, 5)
# Save the plot to a file
plt.savefig('square_cuboid.png')
plt.close()
私は、まだPythonを1日しか学習していないので、詳細は判りませんが、なんとなくは理解できます。
このように、先ずはPythonで正確なディメンジョンの構造物を作り、それをAIでリアルな画像や、波を受ける動画に仕上げて行きたいと思っています。
が、しかし、ここで問題が一つ発覚しました。
AI( Gemini )は、Pythonで作った画像ファイルを直接読み込み、それを加工したり、動画に組み込んだりすることが現時点ではできないそうです。
まあ、そうは言っても何らかの方法はあるでしょう。
と言うわけで、AIのAPIの勉強も始めたわけですが.......
こうして、何かを始めると、どんどん上流に遡って行って、本来の目的から遠ざかる。
まさしく”エンジニアあるある.”....です。








