今日の雑記

・前日。ダンベルベンチプレス&ダンベル腹筋上側10回×3セット。腹筋下側10回×3セット。晩飯はミートボール+マンナン米+チョコ大豆粉スポンジケーキ。風呂は40分早く入浴。グリシン3杯+カフェインレスカフェオレ。マグネシウムは摂取したか忘れた。
エアロバイクやる気まんまんだったけど、今日は性欲処理の日だと気付いてしぶしぶ筋トレ→性欲処理。まぁ筋トレのインターバルでグラブルできるのでアサルトタイムも別にムダではなかった。ただ、それほど欲の形をしてなかったので性欲処理は明日でも良かったのかなぁ。しかし明日はサーモンランがあるしなー。
筋トレはできる機会がなんか少なくなってしまったので、胸筋と腹筋を同時にやってみた。普通に寝転がってダンベルをベンチプレスっぽく胸筋で押し上げて、さらにそこから腹筋を使って上体を曲げる。そしてその逆をやりつつ戻って1回とする。10回やったら今度は足でダンベルを持ち上げる感じにしつつ腹筋の下の方を曲げるのを10回繰り返す。これを交互にやって3セットで今回は終了。もうちょっと回数なりセット数なりを増やしても良さそうだったかな。


・一応、グラブルにも自動戦闘はあるのか。攻撃ボタンを押して実行中にだけ表示されるのな。知らずに押してしまったようでちょっと焦った。
でもまぁ通常攻撃を繰り返すだけっぽいし、それほど大した機能ではないか。曜日クエストあたりでなら使えそうだが。


・睡眠時間7〜8時間くらい。寝返り時に目覚めてる感じはあるが、だいぶ寝続けられてる感じ。基本的にはここ数日と同じ感じだったが、珍しく少し寝つきが悪かった。やはり攻撃的な思考をしてしまうとそこに囚われてしまうな。
今回は枕の底面に余ってた薄いマットを貼り付ける事であまり移動しないようにしたが、これがなかなか良かった気がする。あとは仰向け時と横向き時の枕位置がまだ少しズレてるので、今日の帰宅後にちょっと調整したい。


・そうそう。「賢者の食卓」は自分の場合ラーメンくらいしか使い道がないかと思ったが、大豆粉スポンジケーキに練り込めば良いのか。そうすればイカ2のエッグチョコを増やしてもいけそうだし悪くない。一回試してみるかな。


・今日の作業はまずは案出しからかなー。必要要件は決まってるのだが、ちゃんと全てを実現する方法がまだ分からん。案1じゃダメだったからなー。とりあえずあと4日くらいはかけられると思うのでじっくり考えよう。


・ひとまず1段階目の検証は午前中に完了。あとは昼休みまで休もう。


・あぁ。「思考の閾値」か。なんか重要な気がする。これか。
そもそも思考し過ぎなのは「なんでもかんでも考えようとしてしまうから」だ。であれば、「こういう要件を満たすもの以外は思考に値しない」とする事で思考の制御はできるはずだ。
Twitterを見てるとそれだけで自動的に反応〜思考してしまうが、ここでちゃんと足切りしたい。反応そのものは本能なので仕方ないが、そこから本当に思考を進めるかはちゃんと理性側で閾値処理をしたい。できればそこから学習して反応自体が起こらないようにしたい。
というのをちゃんと言語化はできてなかったけど多少はやれてたんだよな。こうして言語化する事でわりとすんなり飲み込めるようになった気がする。
ちなみにいま使ってる閾値は「それを考える事で自分に何らかのメリットがあるか」かなー。さらに言えばそのメリットの量もまた閾値処理してるんだけど、そこまではまだ言語化できない。他人の気持ちを察して一緒に怒るのは尊いのかもしれないが疲れる。何よりそれは流されてるだけであって実際の問題解決には寄与しない。


・昼休みが終わったのでまた作業。そしてある程度は進んだが面倒な問題に遭遇したので一旦現状をまとめて休憩。


・意識してないとやはり無価値な思考はしてしまうな。
で、閾値で切り捨てるわけだけど「思考しない」ってのができないとこれ自体が難しいよな。つまり瞑想能力ありきではある。普通は「XXについて考えるな」というほどXXについて考えてしまうからな。
瞑想がまだ難しいなら「好きな動物の寝顔を想像しろ」あたりで補えるだろうか?これは最近自分が休憩時とか就寝時とかに使ってるイメージなんだけど。動物を動かしてしまうと睡眠時に困るのと、人間だと別の感情が出てきて邪魔になるので「寝てる動物」にしてる。


・それなりに進みはしたしそろそろ実作業4時間くらいになりそうだから今日はここまででも良いかなぁ。今回もプロジェクトに依存しない部分なので一旦雑記に吐き出して整理したいが、もうマジでちゃんとQiitaに書いた方が良い気もする。しかしまだ解決法が見つかったわけじゃないからなぁ。内省のためなら雑記を使わざるを得ないか。まぁちゃんと休憩した後で。


・そろそろ今回の作業について書くか。
概要は以前にも書いた気がするが、「本体モデルと影モデルが別で存在し、Timelineで本体モデルのアニメーションやオンオフを設定した際に、影モデルの方にも自動でそれを反映したい」というもの。
必要要件は「Timeline上で動作確認できる」「本体モデルを変更したら自動で即座に反映される」という感じ。なので、以前に別件でやった「playableファイルの中身を直接書き換える」というのはひとまずナシの方向で調査をしてる。本当にアレは最終手段だからな。
で、TimelineというのはPlayable APIというのを利用している。ものすごく雑に言えば「元データ(Playable)」→「コネクタ(Output)」→「反映先のデータ(Animator)」という風に繋げられるもので、このコネクタ(Output)の部分を増やす事で「1つのアニメーションデータを複数のAnimatorに適用する」というのができる。これはすでにいつもお世話になっているテラシュールブログで動作確認されている。(TimelineではなくPlayable APIまわりを直接一通り生成してる感じだが)
http://tsubakit1.hateblo.jp/entry/2017/07/30/134536
で、自分も以下のコードを追加する事で実際にそれっぽく動くところまでは確認できた。(はてダのコード埋め込みが久々なのでこれで良いかは忘れたが)

