要望色々

ここは、Arbor開発者への要望を行うためのフォーラムです。

This is a forum for requesting Arbor developers.
YMMY

要望色々

Post by YMMY » 2018/07/09 16:07

いつも開発でArborには非常にお世話になっております。
今までに感じた改善要望点や自作することになったビヘイビアなどありますので、以下に列挙致します。
構造的に難しいところもあるかとは思いますが、ご検討頂けると幸いです。

  • 基本的にほぼ全てのパラメータをFlexibleにして制御したい
    特にTween系のDuration、LoadLevel、Trigger系など
  • 現在の値を自動で取得し、そこから指定値までTweenするBehaviour
  • Min Maxを決めてその範囲内でランダムにTweenするBehaviour
    (local)Position、(local)Rotation、(local)Scale、Color
  • ブレンドシェイプを制御するBehaviour もちろんTweenで
  • CharacterControllerを制御するBehaviour
  • Shurikenを制御するBehaviour
  • ランダムな値をParameterContainerに格納するBehaviour
    もちろんMin MaxどちらもFlexible
  • Fogのパラメータ制御
  • lightのパラメータ制御
  • TimeScaleの制御 Tween
  • マテリアルを制御(色Tween、モード変更など)
  • CanvasGroupのパラメータを操作するBehaviour
  • 指定オブジェクトの子要素の数をParameterContainerに格納するBehaviour
  • Listに格納したGameObjectをまとめてSetActiveするBehaviour
  • ランダムな値のRangeを出力するCalculator
    int float vector2 3 など
  • Arbor3はウィンドウを開きなおすと毎回同じ個所に窓が表示されて鬱陶しい
    以前のようにできないか

とにかくFlexibleな変数が非常に便利でしたので、標準でももっとこれを使えるようにすべきだと感じました。
(動作が重くなるなどの欠点があるのかもしれませんが)
特にTweenのDurationはParameterContainerが使えるようにTweenBaseクラスを改造し、そこから継承して使っておりましたが、無理やりFlexibleFloatを当てはめた形になり、値をランダムにしようとするとエラーが発生してました。
あとは私がやり方を知らないだけな気もしますが、ビヘイビアから値を出力してParameterContainerに格納する方法がいまいちわかりませんでした。

また、下記に自作したものを置いておきますが、1年以上前のバージョンのArbor2で動かすものなので、やはりそのままではうまく動かないかもしれません。
一部自分でも既に使っていないものもあるかもしれませんが、ご了承ください。

URL: https://www.dropbox.com/s/e5gqgofy5n5fj ... r.zip?dl=0
pass: arbor


以上、ご多忙とは存じますがよろしくお願い致します。

User avatar
caitsithware
管理人
Posts: 211
Joined: 2015/08/17 12:41

Re: 要望色々

Post by caitsithware » 2018/07/09 22:59

YMMY wrote:
2018/07/09 16:07
とにかくFlexibleな変数が非常に便利でしたので、標準でももっとこれを使えるようにすべきだと感じました。
(動作が重くなるなどの欠点があるのかもしれませんが)
特にTweenのDurationはParameterContainerが使えるようにTweenBaseクラスを改造し、そこから継承して使っておりましたが、無理やりFlexibleFloatを当てはめた形になり、値をランダムにしようとするとエラーが発生してました。
Flexible対応ですが、データフロー自体Arbor2からの機能でArbor1時代のスクリプト対応は後手に回っており申し訳ありません。
自分でも必要性を感じた部分や要望が上がった箇所について順次対応していきます。
YMMY wrote:
2018/07/09 16:07
あとは私がやり方を知らないだけな気もしますが、ビヘイビアから値を出力してParameterContainerに格納する方法がいまいちわかりませんでした。
ひとまず、組み込みスクリプトにパラメータ格納するCalcParameterがあります。
https://arbor-docs.caitsithware.com/ja/ ... meter.html
少し値を変更したい場合などはこちらをアタッチしてパラメータを指定、代入するか加算するかを選んでその値を設定してください。

自作スクリプトでパラメータに格納する場合は、マニュアルのParameterContainerを参照してください。
https://arbor.caitsithware.com/manual/p ... container/
パラメータの参照:ParameterReferenceのスクリプト例にあるIntParameterReferenceなどは参照先パラメータへのアクセスができますので、

Code: Select all

intParameter.parameter.intValue=10;
などのコードを書くと変更できます。
(例はMonoBehaviourになっていますが、ParameterContainerは特にアクセス元に関係しないためMonoBehaviourでもStateBehaviourでも問題なく動作します)

自作スクリプトからデータを出力する方法については、マニュアルのデータフロー(スクリプティングの出力スロットあたり)を参照してください。
https://arbor.caitsithware.com/manual/dataflow/
YMMY wrote:
2018/07/09 16:07
また、下記に自作したものを置いておきますが、1年以上前のバージョンのArbor2で動かすものなので、やはりそのままではうまく動かないかもしれません。
一部自分でも既に使っていないものもあるかもしれませんが、ご了承ください。

