0

スクリプト化された修飾子を作成しようとしています。すべて正常に動作します。唯一のことは、モディファイヤでオブジェクトの現在の Z 位置を表示したいということです。これにより、オブジェクトが更新されるたびに修飾子を更新する必要があります。ベースオブジェクトの動きでモディファイヤを更新する方法を教えてもらえますか?

サンプルコード:

plugin modifier accessBaseObject
name:"Access Details" classID:#(0x260e697e, 0x64b63822) replaceUI:true version:1
(
    parameters main rollout:params
    (
        enterValue type:#float animatable:true ui:spnEnterValue default:0.0
        on spnEnterValue set val do (print $.name)
    )
    rollout params "Modifier Parameters"
    (
        spinner spnEnterValue "Enter Value : "
    )

    on update do
    (
        print ($CAMERA.pos.Z)
    )
)

前もってありがとう、Videep

4

3 に答える 3

1

モディファイヤは、ワールド内のベース オブジェクトの位置を実際には認識していません。

情報の流れの観点から考えてみてください。

オブジェクト -> モディファイヤ -> ワールド

ワールドに関する情報は受け取りません (オブジェクトが修飾子に関する情報を受け取っていないのと同じように、Z 位置は受け取りません。

通常、フローに反する情報が必要な場合は、より適切な方法で解決できる設計上の問題があります。通常は、ワールド スペース モディファイヤを実装することになりますが、残念ながら、MaxScript ではそれが可能ではないと思います。

これを回避するには、ノードを見つけて直接アクセスすることができます。

theNode = refs.dependentNodes yourModifier firstOnly:on

ただし、これはノードが移動しても更新されず、インスタンス化も処理されません。別のクラスを使用するようにプラグインをリファクタリングすることを検討します-スクリプトコントローラーを試すか、入力オブジェクトに依存するスクリプトオブジェクトを作成します。

于 2014-08-01T16:26:20.340 に答える
0

「Scripted Modifier プラグインは、既存の Modifier プラグインのみを拡張できます。」ドキュメントを参照してください。これが理由である可能性があり、$.pos は通常問題ありません。

ただし、カメラが他のスクリプト アニメーションによって動かされた場合でも、いくつかの値を変更することで更新を強制することができ、いくつかの値の変更でプラグイン内の関数を呼び出すことができます。

于 2016-09-14T16:31:29.483 に答える