2025振り返り
2025年お疲れ様でした
2025年は、なにもやってないは嘘ですが、特に自主制作の進展がないのでなにもないような感じがしたりしています。
実際には
の制作(というよりはVJ)をやってました。
それでいて、淡々と現在進行中の自主製作は
- Midiコントローラーの制作
- Raspberry piで動くVJハード
- ゲーム?(in VRChat)
などが…どれも中途半端に存在してます。
どれももうちょっといろいろ進めたかったけど(まとまった時間あれば進むのかな…?)、本業が某巨大イベント関連で少し忙しかったり、上記の制作をしたりと、ほかにもいろいろ(遊んだり)と、手が動く時間が足りなくなっちゃ感じです。
なんとなく2026年は、一旦ものごとの整理をしたほうがいいかなと考えてます。
やることとやりたいことはあんまり変わらないと思いますけどね。
では2026年もよろしくお願いいたします。
UnityでやってるVJの構成について
ちょうど長時間移動があって書く気力が湧いたのとジェネ系VJアドカレがあったので、自分がUnityでVJする時の構成を簡単に紹介しようと思いました。
今回はこちらのイベントのときの構成になります。
draw(); #3 のダイジェスト映像を公開しました。
— draw(); (@function_draw) 2023年8月13日
ご来場&ご視聴ありがとうございました!https://t.co/oUffjW51iu#function_draw pic.twitter.com/XqrAKJGiM8
Midi入出力
Midi入力はKeijiro Takahashi が公開しているRtMidi for Unityを使っています。
これを元にMidiInputとMidiOutputコンポーネントを作り、それぞれ
MidiInputはIMidiInputを持つコンポーネントに入力されたMidiの値を渡していて、
またMidiOutputは、UnityからVRChatにloopMidiを通してMidiを渡したい時と、LaunchPad miniのPadの色を変えるために使ってます(どちらもDrawのときは使ってない)
VFX Graphに関してはPropertyBinderでCCの値、EventBinderでNoteのOnOffをTriggerとして渡せるようにして使っています。

レンダリング
最新ではURP14を使いました。VFX Graph、ShaderGraphが使えるのと、今のところHDRPを使うほどの絵を作ってないことが主な理由です。いい感じにHDRPを使ってやるの考えたいですね。
PostEffect群はURPはRendererFeatureを使わないといけないので、それぞれのRenderPassを書いて実装しています。(URP12と14で書き方が変わって大変だった)
この前のDrawでは
EdegeDetection
FeedBack
SlitScanぽいもの
を作りました。前のだと他にも作ったりしていますが移行の関係と、Feedbackするときのバグの解決に時間を取られて(Bufferの色味が変わってしまって結局、白黒にして誤魔化してます)この3つだけです。
また配信のため、KlakSpoutを使ってOBSに送ってます。CustomRenderPassFeatureでUI描画前の絵をKlakSpoutで送るRenderTextureにコピーしています。

