ねこでじ(Nekodigi)

Nekodigi’s diary

学習中の気づきをまとめています。応援よろしくお願いします

【PHP】画像をアップロードして表示するシステムを作る

成果物 www.youtube.com ようやくメインの目標を達成することができました。セキュリティ的にはまだまだ改良できるところがあるかもしれませんが、ひとまずシンプルなアップロードシステムができました。 仕組み Ajaxを使ってリロードなしでファイルを送る。…

【Processing】CatenoidMinimalSurfaceを作る

成果物 www.youtube.com Gyroidを作ろうとした過程でMinimalSurfaceという言葉を見つけたので早速コードを描いてみることにしました。これは、二つのリングにシャボン玉の膜を張った時と同じ曲面で、平均曲率が0になっているそうです。 仕組み 座標はこちら…

【Processing】Easingを使って波を作ってみる。

成果物 www.youtube.com Easingは滑らかに移動するアニメーションを付ける際に使うのですが、このように横に並べると波を作ることができます。EasingはWebのアニメーションでよく使いますが、Generative Artでも使えそうな気がします。 仕組み Easingはベジ…

【PHP】Ajaxを使ったリアルタイムコメント欄システムを作った

成果物 今回は、Ajaxを使ってページをリロードせずにコメント欄を更新するシステムを作りました。以前このサイトで配布されているコメント欄を設置するコードを見てみたのですが、よくわからなかったので改めて作ってみました。 仕組み こちらの本を参考に作…

【折り紙】ローズ、Tesseraction、ダイアモンドパターンを作ってみた。

成果物 福山ローズは以前から折っていたのですが、それ以外の難しい折り方はやっていなかったのでまとめてやってみました、中でもTesseraction(平織)が特に難しかったです。 コツ 折り目をきっちりとつけることが重要です。難しい部分はボールペンなどでな…

【Processing】外と中が分からない不思議なツボKlein Bottleを作ってみた。

成果物 www.youtube.com 入口と出口が引っ付いたような不思議な形です。これが数式で表せるのがすごいです。 仕組み こちらの式を使って表示することができます。 こちらのサイトを参考にしました。 Toroidal Nature コード 開始地点の処理で苦戦しました。

【Processing】トゲトゲのリングSupertoroidを作る。

成果物 www.youtube.com 前回のSupershapesに続き、Supertoroidを作ってみました。とがり具合を二つのパラメータでコントロールできます。 仕組み トーラス(リング)の式はこのようになっています。 これをべき乗すればSupertoroidになるのですが、そのまま…

【Processing】自分で実装したFFTでリアルタイム音声波形表示

成果物 www.youtube.com 白がライブラリのFFT、虹色が今回のFFTです。周波数が周りに散らばってしまっていますが、ピーク周波数はぴったり合っています。見た目でいえば今回のFFTの方が好きです。左右対称になるのは仕様なのかな?ちょっとわからないことが…

【Processing】滑らかな曲面、B-Spline Surfaceを作る

成果物 www.youtube.com B-Spline曲線を拡張してB-Spline Surfaceを作ってみました。でこぼこの面を綺麗に補完することができました。 仕組み こちらがB-Splineの式 B-Spline Surfaceの式です 非常に似た式になっています。b()はB-Spline基底関数で、グラフ…

【Processing】B-Spline曲線の基底関数がきれいだったので、視覚化してみた。

成果物 www.youtube.com 無駄な点を打たなくていい洗練された基底関数を見つけたので視覚化してみました。前回の元の比べて端がピッタリ1になっています。 コード ループはできないことはないですが、厄介なので別の基底関数を使うのがいいかもしれません。 …

【Processing】花火を作る

成果物 www.youtube.com ディズニーの映画の花火がきれいだったのでProcessingで作ってみました。軌跡が綺麗に表示できました。 仕組み 軌跡を表示するために、100個の過去の位置のデータを保存し、つなぎ合わせています。薄くなって消滅するところは数値を…

【Processing】光の屈折、反射。

成果物 www.youtube.com Path Tracingに実装したかったのですが、うまくいきませんでした。ひとまず、ここでまとめておこうと思います。 コード 仕組み 光の屈折反射はこのような式で表します。ただ、今回は、ベクトルなのでこのように表すことができます。l…

【Processing】パーリンノイズの勾配を視覚化する。

成果物 www.youtube.com やっていそうでやっていなかったのでやってみました。予想以上に滑らかな曲線ができました。終点が一か所に集中してしまうのが難点ですが、色々使えそうです。 コード 仕組み x,y成分で偏微分をして勾配を求めています。微小区間での…

【Unity×HLSL】マンデルブロ集合をGPUで高速計算

成果物 www.youtube.com Processingで実装したときと比べて約1000倍ほど早くなっていると思います。 コード 座標系の変換が長いですが、メインの部分は100行ほどです。 github.com 仕組み 過去に紹介しています。 nekodigi.hatenablog.com 今回は、HSVからRG…

【Processing】特殊装置なしで立体映像を映す。(Head Tracking)

成果物 www.youtube.com 今回は、カメラで顔認識をする事によって視点を求めるHead Trackingを使って立体映像を映してみました。画面自体は2Dなのですが、動いて見えることでかなり立体に見えるようになります。 コード OpenCVのライブラリを利用しています…

