2本の直線セグメントを2次Bezierで繋いでみる ~ ただしJSON手書き
2本の直線セグメントを2次Bezierで繋いでみます。
制御点は2つの直線セグメントがそれぞれのる2つの直線の交点としています。
2本の直線セグメントを1セット(セグメント対)として、任意個数のセグメント対を配列として、JSONで手書きできます。
とりあえず JSON - 例 [1], [2] あたりを [描画] していただいて、数値を変えてみてください。
(元気なら、もっと直感的に操作できるものを canvas の練習で作りたいので、これについての説明はエコで。ごめんなさい。)
<経緯>
↓ 路線図メーカーっていうのがあります。
↓ (便利そうかもと思いつつ、私はまだ使ったことがないのですが。ごめんなさい。)
これの開発関連で、
・2本の直線セグメント (離れた位置で直角) を滑らかに繋ぐ
・平行して複数本あっても繋いでいる間もぶつからない、変に間が開かない
・直線セグメントと曲線は滑らかに行き来
... みたいなお題が出てて、楕円弧で繋ぐんだそうだ。
なんとなく、狭い私だと、Bezierで良いんじゃないかと思えた。
やってみないことにはイメージもつかなかったので、やってみた。
... というわけです。
少なくとも JavaScript の canvas は 任意次数のBezier を各関数が用意されてるっぽいので、このサンプルでは簡単でした。
他の言語でも Bezier はあるんじゃないかなぁ。
そもそもどうなんでしょうね、Bezier じゃまずいケースがあるんでしょうか?
[参考文献]
【JavaScript】canvas にベジェ曲線を描画する
JavaScript テキストエリアの値を取得/設定するサンプル | ITSakura
【JavaScript】配列←→JSON文字列に変換する方法 – 株式会社シーポイントラボ | 浜松のシステム開発会社
HTML5 Canvas の描画領域全体をクリアする | まくまくJavaScriptノート
真ん中に文字入れただけの画像を作ってみた
音をアップロードしようとすると、画像ファイルが必要になることがあります。
とりあえず作品名の文字が入っただけのものだけでも、手軽に欲しいものです。
地味に面倒です。ということで、作りました。
psd で使っていた Century っていうフォントにしようと思ったのですが、
canvas だと 何故か Gothic になってしまったので、serif にしてます。
よくわかりません。
<参考文献>
[69-8] Canvasでテキストを描画しよう
https://www.w3schools.com/tags/tryit.asp?filename=tryhtml5_canvas_font
画像ファイルをありがちなサイズで表示させるのを作ってみた
ギターで押さえているフレットのMIDIファイルを出力
MIDIファイルをいじるWebコンテンツ on はてなブログ 〜 の検討
今回は、ギターで押さえているフレットのMIDIファイルを出力します。
MIDIファイル生成は、 jazz-softさん作の JZZ.js を使っています。
左側の音名がそのチューニング。右側の数字がフレット番号。[Pick]がOff(白背景)の時は弾かないものとし、MIDIに出力しません。
チューニングに"半音下げ"と"ドロップD+半音下げ"なるものがあるのは、私のギターがそれだからです。楽です、半音下げとドロップD。
入力しやすさを考えるに、ダイアグラムで入力したいところ。今回は、主たるMIDIファイルの出力をまず作りました。cssでこだわる部分は後回し。ここまで作ってみると、やっぱりダイアグラムが欲しい。
試しで音を鳴らしたいところ。
<参考文献>
labelにforを使わずに、cssだけでトグルボタンを作る
【HTML】出来るだけ押しやすいチェックボックスを作る|リスティング広告の運用代行ならカルテットコミュニケーションズ
VRM を読み込んで ~ zangyouをチョップさせてみた
VRM - VR向け3Dアバターフォーマット - を読み込んでみます。
VRMのページ : https://vrm.dev/
今回は zangyou をチョップです。
フォントは helvetiker 。Helvetica じゃないの?と思いつつ、threejs搭載のTextGeometryを使ってみました。
音量部分はいつぞやのWebAudioAPIのサンプルからコピペ、無駄にミキシング & 1 ~ 4 kHz に反応です。反応するのはFile0の方だけ。File1は伴奏用ということで。しかし、今回については反応するFile0の方にドラムを入れたほうが楽しそう。
File0
File1
mixing source0 :
mixing source1 :
Analyser
SmoothingTimeConstant : | |
MinDecibels : | |
MaxDecibels : |
mixed | ||
audio0 | ||
audio1 |
動作チェックはhttps://vroid.com/ (Mac版) 0.7.2 で自作したモデル。Mac の Chrome でだけ。
"Three.js での回転" かつ "VRM での関節の回転"はそれぞれ手探り。
相変わらず肘が痛そうな方向に曲がっていそうです。
今回は、zangyouをチョップすべく、腰 ("J_Bip_C_Spine") を軽く曲げさせています。
漢字とか変形とかやってみたい。やれるのかな?
VRM読み込みあたりは、kiruroboさん のサンプルを参考にしています。
モデル使用に関する免責事項のお手本は、https://facevtuber.com/ さん。
[参考文献]
https://threejs.org/docs/#api/en/geometries/TextGeometry
pixiv three-vrm のサンプルをコピペしてみた
VRM - VR向け3Dアバターフォーマット - を読み込みます。
VRMのページ : https://vrm.dev/
今回は『pixiv three-vrm』です。blendshapesのサンプルをコピペしてみました。
Webアプリケーションで3Dアバターモデルを簡単に扱える『pixiv three-vrm』をOSSとして公開しました!3Dモデルの専門知識がない開発者の方でも「VRM」ファイルをより簡単に扱うことができます! #VRoid
— VRoid公式 (@vroid_pixiv) September 12, 2019
詳細: https://t.co/psBwTYe3cy
GitHubリポジトリ: https://t.co/j9IU2h2Zax pic.twitter.com/Fsp2VLbpkW
動作チェックはhttps://vroid.com/ (Mac版) 0.7.2 で自作したモデル。Mac の Chrome でだけ。
表情が変わって、スカートが揺れてます。簡単!
これまでやってきたVRMはthree.js自体に組み込まれているらしいものでした。参考のしてきたのはkiruroboさん のサンプル。
blendshapesをいじるのに挑戦していましたが、全然動かせられていませんでした。
pixiv three-vrmはその辺りが揃っていた、サンプルも色々あって、実にありがたいです。
モデル使用に関する免責事項のお手本は、 https://facevtuber.com/ さん。
[参考文献]
https://github.com/pixiv/three-vrm
VRM を読み込んで ~ 音量に合わせてチョップさせてみた
VRM - VR向け3Dアバターフォーマット - を読み込んでみます。
VRMのページ : https://vrm.dev/
今回は 音量に合わせてチョップです。
音量部分はいつぞやのWebAudioAPIのサンプルからコピペ、無駄にミキシング & 1 kHz に反応です。もっとミニマムなサンプルも用意すべきでした、とても無駄に大きい。反応するのはFile0の方だけ。File1は伴奏用ということで。
File0
File1
mixing source0 :
mixing source1 :
Analyser
SmoothingTimeConstant : | |
MinDecibels : | |
MaxDecibels : |
mixed | ||
audio0 | ||
audio1 |
動作チェックはhttps://vroid.com/ (Mac版) 0.7.2 で自作したモデル。Mac の Chrome でだけ。
"Three.js での回転" かつ "VRM での関節の回転"がそれぞれ手探り。
肘が痛そうな方向に曲がっていそうです。その辺のコツを早く掴みたいなぁ...。
動きにアサインする音量に関しても、周波数帯の絞り方、レンジとか、やはり深掘りするべきだなと。音量じゃなくアタック検出にするべきとか、いろいろ。
VRM読み込みあたりは、kiruroboさん のサンプルを参考にしています。
モデル使用に関する免責事項のお手本は、
https://facevtuber.com/ さん。
[参考文献]