/// <summary>Qumarionの動作を適用するモデルの生成と、デバイスとの接続を行います。</summary>
    void Start()
    {
        _model = PdkManager.CreateStandardModelPS();

        //NOTE: QmBoneOnUnityのコンストラクタが再帰的に子要素のインスタンスを生成
        _rootBone = new QumaBone2Humanoid(_model.Root, StandardPSBones.Hips, null);

        if (PdkManager.ConnectedDeviceCount == 0)
        {
            Debug.LogWarning("QUMARION was not found");
        }
        else
        {
            _model.AttachQumarion(PdkManager.GetDefaultQumarion());
            _model.AccelerometerRestrictMode = AccelerometerRestrictMode.None;
        }

        if (animator == null)
        {
            animator = GetComponent <Animator>();
        }

        //キャラをTポーズにするために必要な回転の情報をキャッシュします。
        _initialRotations = _targetBones.ToDictionary(
            b => b,
            b => animator.GetBoneTransform(b).localRotation
            );

        InitializePseudAxis();
    }
    //描画ターゲットの初期化とデバイスへの接続を行います。
    void Start()
    {
        _model = PdkManager.CreateStandardModelPS();

        //ボーンを一つ残らず初期配置
        //NOTE: ここではボーンの階層構造を作らずすべてRoot直下に置いてる事に注意!
        _spheres = _model.Bones
                   .ToDictionary(
            bone => bone.Key,
            bone =>
        {
            var s                  = GameObject.CreatePrimitive(PrimitiveType.Sphere);
            s.name                 = bone.Value.Name;
            s.transform.parent     = this.transform;
            s.transform.localScale = new Vector3(.05f, .05f, .05f);

            var t = bone.Value.InitialWorldMatrix.Translate;
            //NOTE: QUMARIONのボーンはcm単位らしいので0.01倍に縮める
            s.transform.localPosition = 0.01f * new Vector3(-t.X, t.Y, t.Z);
            return(s);
        });

        //ボーン間の線を書くためのオブジェクトを用意
        _drawableBones = _model.Bones
                         .Where(kvp => kvp.Key != StandardPSBones.Hips)
                         .Select(kvp =>
        {
            var childSphere  = _spheres[kvp.Key];
            var parentSphere = _spheres[StandardPSBonesUtil.GetStandardPSBone(_model.Bones[kvp.Key].Parent.Name)];

            return(new DrawableBone(parentSphere, childSphere));
        })
                         .ToArray();

        if (PdkManager.ConnectedDeviceCount == 0)
        {
            Debug.LogWarning("QUMARION was not found");
        }
        else
        {
            _model.AttachQumarion(PdkManager.GetDefaultQumarion());
            _model.AttachedQumarion.EnableAccelerometer = false;
            _model.AccelerometerMode         = AccelerometerMode.Direct;
            _model.AccelerometerRestrictMode = AccelerometerRestrictMode.None;
        }
    }
    /// <summary>Qumarionの動作を適用するモデルの生成と、デバイスとの接続を行います。</summary>
    void Start()
    {
        _model = PdkManager.CreateStandardModelPS();
        //NOTE: ルート以下については再帰的に生成する感じのアレ
        _rootBone = new BoneForPdkTreeVisualizer(_model.Root, null);
        _rootBone.BoneObject.transform.parent = transform;

        if (PdkManager.ConnectedDeviceCount == 0)
        {
            Debug.LogWarning("QUMARION was not found");
        }
        else
        {
            _model.AttachQumarion(PdkManager.GetDefaultQumarion());
            _model.AccelerometerRestrictMode = AccelerometerRestrictMode.None;
        }
    }