2023-01-01から1年間の記事一覧
シューティングゲームなどで、敵機に図のような軌道を描かせたいときにどうしたらよいか、考えます。 これだけなら、適当な式を定義してそれに沿って移動させればできるかもしれません。ネットで「いろいろな曲線」などで検索してみてください。「バラ曲線」…
Excelの表で、価格×個数の総和を求めます。 方法はいくつもありますが、今回はこれ。 使っていないセルに上の式を入力します。価格の列と個数の列で、対応する値をかけています。そしてそれらを総和する、の意味です。……が、ここでENTERを押してもダメです。…
パネルにボタンが配置してあるとします。ボタンはパネルの子になっています。何かの事情でこのパネルのα値を変えたいとします。以下のコードではうまくいきません(goはパネルのGameObject)。ボタンのテキストはそのままで、パネルの地だけが半透明になって…
次のように表示したいとします。先頭の”000”は色違いです。この"000"はなくてもいいとも言えますが、地味な色にすればいい感じ。実践では桁数を固定したいことが多いかも知れません。そのときは"00000000000"といった文字列からスコアの桁数を引き算した分の…
あまり見かけないなあ……と思った話です。ゲームオブジェクトがアクティブかどうか、ではありません。存在するかどうか、つまり削除されていないかどうかの確認です。 Unityで2Dシューティングを書いています。敵に0.1秒間隔くらいで弾を撃たせるのにコルーチ…
学校はようやく期末試験の期間に。まだ採点、成績処理があるけれど、正月にかけてある程度まとまった時間が取れるので開発作業に注力します。 今日はいくつか仕事しながらゲームを書いていました。目指す動作になっているか確認しながらプログラミングするん…
久しぶりにワクワクする小説を読みました。『六人の嘘つきな大学生』(浅倉秋成2023角川文庫)です。 六人の嘘つきな大学生 (角川文庫) 作者:浅倉 秋成 KADOKAWA Amazon 6人の大学生の就職活動、IT企業スピラリンクスの採用試験が舞台です。6人にディスカ…
前回の記事の続きです。wavファイルのサウンドデータを逆順に並べて保存するのですが、以下のPythonのwaveモジュールを使ったコードでできます。逆順に並べ替えているのは for i in range(buf.size): #bufの内容を逆転してbuf1へ格納 buf1[i] = buf[buf.size…
Unityでアプリを書くときの、サウンドファイルの暗号化の方法です。少し前の記事で書いたように、最初ぼくはサウンドファイル、画像をアセットバンドルとして扱い、アセットバンドルを暗号化する方法でやってみたのですが、PCではうまく行きましたが実機(ス…
あります。……というか多いです。数学が好きなら、それを教えてお金になるのですからこれほどいい職業はありません。しかし世の中、うまい話はありません。 生徒に「定期テスト(中間テスト、期末テスト)と授業中にやる小テスト(10点満点とか)の1点に差は…
Unityでゲーム作成時に使う画像(pngファイル)を暗号化する話です。ゲーム作者でない人間がゲームに含まれるアセットを取り出すことは可能で(そういうソフトウェアがある)、それを防ぐための手段です。 ゲームにはアセットバンドルという形で画像などを含…
前回紹介した、『たのしい2Dゲームの作り方 第2版』(STUDIO SHIN2023翔泳社)にひと通り目を通しました。スプライトなど、アセットはダウンロードして使わせてもらい、あれこれ実験をやりました。大変勉強になりました。 たのしい2Dゲームの作り方 第2版 Un…
立体の復元実験もケリはつき(よくない結果でしたが……)、夏休みもそろそろ終わりです。次はまたアプリでも作るかな……と1週間くらい前から勉強を再開しました。本も購入。『たのしい2Dゲームの作り方 第2版』(STUDIO SHIN2023翔泳社)です。 たのしい2Dゲ…
立体の復元、一応ここまでで書いた理屈は全てプログラムで試してみました。しかし、結果は×でした……。結構時間かけたのに……。写真3枚から内部パラメータ行列Aを求めようとするとき、次の式を使います。 ブログではBを(測定によって)求めてからこの式を使…
ここまでチェスボードを使ってカメラの校正をして写っている立体を復元する方法を説明してきました。長かったですし、毎回「なるほど!」と納得していたつもりでも、いざ「さあプログラミング!」というとき「あれ、何をすればいいんだっけ?」と必ずなりま…
ここまでで3枚の写真からカメラの内部パラメータAを求め、基礎行列Fを求め、基本行列Eを求め、回転行列R、平行移動ベクトルtを求めました。ここからは3枚のうちの2枚を使えば立体の頂点などの(空間内の)座標を計算できます。この部分を説明します。 …
続きです。今回まででR、tが求まります。全体、『写真から作る3次元CG』に従っています。あちこち「あれ?」と躓いたところがあり、後で読んですぐ理解できるよう、かなり詳しく説明をつけておきました。1回引っかかったところは次回も必ず引っかかるもので…
前回の記事でFが求まります。次に、このFからE、R、tを求めます。やはり結構大変です。 次回、Cを最小にして回転行列、平行移動のベクトルを実際に求めます。今回の記事は何回も紹介している『写真から作る3次元CG』によっています。 3次元コンピュータビジ…
Fは成分が9個ですから、「9点法」が正しいのでは?……と思うかも知れませんが、エピポーラ方程式を見るとFの成分が全部2倍になっていても成立します。いろいろなテキストでこういった事情を「Fのスケールは任意」と表現しています。例えばFの右下の成分を1に…
高校では生徒が問題を起こしたとき、場合によっては謹慎処分にしたりします。例えば喫煙が発覚したら5日間の自宅謹慎、とか。学校によりますし多分明確には決まっていないこともあると思うんですが、経験では5日の謹慎なら最低2回、できれば3回くらい家庭訪…
ここで、ぼくがこの分野を勉強し始めて最も悩んだことのひとつ、座標変換について整理しておきます。式が明らかになっていても、落ち着いて考えると「このmはどこの座標で測ったものなんだっけ?」とか、「どちらの座標軸を動かしたと考えている?」とか、…
ここで少し休憩。写真からチェスボードを使って立体を復元(1)~(7)で一応、チェスボードの映り込んだ写真3枚から撮影に使ったカメラの内部パラメータ行列Aを求める方法を説明しました。初めてだと特に、「理屈は分かったけれど、じゃあ具体的に何をどう…
いよいよ次の連立方程式を解きます。 以上で定数倍の定数λも含め、変数が全て求まりました。参考にしているテキスト『写真から作る3次元CG』では結果は載っていますが、計算の過程は書いてありません。結構大変でした。なお、eがこの記事の結果とは一部違…
続きです。カメラの内部パラメータ行列、Aを求めます。Aの成分は、下の通り添え字がついているものがあります。意味が分かりやすいからですが、単純に連立方程式などを解くときには却って見づらくなります。そこでこれらはアルファベット1文字で表すことに…
続きです。やや分かりにくい式変形が含まれます。ノートに書いて理解してください! 次回以降ではこうして求めたBからAを求めます。参考にしているテキスト(『写真から作る3次元CG』)ではこの計算は省略されています。ここも丁寧に書きます。 追記 202…
続きです。自分があとで見て分かるよう、かなり丁寧に書いています。相変わらず手書きですがご勘弁を……! 次回以降で具体的にAを求めます。個人的には意外というか、「なぜこんなに大変なの?」という気持ちです。アングルを変えて何枚か写真を撮れば、チェ…
続きです。写真上の点とチェスボード上の点の対応からHを求めます。 このあと、順にHを求め、Aを求め、Rとtを求めます。
まず基本。以下で、チェスボード上の点が写真上ではどのような座標に対応するのか、計算するための式を求めます。 Hは3行3列の行列です。u, v, u', v' の対応からHの成分が分かれば先へ進めます。 今回はここまで。カメラ座標系(の座標軸)を、回転R(空間…
現在、また「何枚かの写真に写った立体をPCで再現する」というテーマで理論の整備、実験をしています。具体的には、立体の写真(建物の写真、家具の写真、……)を何枚かPCに渡して、PC内でそれらの立体の頂点の座標を計算します。そうすればPC内でそ…
大変なことになっていますね。何だかいろいろスバラシイカード!……のはずだったのに、何これ……という感じです。一番大切な部分が最も雑、とでも言えそうなシステム。皆さんの職場を考えてください。「新システムです!」なんて導入されたら問題発生しまくり…