【Processing】完璧にループしているパーリンノイズ

成果物 www.youtube.com 今までは、パーリンノイズのループを強引につないでいたのですが、綺麗につなぐ方法を見つけたので実践してみました。 仕組み パーリンノイズ場から直線的に値を取るとループしませんが、円形に値をとっていくことで始めと終わりが完…

【Processing】カスタマイズ可能なホーミング弾を作った

成果物 www.youtube.com マウスを追跡するホーミング弾を作ってみました。最大速度と、小回りの数値を変えると、動き方が変わります。 仕組み ターゲット座標から現在の座標を引いて、ベクトルの大きさを最大速度にすることで理想の速度(ベクトル)を求めま…

【Processing】Parlinノイズとsin関数を組み合わせたノイズを作ってみた。

成果物 www.youtube.com Parlinノイズを正弦波の初期位相(スタート地点)に設定してループさせてみたら面白いのではないかと思って作ってみました。その場の値を角度としてパーティクルを動かしていったものがこちらになります。パーリンノイズにはない柔ら…

【Blender】Gyroidを作る。

成果物 www.youtube.com 本当はProcessingで作りたかったのですが、とりあえずチュートリアルを見ながら作ってみました。やっぱり曲面が綺麗です。 仕組み Gyroidを作る方法としては、この式が成り立つ地点を求める方法と、輪郭を作ってMinimal Surfaceを使…

【Processing】Laplace方程式で3D空間に伸びた布を張る。

成果物 www.youtube.com Minimal Surfaceのように見えるのですが、確証がないので伸びた布という表現になっています。Laplace方程式は熱方程式などにも使われているとうり、拡散させ、滑らかにする働きがあるので、x,y,z成分それぞれでLaplace方程式を解くこ…

【Processing】N次Bスプライン曲線を表示する。

成果物 www.youtube.com 端の処理で結構時間がかかってしまいましたが、無事に完成しました。もう少し改良できる点もありますが、ひとまず実用に耐えるレベルのものができました。次数の変更だけでなく、先端を繋ぐか開くかの変更もできます。 コード Interp…

【Processing】N次ベジェ曲線を表示する。

成果物 www.youtube.com 三次以上のベジェ曲線を見たことがなかったのでできないと思い込んでいたのですが、Wikipediaを見ると、式が書かれていたので、早速作ってみました。今後はBスプライン、NURBS曲線も作ってみたいと思います。(Gyroidも作りたいなぁ…

【Processing】三次元の群れのシュミレーション

成果物 www.youtube.com きちんと群れを成して飛んでくれました。ただ、高度なことをする場合はUnityの方がいいと思います。余談ですが、2Dよりも3Dの方が早いです。謎… コード 2Dも3Dもあります。現在は2Dのみ障害物を実装していますが、理論上は3Dでも可能…

【Processing】Flockingアルゴリズムで、群れのシュミレーション

成果物 www.youtube.com 今回は、傾きを色で表示することで、どこの群れに所属しているかわかりやすくしてみました。 コード 今回は、2Dですが、3D版も作成したのでチェックしてみてください。 github.com 仕組み 次の3種類の処理を毎フレーム行うことで群れ…

【Processing】Ray Marchingで3Dマンデルブロ集合を表示する。

成果物 距離、反復回数、光の反射をもとに色を決めています。 精度は分かりませんが、輪郭はあっているような気がします。ただ、Unityで作られたデモと比べると、精度も速度も劣っている気がします。GPU演算ができないのが原因だと思います。※あくまで参考程…

【Processing】関数の曲率を計算する。

成果物 www.youtube.com 今回は、前回の連立方程式の曲率(曲がり方のきつさ)を求めるプログラムを作りました。曲率が高い部分は赤くなっています。 解説 関数の曲率は、以下の式で計算ができます。 コード 今回は、一次導関数のみ自動微分で解いています。…

【Processing】Ray Marchingを実装する!

成果物 www.youtube.com 今回は、Ray Tracing法の一種である、Ray Marchingのプログラムを作成しました。前回のPath Tracingでは、Rayと面との交差を求めていましたが、このプログラムでは、面との距離を求め、その分だけRayを進め、ぶつかるまで(距離が極…

【Processing】Distance Estimatorを可視化する。

成果物 www.youtube.com Ray Tracing方の一種である、Ray Marchingをやろうと思っていて、Distance Estimatorが重要な役割を果たしているので、視覚化してみました。 仕組み 一番近い障害物までの距離を求め、その分だけRayを進行方向に動かすということを繰…

【Processing】水の浸食をシュミレーションし、フォトリアルな雪山を作る。

成果物 www.youtube.com 予想以上の美しさにちょっと驚きました。今回は、CodingAdventureで紹介されていたHydraulic ErosionをProcessingで実装していました。いくつかぶつかったポイントをまとめておこうと思います。 成果物 コード 仕組み コード 200行ち…

【Processing】ParlinNoiseとCellular Automataで洞窟を作る。

成果物 www.youtube.com 今回は、UnityでCellular Automataを使ってノイズから洞窟を作っているサイトがあったので、早速やってみました。参考にしたサイトではランダムノイズが使われていましたが、ParlinNoiseを組み合わせた結局よりリアルになりました。P…