//Output→Animatorの部分の作成
output = AnimationPlayableOutput.Create (graph, animatorShadow.name, animatorShadow);

//Playable→Outputの部分の設定
//output.SetSourcePlayable(graph.GetRootPlayable(0));//こっちでも動くが下とどっちが正しいのやら
output.SetSourcePlayable(graph.GetRootPlayable(0).GetInput(0));
output.SetSourceInputPort(0);

普通の実行時にだけ動けば良いのであれば、Timelineを再生するところで上のような処理を呼べば良い。ちゃんとTimeline上で動かしたいのであれば、元となるgraphがPlayableDirector経由で取得しても不正になってしまうので、PlayableBehaviourとかを作ってそこからgraphを受け取って使うのが良いと思う。さらに、OnPlayableCreateのタイミングだとまだAnimatorの初期化が不完全っぽくてWarningが出るため、OnGraphStartで初回だけやるのが良さげ?(Outputは構造体でNullチェックできないので別のチェックが必要か)
長くなったが、ここからが本題。
今の問題は「少し複雑なTimelineにした際にエラーが出たりモデルがカクついたりする」というもの。具体的には「Overrideで本体モデルの位置をRecord設定したら、上のコードではカーソルをTimeline上で逆走させた時にエラーが出たり再生時にモデルがカクつく」という感じ。
このエラーがなー。本体モデルの位置にNaNが入ってきてる感じのエラーで意味がわからん。自分がやったのは「Outputを増やす」「そこに新しく影のAnimatorを設定する」というだけなので、本体モデルに影響するとは思えないんだよなぁ。しかし実際にエラーの内容はそんな感じだし、カクつくのも本体モデルだ(影はわかりづらいだけかもしれないが)。
しかし現に本体の方に影響が出てしまっている。カーソルで時間を巻き戻した時のエラーはUnityのEditor上だけでの話なので最悪ムシしても良いのだが、実行時にカクつくのでは使い物にならない。
ここからの方向は2つ。「この問題を対処して完成させる」か「別方向を模索する」か。どっちにしても時間はかかりそうだし、時間にはまだ余裕があるからまずは問題の対処を優先したいかな。これさえなんとかなればそれで完成な感じではあるし。でもまぁ別方向も今のうちに想定だけはしようか。
まずは「問題を対処する」の方向について。本体の方に影響が出てしまってるのは事実なので、そこらへんを念頭に起きつつPlayable APIまわりについて改めて調べたいかな。あとはOverride以外の設定でも似たような問題が起こるか。単純に2つの本体モデル用AnimationTrackを並べてしまうと全く別の問題が起こるのは確認済みだが、それは本来Overrideで設定すべきな気もするしな。カメラとかのAnimationTrackを入れた場合とかをちゃんと調べたい。複数のAnimationTrackがあるわけだからRootをSourceに入れるのはマズそうだし、そこらへんを考慮しながら。
で、「別方向」だけど、今のところまったく方向が見えない。強いて言えばEditorApplication.updateを利用する事でEditor中にも更新が行えるようにしつつ、本体モデルの状態をどうにかして取得して影モデルに反映させる感じだろうか?これならTimelineに影用Trackを追加しなくて済むわけだが、Timeline上での動作はかなり特殊なので外部から何の情報も取得できない可能性は十分にある。まずは情報がちゃんと取得できるかからの検証かなぁ。しかし、それが上手くいくならシーンにプレハブを一個入れれば動きそうだし、Timelineごとに影用Trackを入れるよりは汎用性が高いかなぁ。こっちも調査するに値するか。むしろこっちが上手くいくならこっちの方が良いか。しかし情報が取得できてもアニメーションの補間とかまでちゃんと動くか心配なんだよなぁ。
という状況。今日はここまでとすると残り3日くらい。明日一杯は今の問題の調査をしても良いが、それでダメなら別方向を進めたいか。あるいはさらなる理想を追って最初から別方向の調査を進めるか。両方ダメな可能性も十分あるので、調査は早めにしたいかなー。両方ダメならまたplayableファイルを直接書き換える方向も検討しないといけないし。


・ファイルを直接いじるにしても、本体モデルがあるところに直接生成するのはなー。本体モデルと並ぶ感じであれば分かりやすくはあるが、特に個別で設定する事もなかろうし、別のTimelineデータの方が良いか。「本体データ」と「影用データ」の2つを用意しておいて、本体データは影用データを入れ子で再生しつつ、コンバートによって本体データから本体モデルに絡む部分だけを抜き出して影用データとして上書き&影モデルを設定する感じ?


・というわけであれこれ考えて疲れた。でもまぁ方針は立てられたかな?今の感じだと「別方向」にした方がベストは追求しやすそうだが、そこらへんは明日改めて作業前に考えよう。今日はここまで。


グラブルwikiからスキル一覧とか見ても普通っぽく見えるが、キャラごとの紹介を見るとかなり特殊なのも多いなー。ひとまずこれを一通り確認したいかな?時間かかりそうだから今日中ってわけじゃないけど。これでデッキ構築的な楽しみを何も思いつかなければ終わってしまうかもしれない。