素材
主に素材はVFX Graphを基本に、 ShaderGraphで見た目を、動きの制御周りはGraphicsBufferを経由してComputeShaderとスクリプトでやったりしています。Unityだとこの3つが簡単に連携できるのでとても重宝しています。
ちなみにDrawのときの素材作るときに参照したネタはこのあたりです。
【HP更新】Moment in Composition
— SeiichiSega (@SeiichiSega) 2020年10月22日
世界で活躍されているサウンドアーティストKyokaさんと、「デザインあ」にてお馴染みの波戸場 承龍・耀次さんとのコラボレーション作品。 #MotionDesign #Houdini https://t.co/ahFUteHTZa pic.twitter.com/aNkY4zwhuh
ついでに今回のプロジェクトを公開します。整理あまりしてないので見づらいですが…
おわりに
この構成自体は3年前のGC5.0用に作ったLaunchPadからをVRChatにMidiを送るソフトから始まって、一昨年のSanrio Virtual Fes 2021、去年Channel、今年のdrawで少しずつ改良していったものです。おかげではじめから素材づくりに集中できていい感じでした。
他に、もうちょっといろいろやりたいなと思いつつネタもあるけどなかなか掘り下げられてないなという感じです。
VRChat振り返り-3年目-
VRChatを始めて3年が過ぎてしまいました。3年目はいささか迷走した1年だったと思います。2年目で一つ区切りがついていたので、その次の年は探る、停滞した年になるとか思った気もするのでそんなに間違った見立てではなかったと思っています。それでもしんどいことはしんどいし楽しいことは楽しかったのでまぁそれもそれで良しとします。
Shader1WeekCompo
去年の今頃の話からすると3月はブタジエンさんと避雷さんが発起人になったShader1WeekCompoからでしょうか。 1週間でShaderを用いていれば何を作ってもいいというゆるい企画です(どうかな?)。一応、初回から今回は無理そうと言いながらも全部に出させてもらってます。 ちょうどよくVRChat以外のことをやるいい機会で気分転換になるので良いんですよね。毎回1Weekというよりも1Dayだったりするのでなかなか1週間かけて良いものを作るということができてないと思うのがちょっと気に掛かる部分だったりします。もともとはWebGL、最近はもっぱらとGLSLSoundを触る機会になってますが、そろそろ新しいことにも挑戦したい気もあります。これも始まってから1年経ってしまいましたしね。
初回に関してはブタジエンさんの身内、つまり大半がVRChatでShaderを書ける人だったということもあって、終了後の交流会をVRChatでやりましたが、その時、ワールドを作って欲しいと頼まれたので作りました。展示会兼交流会のためのワールドだったので始めてそういう導線を考えて作ったです。加えてこれの前にCineShaderを見てそういう感じの作りたいよねというところにこれを作る話がきて、さらにRealtimeGIも動くことがわかって色々タイミングよく組み込めたりと個人的にはいろいろ実験できたワールドでした。
今日は #shader1weekcompo の交流会を行いました! 参加してくださった皆さんありがとうございます!
— ブタジエン (@butadiene121) 2020年3月22日
(素敵な展示兼交流会ワールドは@fotflaさんが作ってくれました・・・!) pic.twitter.com/AxyUHk8qm6
Audio Interactive and Udon
4月以降から、Udonがある程度動くようになってさらにUdonSharpとかいう強力な道具が現れたのでまずはということで音周りをいじってました。いつもの如くシーケンサーを作ったりして遊んだりしてました。
AudioSpectrumがテクスチャ?になりました。(結局ShaderとCameraを使用) pic.twitter.com/g8fujQYL0e
— fotfla (@fotfla) 2020年4月5日
Origina VJ : 皿洗い( .@wrx_overrun ) and Music : BEYOND / たつべゐ ( .@tatsubei_VRC ) (https://t.co/bKo7WXlqiC) #MadeWithUdon pic.twitter.com/ae7MDfEclU
— fotfla (@fotfla) 2020年4月6日
やっぱり音に合わせて動いてくれるのはいいし、音に合わせて動かしたいし、そういうのがもっと増えればいいなと思っていたりします。
あとUdonではないけど、これとは別にあとあとでMidiとOrcaを使ってやったりとこのあたりは続いていくんでしょうね。
#ORCA #ableton #vrchat #Shader #unity3d pic.twitter.com/94NNJN2tEk
— fotfla (@fotfla) 2020年8月14日
GameJam
そういえばこんなこともやってました。たにったさんに誘われてLudum DareというGameJamに参加してました。私はプログラムをちまちま書くことをやりました。結果的にゲームを作ったかというといろいろありましたが… 短期間でみんなでわいわい作るの楽しいのでまた機会があればという感じですがその時はその時ですね。
Ludum Dareというゲームジャムでゴツめのチーム(@free458679 @CaptainAyakashi @roxasAC @fotfla @butadiene121 @gst_kkgr @The_RindaRinda)を組んで,72時間でゲームを一本作るなどしました.遊んでみてね.限界なので僕は寝ます☺️ #LDJAM #gamedev #unity #madewithunity https://t.co/tQiiD1NqNX pic.twitter.com/Qigc72beS0
— 𝙩𝙖𝙣𝙞𝙩𝙩𝙖/𝙩𝙧𝙞𝙩 (@trit_techne) 2020年4月21日
Angel's Stairway
このワールドはもともとVolumetricRenderingをやっていて、最終的に終わらすために作ったワールドでしたね。 この作ったVolumetricShader自体はなにかと以前のクとか地下で使ってもらったりしてその節ではありがたい限りでしたが、もともとは自分で作ってなにかワールドにできたらいいなと思って2019年夏頃に作ったと思います。この時たまたまSecretSkyで前にテストで使ったVolumeTheaterを思い出したり、VolumetricRenderingがちょっと話題になったのもあって再度触れつつワールド案もあったのでこれでVolumetricRenderingは一旦終わりにするという感じで作ってました。とはいいつつここは色付きライトにCookieを使って落ちる光の色をつけたり、足音をつけたり、これだけじゃなかったりするんですけどね。
"音" pic.twitter.com/4NCq1tgKOk
— fotfla (@fotfla) 2020年5月24日
⚡️「Volumetric Rendering」(@fotflaさんによる: https://t.co/1axOLaogHb)
— fotfla (@fotfla) 2020年5月27日
ちょっと追加した
A Miniascape
Title : A Miniascape
— fotfla (@fotfla) 2020年7月19日
1から∞の風景を#VRAA02参加作品 pic.twitter.com/fZX67aDmWF
6月頃はずっとVRAA2に向けてワールドをつくってました。このワールドのコンセプト自体は無限にある空間を移動したいぐらいで作ったと思います。ちょうどUdonを使ったワールドとしてちゃんと作るにはいい機会だったと思ったのもあって作りました。Udonを使ってMeshをいじれるようになったのでそれを使って地形の自動生成をしたいと思ったのもありました。 初期構想自体は無限に広い空間を作ってそこを自由に移動、また別の移動手段として別の空間に移動して、そこで好きな座標を選択して移動ぐらいを考えてました。
初期構想から大きく変わったのはMeshというよりメッシュを自動生成するには重たかったからが大きいです100x100頂点では生成する瞬間に負荷が掛かって一瞬止まったりしました。この時GetPixelを使えればShaderでHightMapを生成しておいてその地点を読み取ってColliderを生成するができただろうけどできなかったのでできる形にしようとしたらこうなりました。(実際作り終わったあとにSetPixel,GetPixelがUdonに実装されてすぐに無限地形生成が作られたので結構しんどみがあった) Mesh生成自体は単純にFBMノイズを作ってShader側でも同じものが生成されるようなFBMノイズを作ってうまく合わせてやってました。 また草や花の生成はGeometryShaderですべて生成してShaderで生成したHeightMapから生やすところを決定してました。このあたりのGeometryShaderで草花を生やす仕様かとまた、VRchatではTerrainで作られる草花が多く、リアル調でVRで見るには少し気になっていたのでこの時はStylizedな見た目で行こうと決めてましたね。
この制作にあたって悩んだことは結局同期周りで特に地形生成をどう同期するかが一番考えてた気がします。シード値がどのタイミングで同期するかわからなかったので極力地形生成するのを遅らせるためにボタンで魔法陣に演出を入れて飛び込む瞬間に生成をするようにしてました。そんなに気にする必要もなかったのかもしれませんが、VRChatにいる人達はどう動くかはわからないので最悪を考えるとこんな感じになったりします。
まぁこれ、一人で全部やっちゃて使える時間の少なさも相まって、やってるときだいぶしんどみがあったんですが、ありがたいことにそのVRAA2で賞を頂くことになって少しはほとしたり、ここで草とかを作ったことで三日坊主さんに呼ばれて坊止2に草を提供したりと、色々と面白いことに繋がってる(?)ので最終的にプラスになったという感じで居れてます。
「A Miniascape」おかげさまで届木賞いただきました!まさかでびっくりしてますが、ありがとうございました!#VRAA02 pic.twitter.com/z7AMPcSZpT
— fotfla (@fotfla) 2020年8月29日
void
習作集とかSketchとかそんな感覚で作ってます、こんな感じのを作りたいなと思ったものを気楽に作ってます。今の所tiwaさんポータルワールドからしか行けないようになっています。自分のポータルワールドの案がないわけではないのですが… それぞれなにをしようとして作ったかの解説をちょっとだけ
void
これはよくありそうな縦空間に球を置いたて縦構造を作りたかったのと、音を空間に配置したのをやりたかったのでえいってやったやつ。ちなみに音のなるタイミングはこれの前に作ったユークリッドシーケンサで、音の方はこれを使っておきたかったのもありました。ちょっとした解説は下な感じです。
— fotfla (@fotfla) 2020年11月19日
void2
tiwaさん主催の1hWCでテーマが「植物」で制作。これの前に買ったRealIvyを使いたくて制作したもの。空間としては無機(コンクリート)と有機(蔦、草)あたりを混ぜたかったのとFogの表現としてパーティクルが使えるかもしれないので天窓を開けてそういう表現として使えるかしてみたもの。
#1hWC に参加しました。空間のモデリングとRealIvyでのツタの配置だけで終わっちゃったけど楽しかった。あとで考えてなかった解釈が色んな人から出てくるのも面白かった。ありがとうございました。 pic.twitter.com/fMxZTf36ry
— fotfla (@fotfla) 2020年11月28日
void3
同じくtiwaさん主催の6hWCでテーマが「ピクニック」で制作。このころワールド制作欲があったのと、草を使ってなにかしたかったのでピクニックをうまく解釈して作ったもの。ピクニック->風景を楽しむ->その風景を切り取って窓から覗く、といった具合で解釈した気がします。さすがに6時間あるとこれくらいだとなんとか音までつけれることがわかったのもよかった。とはいってもすでに組んであったものをその場で手を加えたので準備が必要なのは仕方ないね。
#6hWC で作りました。テーマがピクニックということで草原の上から外の風景を眺めるワールドを作りました。 pic.twitter.com/Dp4lohEc5q
— fotfla (@fotfla) 2021年2月27日
これは今後もこんな感じで作って行くかもしれいないですね。
電ド
クリスマスプレゼントとな年末にやることができた電ド、この時点で多分1年ちょっとぶりくらいだったやつ。この時はMidiをOrcaでコントロールしてやったりしましたね。 fotfla.hatenablog.com
UdonにMidiか来そうで(来たけど)この記事は不要になりそうなので(?)Twitterで公開してませんが… この時、確か雑にやろうとう言う感じで作り始めたと思います。今までと違って広い空間ではなく狭い空間でなにをどうすると良くなるかよく考えてました。最終的に壁は照明をベースに、視界ジャック系のエフェクトはあくまで視界を歪めてなにかをするためではなく空間を操作するというが方向で作ってました。全体的に視界を遮らずに、空間を維持しつつかつBPMSyncをするように作っていた気がします。 VRの演出ってなんなんでしょうね。正直未だによくわかりませんが… まぁ個人的な好みとしては元の空間と上手く混ざってるのが好きなんですよね。VRに来る前に興味のあったことがプロジェクションマッピングとかARとかそっち方向だったので、基本的にはそういう方向が好きなんでしょうね。レイマーチング的な絵がそこまでやろうと思わないのもそういうことなのかなと、ベースに対して多少の異常な変化が加わったりとか。 まぁこのままこういう感じのことをやり続けられればまぁいいかなとか思っています。
アバターとか
2019年の夏から基本的に幽狐ちゃんでいたら気づいたらこんな感じになってましたね。長いのもあるけど一番安定してますね。
— fotfla (@fotfla) 2021年3月24日
幽狐ちゃんに関しては6月頃にレインコートを
— fotfla (@fotfla) 2020年6月3日
気づいたら、Amebientの方でCute担当になったり
11月末にケープを作ったりしてました。
— fotfla (@fotfla) 2020年11月28日
こちらは今は「ル」で親しまれてますが(?)、司書さんのル・ジャルダンスクレに合わせて冬が来る前にということで作りましたね。
— fotfla (@fotfla) 2020年10月5日
— fotfla (@fotfla) 2020年10月8日
やっぱりいいですよね、ロリータ服。フリルついた服昔から好きなんですが、基底現実ではあれであれなのでこういうのが気兼ねなく着れるのがとてもいいですよね。ずっと着たくて何度か作ろうとしましたけど、納得行くものが作れなかったので、そういう点もいいところですね。そういうところでメイド服も好きなんでシンプルなものだとそれなりに作れるんですが、ここまでのものを作るには足りなすぎるのでほんとにありがたい限りです。
一方で2020前半は京狐さんで後半はメリノちゃんがメインで使ってますが、もともとこっちの方は幽狐ちゃんとは違う方向の改変をしたいなと思って使い始めてました。
どうやら最近メイドさんを雇ったらしい pic.twitter.com/m4Wd1isqt0
— fotfla (@fotfla) 2020年3月2日
京狐さんの方はメイド服作ったりなぜかバニー作ったりしてましたね。ご所望のお品です…(前に作ったやつですが…) pic.twitter.com/WIqp3nQ4UH
— fotfla (@fotfla) 2020年8月2日
メリノちゃんのほうは今のところ特に作る予定はないですが、作りたいものと時間の余裕があればって感じですね。
終わりに
さてVRChat4年目はどうなるんでしょうかね…気に色々あれですが…。周りの多くの人の環境もガラリと変わるみたいで、界隈自体の変化も結構ありそうですしね。 私自身はこのままVisualと音を粛々とやっていけたらと思ってるんですが、今の所、音はできてないし、状況的に上半期は忙しそうなので緩やかな目標にしておきたいですね。忙しくても穏やかなこの生活が続けばいいと思っています。 自分が面白いと思えるものを作っていければいいなと思います。
VRChatでMidiを使ってVRVJをした話(忘備録)
需要がどこにあるかわからないけど書きたくなったのでこの前のド(VRVJ)について多少解説しようと思います(すでに1か月経っている)。 今回はShaderの話というよりも入力システム、コントローラー周りの話です。結局は入力されたTextureデータをどう処理するかの話だからとりあえずいいかなと思ってしてません。 入力の形態はVRChat内Shader製スライダーから今回のようなMidi入力に変わったけど結局出力側をどう作るかはあまり変わってないのもあります。
雰囲気としては
こんな感じです。#GHOSTCLUB
— 𝟶𝚋𝟺𝚔𝟹 (@3k4b0) 2021年1月15日
2021/01/15
OPEN 22:30(JST)
23:00 0b4k3 x fotfla ド pic.twitter.com/bNvc0QmWZe
Midi設定
すべてのエフェクトの操作はMidi信号をSDK2のVRC_MidiNoteInを通して行っています。 すべてのMidiを一つのGameObjectでやるとインスペクターは
こうなります…。展開するとだいぶ重いです。 一つ一つ設定するのはとてもしんどいのでスクリプトですべて書いてます。これを見てどう思うかで… pic.twitter.com/eybTnx9kHS
— fotfla (@fotfla) 2021年1月5日
あまり見せるようにはできてないのですが
void SetMidi() { var triggers = transform.GetComponent<VRC_Trigger>().Triggers; var notes = gameObject.GetComponents<VRC_MidiNoteIn>(); for (var i = 0; i < count; i++) { var noteNum = i + VRC_MidiNoteIn.Note.A0; if (Obj != null) { var instance = Instantiate(Obj); instance.name = System.Enum.GetName(typeof(VRC_MidiNoteIn.Note), noteNum); instance.transform.parent = transform; AddTirgger(triggers, instance, notes[i], noteNum); } } } void AddTirgger(List<VRC_Trigger.TriggerEvent> triggerEvent, GameObject obj, VRC_MidiNoteIn note, VRC_MidiNoteIn.Note noteNumber) { // NoteON var triggerOn = new VRC_Trigger.TriggerEvent(); triggerOn.Name = "NoteOn" + noteNumber; triggerOn.BroadcastType = VRC.SDKBase.VRC_EventHandler.VrcBroadcastType.AlwaysUnbuffered; triggerOn.TriggerType = VRC.SDKBase.VRC_Trigger.TriggerType.Custom; var vrcEventOn = new VRC.SDKBase.VRC_EventHandler.VrcEvent(); vrcEventOn.EventType = VRC_EventHandler.VrcEventType.SetGameObjectActive; vrcEventOn.ParameterObject = obj; vrcEventOn.ParameterBoolOp = VRC.SDKBase.VRC_EventHandler.VrcBooleanOp.True; triggerOn.Events.Add(vrcEventOn); triggerEvent.Add(triggerOn); // NoteOff var triggerOff = new VRC_Trigger.TriggerEvent(); triggerOff.Name = "NoteOff" + noteNumber; triggerOff.BroadcastType = VRC.SDKBase.VRC_EventHandler.VrcBroadcastType.AlwaysUnbuffered; triggerOff.TriggerType = VRC.SDKBase.VRC_Trigger.TriggerType.Custom; var vrcEventOff = new VRC.SDKBase.VRC_EventHandler.VrcEvent(); vrcEventOff.EventType = VRC_EventHandler.VrcEventType.SetGameObjectActive; vrcEventOff.ParameterObject = obj; vrcEventOff.ParameterBoolOp = VRC.SDKBase.VRC_EventHandler.VrcBooleanOp.False; triggerOff.Events.Add(vrcEventOff); triggerEvent.Add(triggerOff); AddMidiNoteIn(note, noteNumber, triggerOn, triggerOff); } void AddMidiNoteIn(VRC_MidiNoteIn note, VRC_MidiNoteIn.Note noteNumber, VRC_Trigger.TriggerEvent onTriggerEvent, VRC_Trigger.TriggerEvent offTriggerEvent) { note.note = noteNumber; note.OnNoteOn.TriggerObject = gameObject; note.OnNoteOn.CustomName = onTriggerEvent.Name; note.OnNoteOff.TriggerObject = gameObject; note.OnNoteOff.CustomName = offTriggerEvent.Name; }
とMidiの設定とMidiのオンオフで切り替えるGameObjectの設定を一括で生成しています。生成したGameObjectは

MidiObject以下に生成されるようにしています。また別のスクリプトで 次のように16x16に収まるように配置してカメラで撮ってRenderTextureに描画してこれをCustomRenderTexutureに渡しています。

演出処理の話
Midi情報の処理、Particleの情報の更新などはすべて一枚のCustomRenderTexutureで行っていて、 先程ののMidiのオンオフ情報もここで処理をして、減衰、乱数の生成、入力回数などを処理してます。
// Midi if(index.x >= 64 && index.y >= 64){ if(index.x < 80 && index.y < 80){ float input = tex2D(_Input, (index- 64) * _Input_TexelSize).r; float3 current = buffer.yzw; if(input > 0.5){ current.x = input; // 乱数生成 if(current.z > 0.5){ uint2 seed = index + floor(current.y * 65537); current.y = hash12(seed); current.z = 0; } } else { // Decay current.x -= _DecayTime; current.x = max(current.x,0); current.z = 1; } output = float4(input,current); } else if(index.x < 96 && index.y < 80){ float input = tex2D(_Input, (index- float2(80,64)) * _Input_TexelSize).r; float4 current = buffer; if(input > 0.5){ current.y = input; current.x = 0; // 入力回数16回を1ループとして計算 if(current.a > 0.5){ current.z += 1/16.0; current.z = frac(current.z); current.a = 0; } } else { // Decay current.y -= _DecayTime; current.y = max(current.y,0); current.a = 1; current.x += 0.01; if(current.x > 1){ current.x = 0; current.z = 0; } } output = current; } }
またParticle系はPosition、Velocity、Lifetimeなどを計算しています。 この計算されたCustomRenderTexutureを使って各演出用のShaderに渡してそれをもとに演出のオンオフ操作などをしています。
こういったCustomRenderTexutureを使った計算の話はこういった記事のほうがより詳細に記載されてるのでぜひとも御覧ください。
コントロール
今回のMidiのコントローラーはOrcaを使用しています。 もともとはAbletonでクリップを予め作っておいてLaunchPad(Midiコントローラー)で制御しようと思っていましたが、 複数種類のエフェクトと異なるリズムを用意することと、LaunchPadがVRChatに認識されて押したつもりのないノートまでが反応する(今はアップデートで認識させたいMidiデバイスのみになったのでこの心配はなくなったと思う。)のであまり増やしたくなかったので自由にシーケンスを組めるOrcaを使いました。 こんな感じにOrcaからMidiを飛ばして各種エフェクトを制御してます。 youtu.be
これでおわりです。実際今はUdonがあるので組もうと思えばVRChat内で完結できるようになるし、UdonにMidiが来ればそれでまた扱い方が変わるのでそんなに必要ないと思って軽めです。ありがとうございました。
20201231
なんだか今年はぱっとしない一年だった気もします。去年は2010年代の総決算だったので始まりの年と考えるとまぁ妥当かなと思ったり…
今年はじめは技術市でShader本を書いたり、つぶやきGLSLからtwiglができて、Shader1WeekCompoが始まって WebGLやGLSL Soundをちょっと書くようになったり少し新しい領域に手を出すような感じですね。書く機会が今の所これぐらいしかないけど、これが活用できるようになったらいいね。(そうか?)
#つぶやきGLSL#define m(a) mat2(cos(a),sin(a),-sin(a),cos(a))
— fotfla (@fotfla) 2020年4月15日
precision highp float;uniform float time;void main(){vec3 q,p=(gl_FragCoord.xyz)/1e3-.5;for(int i=0;i<9;++i)p.xz=m(time*.1)*p.xz,p=abs(p)/dot(p,p)*.7-.7,p.xz=p.zx,q+=exp(-dot(p,p)*32.);gl_FragColor=vec4(q*abs(p),1);} pic.twitter.com/qwOHgx7aIl
そのあと5月には、PorterRobinson主催のSecretSkyがあってそのセットはもうずっと何回も聴いてるんですど
— fotfla (@fotfla) 2020年5月10日
Thank you Porter Robinson #secretsky pic.twitter.com/3jbZy54Ykp
— fotfla (@fotfla) 2020年5月10日
適当に作っていたVolumetric TheaterでSecretSky見たのは良かったですね。コレ自体は去年に作って放置してたけど、ちょっと手を加えてまた別のワールドになったりもしました。
で6月からはずっとVRAAのことをやっていて、これは結果的にはおかげさまでとてもいいところにあるんですが…
「A Miniascape」おかげさまで届木賞いただきました!まさかでびっくりしてますが、ありがとうございました!#VRAA02 pic.twitter.com/z7AMPcSZpT
— fotfla (@fotfla) 2020年8月29日
結局一人でやるには時間も技術も足りなかったということと、まぁ純な創作とも言えないかったあたりが苦しいところだったことですね。このときのが後半いろいろ役に立ったりしてそれはそれで良かったりしたんだけどね。 来年はどうしようかな、去年は出せずに今年は作ることで苦しんだので。最終的には作ることを選んでそうですけど…
そのあと開いてる時間で音を触ったり、ぶいちゃでMidiのテストをしたりでだいたいこの後の電ドにつがなるようなことをやっていたと思います。
で年越しも近いクリスマスに0b4k3さんと一緒にGHOSTCLUBでほぼ1年越しに電ドをやるわけですが、外の空気が入るようになって少し雰囲気も変わったクでやるのちょっと怖かったんですが、結果的に受け入れられてるようでとても良かったです。途中DJが止まっちゃたりしたのでまたリベンジをどっかでやりたいすね。
ここまでずっと今年の創作のもやもやを引きずって電ドをやったことでやっと開放された感がありました。長いよ… 来年はこういうこと少なくしていきたいですね。
来年は音をやることと電ドとうかそれ相当するVRVJを見るということをなんとか叶えたいですね。 前者は自分に対して、後者は世界に対しての願いな感じがありますね。そのためには動かないといけないんですが。
VRChat振り返り -ド編-
振り返り電ド編です。
参考動画です。
:ghost: pic.twitter.com/ubmrGhm839
— 👻 (@gst_kkgr) 2019年2月10日
— 👻 (@gst_kkgr) 2019年7月2日
な感じでVR空間でVJ?をすることを勝手に電ド呼んでいたわけですが…
ド
始まり自体は ブタジエンさんと👻さんの
クのロボのデと博士のブ pic.twitter.com/NdhMm4R5Xu
— fotfla (@fotfla) 2018年12月8日
ここからですね。ワクワクしましたね。 影響を受けてモチベも上がってこんなものを作っていたらこれほど情報が無意味になることもないよな… pic.twitter.com/ChvTgC3BMT
— fotfla (@fotfla) 2018年12月9日
808に置くか… pic.twitter.com/TRhbZNmBe8
— fotfla (@fotfla) 2018年12月12日
やらない?と誘われたので
やりました。(自分で撮った写真が一つもないんですねよね。)今日はロボのデで博士とヴをします
— fotfla (@fotfla) 2018年12月22日
でこのときの私は大量のキューブのTransformを変化させることがメインでした。(ブタジエンさんはレイマーチングがメインになっていった。)
次にやる場所が変わりました。 最初に始めたときに比べると空間のディティールが大幅にアップしました。 そうすると単純にキューブにTextureを載せたものだと物足りなくなりました。(単純に見慣れたのもあると思うけど…) それに単純にエミッションだけしてるものなのであの空間に合わなかったのもありました。
@gst_kkgr さんのDJと @fotfla さんのVJ最高だった…。初VIVEでの3D VJは臨場感が半端ない… pic.twitter.com/FeIxwNb7gj
— kaiware style🌱 (@kaiware007) 2019年1月12日
そこでReflectionを追加しました。
— fotfla (@fotfla) 2019年1月27日これがReflectionの追加のテストの動画
この結果がこれになります。
このときは4人体制でDJ1人、映像1人、空間2人でやりました。これもこれで面白かったね。 ReflectionProbeのおかげで空間全体の色が馴染むのと映像がバキバキなので色がころころ変わるのがとても良かった記憶があります。:ghost: pic.twitter.com/ubmrGhm839
— 👻 (@gst_kkgr) 2019年2月10日
このあたりで結局あの空間でやるのも限界かなみたいな流れになりました。
平成最後の電ド今日は電ドでした。ありがとうございました~
— fotfla (@fotfla) 2019年4月28日
このときはnoribenさんを加えて、更に新ステージでやりました。前の空間であった映像がなくなりました。Reflectionする映像の代わりにnoribenさんのレーザーや花火がとても生きてきてとても良くなりましたね。電ド
— 三日坊主✨ (@mikkabouzu777) 2019年4月28日
完全に向こう側だった、 pic.twitter.com/pCEihenvXP
このあとにphiさんを加えてのやったのが
— 👻 (@gst_kkgr) 2019年7月2日です。1DJ4VJ体制のVJセッションがとても楽しかった。(実際このときは”他のこと”で新しいものが追加できなかったり、VRChat側の更新でうまく見せられなかったなどの不満があったけどそれは別のこと)
番外編
あのパルマーラッキーに見せる機会をブタジエンさんが運んできました。運んできたときはとても驚いた。それに最後にやってから時間が空いていて久々にやったら楽しかったし、追加できなかったのを追加できたのもの良かった。I recently had a truly incredible VR experience, a live multi-artist VR music video performance. Lots of trippy scenes from different artists, all in one @VRChat world! Hard to convey on a 3D screen. @butadiene121 @gst_kkgr @fotfla @phi16_ @noriben327 @kaiware007 pic.twitter.com/1aaygZAzHG
— Palmer "Ballpark" Luckey (@PalmerLuckey) 2019年11月27日
Channel
あとVRChatでこんなことをやっていたらこんなところに繋がりました。
youtu.be今回BRDG主催のチャネル#20でリアルの会場でGo-qualiaさんのVJします。 https://t.co/mg2UUCiKot
— fotfla (@fotfla) 2019年6月12日
実際これの準備中、正直心がだいぶやばい状態でした。色んな意味で。
2010年に出会った分解系Recordsというネットレーベルのおかげでクラブに行き、音楽を作り始め、映像を作りたいと思うようになりました。情報としては以上です。
少なくともここと一瞬でも繋がり得たことがありがたいことでした…。
以上ド編終わり。
#Shader1weekCompo のワールドについて
すでに1ヶ月経ちますが#Shader1WeekCompoのワールドについての考えたことメモです。
最初の要件としては
- 皆の作品を皆で見ることができる
- 交流会もするのである程度お話するスペースが欲しい。(ペンとかあると良いよね。)
だったと思います。
個人的な願いは - 作品を並べたい - CineShaderのようにRealtimeで大画面で作品を見れるようにしたい です。
導線の思考
導線としては交流会のスケジュールが 1. 挨拶 2. 鑑賞 3. 交流会(作品解説とかなどなど) でした。
なので部屋として
1. ラウンジ
2. メイン
3. シアター
を作ろうということは決まりました。かつ流れとしてはこの1,2,3をループした構造を作ると
なります。
重要だと思ったポイントは
- 作品を見てもらいたいのでここの部屋を極力独立したものにする
- 最初は逆周りに進まないようにする
です。
ここの解決ポイントは
- 入り口から次の入り口が見えないようにする。(入り口よりも)
- スポーン位置からラウンジに出たときにメインの入り口が見えるようにして、そちらに誘導する。
です。
1.
各部屋の入り口からは
だいたいこのような視点になってます。
要は極力次の入り口の存在を視点の端に寄せて認識を遅らせています。見せたいものの方に注力するようにしました。
また1つ目の部屋では大きいタイトルを見せてからその流れで入口を見せるようにして3番目の部屋からの出口に意識しないようにしました。
個人的なワールド制作のこだわり
作るときに考えるのは - デフォルトのものは使わない(世界に意味があるなら) - 文字を極力使わない(使うなら英語を使う) - Interaction Textに頼らない
デフォルトのものは使わない
ワールドの世界があるのでデフォルトのものを使うととたんに”それじゃない”感がでると思っていて、例えばUnityデフォルトキューブのスイッチや、アセットのそのままの流用の存在は世界観を壊す。 せっかく景観はいいのにとたんにキューブが出てくるとちょっと残念に思うじゃないですかそういうことです。 そこに存在するのが必然であってほしいのです。
文字を極力使わない、Interaction Textに頼らない
たとえ日本コミュニティだとしても結局は英語圏が大半をしめるのがここです。解像度が足りなくて読みづらいことがあるので文字を使うのは極力避けたい。あんまり文字で認識をしたくなくて、できれば直感で操作できるものを作りたいです。 Interaction Textに関しては最近は私がIndexを使っていてカメラに映り込むのでShow Textを外しているのが原因です。 例えば、キューブにInteraction Textのみだとそれにインタラクションしたときに何が起こるかわからなくなります。それを見るためにする行動が無駄だからそれを避けたいという気持ちです。考えずに行動、操作したいというのが願いです。
今回の場合だとこれで
もともとはよく知るQVPenですね。
booth.pm
- UIとして文字がある部分を図形に変更
- ペンもデフォルトのものを使わずに新たに用意
をするだけで世界に対する違和感が少なくなります。
という感じで、実際の制作数は少ないですがいつもワールドを作るときになったら考えることです。