URL: https://www.dropbox.com/s/e5gqgofy5n5fj ... r.zip?dl=0
pass: arbor
ありがとうございます。
参考に致します。

最後にフォーラムの使用方法について少々お願いしたいのですが、
1つのトピックにはなるべく1つの話題だけでお願いしたいと思っています。
(ちょっと脱線するくらいではOKですが)
カテゴリは便宜上設定しているだけですが、少なくともわからない点に関しては質問フォーラム、要望についてはこの要望フォーラム、と使い分けていただけると助かります。

いただいた要望につきましては順次対応していきます。
今後ともよろしくお願いいたします。

User avatar
caitsithware
管理人
Posts: 211
Joined: 2015/08/17 12:41

Re: 要望色々

Post by caitsithware » 2018/07/10 00:01

タスク整理のため、いくつか逆に質問させていただくかと思いますのでご了承ください。

さっそくですが、
YMMY wrote:
2018/07/09 16:07
現在の値を自動で取得し、そこから指定値までTweenするBehaviour
何の値についてでしょうか?
また、TweenPositionにあるようなRelativeフィールドは、FromとToをステート開始時点の座標からの相対座標にするフィールドですがこれとは違うものでしょうか。
Toは絶対座標指定で、Fromは使わないといったパターンも考えられますね。
具体的な詳細をお聞きしたいです。

User avatar
caitsithware
管理人
Posts: 211
Joined: 2015/08/17 12:41

Re: 要望色々

Post by caitsithware » 2018/07/10 00:51

YMMY wrote:
2018/07/09 16:07
ランダムな値のRangeを出力するCalculator
こちらについてですが、
ランダム関連のBehaviourも他にいくつか挙がっていますが、このランダム系Calculatorから出力し、従来のBehaviourでランダム値のみ受け取り、という形でまとめてしまっても問題ないでしょうか?
もし別々に要望を挙げている理由などがありましたら詳細をお聞きしたいです。

User avatar
caitsithware
管理人
Posts: 211
Joined: 2015/08/17 12:41

Re: 要望色々

Post by caitsithware » 2018/07/10 01:27

YMMY wrote:
2018/07/09 16:07
Arbor3はウィンドウを開きなおすと毎回同じ個所に窓が表示されて鬱陶しい
以前のようにできないか
Animatorウィンドウと同じのほうがUnityライクかと思って変更しましたが、設定で変更出来たほうがいいかもしれませんね。
ArborEditorの歯車アイコンから設定できるようにいたします。

対応までの間、暫定的に以下の方法で以前のようにできます。
  • Assets/Plugins/Arbor/Internal/Editor/Windows/ArborEditorWindow.csをスクリプトエディタで開く。
  • 144行目を以下のコードに変更。

    Code: Select all

    ArborEditorWindow window = EditorWindow.GetWindow<ArborEditorWindow>();// GetWindowの引数に渡しているtypeof(SceneView)を削除
    

YMMY

Re: 要望色々

Post by YMMY » 2018/07/10 15:07

お返事と実装方法をご指南いただきありがとうございます。
また、深夜のテンションで投稿してしまい失礼致しました。
今後は掲示板の使い分けをしたいと思います。

caitsithware wrote:
2018/07/10 00:01
何の値についてでしょうか?
また、TweenPositionにあるようなRelativeフィールドは、FromとToをステート開始時点の座標からの相対座標にするフィールドですがこれとは違うものでしょうか。
Toは絶対座標指定で、Fromは使わないといったパターンも考えられますね。
具体的な詳細をお聞きしたいです。
こちらについては、ご指摘の通り絶対値での使用を想定しています。
例えば「どのpositionにいても、必ず指定Durationで指定positionまで移動する」とか「現在がとあるrotationに向けてtweenしているが、Triggerなどで強制的にステート遷移し、その時点のrotationが何であったとしても、必ず指定Durationで指定rotationまで回転する」といったところです。
こういった挙動を実現しようと色々試しましたが、うまくいきませんでした。

caitsithware wrote:
2018/07/10 00:51
ランダム関連のBehaviourも他にいくつか挙がっていますが、このランダム系Calculatorから出力し、従来のBehaviourでランダム値のみ受け取り、という形でまとめてしまっても問題ないでしょうか?
もし別々に要望を挙げている理由などがありましたら詳細をお聞きしたいです。
これについては、ランダム系Calculatorから出力し、従来のBehaviourでランダム値のみ受け取るということで問題ないと思います。
複数挙げた理由については、ランダムな値を出力するCalculatorを自作しようとして失敗し、結局Tween系やTimeTransitionでMin、Maxを指定するFlexible変数を設けることになったためです。
こういったもののDurationがFlexibleになり、更にランダムなint float Vector3などをCalculatorから受け取れれば、非常に便利になると思います。

