Exemplo n.º 1
0
        /// <summary>
        /// コアからパーツ情報を読み出す。
        /// </summary>
        private void InitializeParts()
        {
            int count = CubismCore.CsmGetPartCount(ModelPtr);

            if (count < 0)
            {
                throw new ArgumentOutOfRangeException();
            }

            // パーツの不透明度を取得する
            PartOpacities = IntPtrToFloatArray(CubismCore.CsmGetPartOpacities(ModelPtr), count);

            // パーツIDを取得し、IDマネージャを作成する
            string[] id_name_list = IntPtrToStringArray(CubismCore.CsmGetPartIds(ModelPtr), count);
            PartManager = new CubismIdManager <CubismPart>(count);
            for (int index = 0; index < count; index++)
            {
                var id = new CubismPart(id_name_list[index], index, PartOpacities);
                PartManager.RegisterId(id);
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// ストリームからポーズデータを読み込む。
        /// </summary>
        /// <param name="stream">ストリーム</param>
        /// <param name="model">対象のモデル</param>
        public CubismPose(Stream stream, CubismModel model)
        {
            var json = CubismPoseJson.Create(stream);

            if (!double.IsNaN(json.FadeInTime) && (0.0 <= json.FadeInTime))
            {
                FadeTimeSeconds = json.FadeInTime;
            }

            var part_groups = new List <PartData[]>();

            foreach (var group_item in json.Groups)
            {
                var part_group = new List <PartData>();
                foreach (var item in group_item)
                {
                    CubismPart id              = model.GetPart(item.Id);
                    var        part_data       = new PartData(model, id);
                    var        linked_part_ids = new List <CubismPart>();
                    foreach (string linked_id_name in item.Link)
                    {
                        CubismPart linked_id = model.GetPart(linked_id_name);
                        if (linked_id != null)
                        {
                            linked_part_ids.Add(linked_id);
                        }
                    }
                    part_data.LinkedParts = linked_part_ids.ToArray();
                    part_group.Add(part_data);
                }
                part_groups.Add(part_group.ToArray());
            }
            PartGroups = part_groups.ToArray();

            Reset();
        }
Exemplo n.º 3
0
 /// <summary>
 /// コンストラクタ
 /// </summary>
 /// <param name="model">初期化に使用するモデル</param>
 public PartData(CubismModel model, CubismPart part)
 {
     Part = part;
     Part.TargetOpacity = 1.0;
     LinkedParts        = null;
 }