サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
大谷翔平
www.omoshiro-suugaku.com
バーチャルカメラというのを使ってみました。ゲームで、例えば主人公が動くのを後ろからカメラが追いかけ、立ち止まるとカメラがビューンと動いて(背景もダイナミックに変化!)正面からアップに……みたいな演出がありますよね。いわゆる「カメラワーク」というやつで、理屈を言えば空間内でカメラを主人公を撮りながら動かせばよいだけです。しかしこれを実際にやろうとすると結構な仕事になります。それなりにコードを書かなければなりません。それを割と簡単に実現する方法があるのです。 CinemachineというアセットをUnityにインストールします。導入の仕方を丁寧に解説しているサイトがたくさんあり、助かりました。で、実際に使ってみると……よく分からないというか、なかなか思いどおりにいきませんでした。が、実験を繰り返してどうやら「ゲームに使えるかな?」という感じになったので記録しておきます。 バーチャルカメラをシー
タイトルの通りです。今、2Dシューティングゲームを書いています。2Dでもライトが使えるそうで、ゲームに入れてみることに。こんな感じで、よさそうです! しかし、スクリプトから明るさを変化させたかったのですがなかなかうまくいかず、サイトもあちこち見て試しましたがそれでもダメ。スクリプトの先頭辺りに書く「using」行ですが、あれ、なぜか勝手に増えることがありますよね(?)。そのためにエラーが起こることがあって「なんだ、こりゃ」と思っていました。しかし今回はよかったです。ふと気づくと using UnityEngine.Rendering.Universal; が付け加わっていて、なぜかうまくいきました……。以下のコードで明るさを変化させることができます。ここではグローバルライトを相手にしています。 ------------------------------ using UnityEngine
FFTのバタフライ演算についてまとめます。「自分で勉強したけれど難しかった」という方、ご覧ください。前回、前々回の記事からの続きです。 www.omoshiro-suugaku.com www.omoshiro-suugaku.com FFT(高速フーリエ変換)とは、DFT(離散フーリエ係数)に高速化の工夫を施した手続きです。T秒間で手に入るN個のデータ から、N個の離散フーリエ係数 を次の式によって計算するのがDFTです。 ここでWは回転子を表します。回転子とは で定義される数値です。Nの値によって変わるので注意しましょう。 実は、DFTはそのままの式で計算するとNが大きい値のときには計算量が爆発的に増えてしまい、コンピュータを使ってもどうにもなりません。そこで計算量を減らす工夫が必要なのです。それがFFTです。FFTはバタフライ演算という計算法の組み合わせで実現されます。これが分かりに
wav(ウェーブ)ファイルというのがあります。MediaPlayerなどを使ってパソコンで再生できますよね。wavファイルは構造が決まっていて、ファイルの先頭付近に音楽データの長さや、サンプリング周波数、ステレオかモノラルかの区別のための数値などが入っています。すべて音楽をデジタルデータで扱うためのパラメータです。その後に実際の音楽データが並んでいます。この音楽データは、(wavファイルのタイプによりますが)-32768~32767の範囲の整数値の並びです。「3499,-23,-25,-60,……」といった具合です。さて、これがwavファイルなんですが……不思議ではありませんか?? こんな数値の単純な1列の並びがあの音楽を鳴らしているわけです。wavファイルを再生するといろんな楽器の音、人間の声などが、いろいろな高さ、強さ、速さで流れてきます。さっきの数値の並びは、ある意味、単純にスピーカ
よさそうな本だけれど、買おうか買うまいか、それとも古本にしちゃおうか、借りて済まそうか……。迷うことがあります。あるいは近い内容の本が2冊あって、どちらにしたらよいか決めかねているとか。 ぼくはまず目次をザッと見て前書き、後書きを読みます。勉強したい内容かどうか、著者がどんな意図で書いている本なのか、ある程度分かります。 参考文献のページもよく見ます。その分野の勉強の経験がない人は、特に独学の場合いつも不安です。どんな本をどういう順に読めばいいのか分からないのです。それでも1冊読んでみて「これはいい本だ!」と思ったらその本の巻末に載せてある参考文献は信頼できるでしょう。次に読む本はここから選べばよいですよね。また、著者によっては参考文献の一部について「この本は本書よりやや進んだ内容で、特に××については詳しく書いてある」、「工学の立場から具体例を用いて直観的に理解できるよう配慮されている」
Python基本サウンドプログラミング~周波数分析,高速フーリエ変換(FFT)入門~ 作者:吉田 節Amazon コードをコピーし、読者の開発環境で貼り付けてご使用ください。 目次 2-4 2音を鳴らすwavファイルを作る 2-6 平均律、純正律のドミソの和音を聞き比べる 2-7 周波数の近い2音を鳴らしてうなりを確認する 2-8 プッシュボタンを使わずに電話をかけられるか 2-10 wavファイルのパラメータを読み取る 2-11 matplotlibモジュールでグラフを描く 3-1 wavファイルで、サウンドデータの符号を一斉に反転する 3-2-1 クリッピングされたデータでグラフを描く 3ー2-2 wavファイルでクリッピングする 3-3 逆再生する、ドレミファソラシドを鳴らす 3-4 変声機の原理を確認する 4-5 SciPyのFFT、IFFTを使ったわかりやすい例(1) 4-6 S
前回、UIをドラッグするコードを紹介しました。UIとしてはPanelを相手にしていますが、他でも同じだと思います。 www.omoshiro-suugaku.com 今回はそれに続けて、Panelにピンチイン、ピンチアウトを実装します。ピンチインとは2本の指で画面の一部をつまむような動作です。場面によりますが、表示の倍率を下げる(小さくする)ときの動作です。ピンチアウトは2本の指で画面に触れ、指を開く動作です。表示を拡大するときに使います。 ネットには参考になるコードがいくつもあります。しかしなかなか思ったような動作のものが見つからず、自分で書いてみました。 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.EventSystems; using
以前、変数が2つのときのラグランジュの未定乗数法について書きました。www.omoshiro-suugaku.comwww.omoshiro-suugaku.com 今回は変数が3つのときの話です。 制約条件 g(x, y, z) = 0 ……①(図の例では球) , h(x, y, z) = 0 ……②(図の例では平面) のもとで、f(x, y, z) の極値を求めます。 ①かつ②の表す図形は空間内の曲線(図の例では球と平面の交線の円)です。空間内の曲面、f(x, y, z) = c は、c をジワジワ増やすと(減らすと) ジワジワ動きます。そして、それがこの例では交線の円に接するとき、f(x, y, z) は極値を取ります(例えば、c をジワジワ増やしていって円に接したなら①、②は同時に満たされるわけで、しかもcは極小値)。∇f、∇g、∇hはそれぞれ曲面 f(x, y, z) = c、
ラグランジュの未定乗数法の第2回です。第1回は大分前、手順だけを説明しました。今回は理屈を解説します。条件 g(x, y) = 0 のもとで、z=f(x, y) の極値を求めます。図の細い線(f(x, y) = C1 など)は z = f(x, y) の等高線です。例えば f(x, y) = C1 は z = f(x, y) の、高さC1であるような (x, y) が描くxy平面上の図形です。 図形 h(x, y) = 0 の点 (x, y) における法線ベクトルは ∇hなのでした。この事実を使います。∇hは で定義されます。∇は「ナブラ」と読みます。図を参照してください。 f(x, y) の値を求めるのに使える点 (x, y) は曲線 g(x, y) = 0 上にしかありません。しかも、図の例えばA点でfが極値を取るならば曲線 f(x, y) = C1 はその点で g(x, y) = 0
高校生がこの問題を解くなら、たいてい以下のようにやるでしょう。 あとは平方完成でもすればいいですね。しかし、①から③を導きましたが、今回は①が簡単だったのでそれでよかったのです。①の代わりにとかだったらどうしますか? つまり、1変数について解き、代入して変数を消去……という解き方が通用しないことだってあるわけです。今回は、こうした変数の消去を行わないで極値を求める方法を紹介しましょう。ラグランジュの未定乗数法と言います。偏微分という考え方が必要ですが、どうってことはありません。例えばのとき、zをxで偏微分すると4xとなり、zをyで偏微分すると6yです。要するに「xで偏微分せよ」と言われたら、他の変数は定数だと思って今までの微分をするだけです。記号では、です。この偏微分の記号を使ってラグランジュの未定乗数法を説明すると以下の通り。 簡単でしょう? この解き方の中で、④が肝心な式です。④は、こ
OpenCV(画像処理ライブラリ)でマウスのクリック位置を取得します。画像を表示しておき、その画像上でマウスイベント(右クリック、左ダブルクリック、……)が起こったときにコールされる関数を定義します。ここでは左クリックしたときに画像上の座標を取得して、表示することにします。後で写真から立体を再現するとき、画像上のコーナーなどの座標を求める必要があるのでそのときのための準備です。OpenCVのチュートリアル、その他分かりやすいサイトもたくさんありますが、自分用にちょこちょこいじってあります。例によって最小限のコードで。 import cv2 #コールバック関数 #マウスイベントが起こるとここへ来る def printCoor(event,x,y,flags,param): if event == cv2.EVENT_LBUTTONDOWN: print(x, y) img = cv2.imr
前、相加平均と相乗平均について書きました。「平均」の定義は場面によって変わります。「この辺が全体の『真ん中』あたりかな?」というのが「平均」で、状況に応じて計算の仕方は変わるのでした。今回は別の平均、調和平均について書きましょう。 ある道を往復します。行きは時速60km、帰りは時速90kmで走ったとします。全体を通しての「平均」はいくらでしょう? 単純に(60+90)÷2=75とやってはいけません。時速90kmで走った時間と時速60kmで走った時間とでは後者の方が長いからです。だから答えは単純な平均(相加平均)である時速75kmよりも時速60kmに近い値になるはずです。道の長さをakmとしましょう。行きはa/60時間、帰りはa/90時間かかります。走った距離は往復で2akmですから、(距離)÷(時間)で全体の速さを求めれば 2a÷(a/60+a/90)=2÷(1/60+1/90)=72 と
このページを最初にブックマークしてみませんか?
『www.omoshiro-suugaku.com』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く