caitsithware wrote:
2018/07/10 01:27
Animatorウィンドウと同じのほうがUnityライクかと思って変更しましたが、設定で変更出来たほうがいいかもしれませんね。
ArborEditorの歯車アイコンから設定できるようにいたします。

対応までの間、暫定的に以下の方法で以前のようにできます。
  • Assets/Plugins/Arbor/Internal/Editor/Windows/ArborEditorWindow.csをスクリプトエディタで開く。
  • 144行目を以下のコードに変更。

    Code: Select all

    ArborEditorWindow window = EditorWindow.GetWindow<ArborEditorWindow>();// GetWindowの引数に渡しているtypeof(SceneView)を削除
    
現在の挙動が好きな方もいらっしゃると思いますので、設定で変えられるととてもいいと思います。
また、ひとまずはご教授いただいたように書き換えてみたいと思います。


とても丁寧なお返事とご対応いただきありがとうございます。
Arborには本当に助けられていますので、引き続きの開発を陰ながら応援して参りたく存じます。

User avatar
caitsithware
管理人
Posts: 211
Joined: 2015/08/17 12:41

Re: 要望色々

Post by caitsithware » 2018/07/10 22:43

お返事ありがとうございます。
YMMY wrote:
2018/07/10 15:07
こちらについては、ご指摘の通り絶対値での使用を想定しています。
例えば「どのpositionにいても、必ず指定Durationで指定positionまで移動する」とか「現在がとあるrotationに向けてtweenしているが、Triggerなどで強制的にステート遷移し、その時点のrotationが何であったとしても、必ず指定Durationで指定rotationまで回転する」といったところです。
なるほど、イメージできました。
YMMY wrote:
2018/07/10 15:07
これについては、ランダム系Calculatorから出力し、従来のBehaviourでランダム値のみ受け取るということで問題ないと思います。
了解いたしました。
UnityEngine.Randomクラス関連と、
線分上のランダム座標などなど、Lerpが可能なクラス関連に対応したいと思います。

他の要望(○○のパラメータ制御など)に関しましても、作業する際に疑問になった点などの詳細をお聞きすることになるかもしれません。
もし具体的なイメージなどすでにありましたら、引き続きこのトピックに書いていただけると助かります。

User avatar
caitsithware
管理人
Posts: 211
Joined: 2015/08/17 12:41

Re: 要望色々

Post by caitsithware » 2018/07/13 04:41

YMMY wrote:
2018/07/09 16:07
ブレンドシェイプを制御するBehaviour もちろんTweenで
こちらをひとまずユニティちゃんで試作しようかと思いBlensShapeの制御方法について調査しています。

いろいろ調べてみたところ
BlendShape用アニメーションを作成してAnimatorで制御したほうが複数のSkinnedMeshRendererにまたがっているなどの時にも最終的には楽に管理できそうでした。
どういったケースで直接BlendShapeを制御する必要があるのか、参考までに教えていただけると助かります。
(スクリプトを作成すること自体は特に問題なく、ちょっと必要性に疑問に持ったという感じです)

YMMY

Re: 要望色々

Post by YMMY » 2018/07/15 13:28

いつも開発お疲れ様です。
caitsithware wrote:
2018/07/13 04:41
いろいろ調べてみたところ
BlendShape用アニメーションを作成してAnimatorで制御したほうが複数のSkinnedMeshRendererにまたがっているなどの時にも最終的には楽に管理できそうでした。
どういったケースで直接BlendShapeを制御する必要があるのか、参考までに教えていただけると助かります。
(スクリプトを作成すること自体は特に問題なく、ちょっと必要性に疑問に持ったという感じです)
Animatorで制御する方法については存じませんでしたので、C#のスクリプトやArborで直接数値を指定するなどして制御しておりました。
場合によってはAnimatorでの制御のほうが効率的にできるのかもしれませんが、私としてはAnimatorやAnimationの存在そのものがあまり好きでなく、可能な限りスクリプトで数値指定して制御するとか、IKでプロシージャルに制御したいという思想を持っております。

結局はどのような方法でも同じように制御できるのかもしれませんが、一定範囲内のランダム時間で遷移→一定確率で一回もしくは二回まばたきする、その速さ・間隔も制御できたり、それらと連動した処理を作りやすかったり……概ねそのような感じで使っておりました。
また、あまり詳しくは知らないのですが、例えば顔だけBlendShapeを動かすAnimationで制御するなら、それ以外の首から下はMaskをかける必要があったように思います(違っていたら申し訳ありません)
あのあたりの設定などをいちいちやるよりも、Arbor内で都度直接指定して制御したほうが自分としては楽なのかなと考えております。

他にも疑問点などあれば可能な限りお答えいたします。
以上、よろしくお願い致します。

User avatar
caitsithware
管理人
Posts: 211
Joined: 2015/08/17 12:41

Re: 要望色々

Post by caitsithware » 2018/07/15 21:30

なるほど。
場合によりけりですね。

使いやすいかは別として次の更新で対応したいと思います。

Post Reply