コード例 #1
0
            public void AddCurves(Bvh bvh, AnimationClip clip, float toMeter)
            {
                AddCurve(bvh, clip, PositionX, -toMeter);
                AddCurve(bvh, clip, PositionY, toMeter);
                AddCurve(bvh, clip, PositionZ, toMeter);

                var pathWithProp = default(Bvh.PathWithProperty);

                bvh.TryGetPathWithPropertyFromChannel(RotationX, out pathWithProp);

                // rotation
                var curveX = new AnimationCurve();
                var curveY = new AnimationCurve();
                var curveZ = new AnimationCurve();
                var curveW = new AnimationCurve();

                for (int i = 0; i < bvh.FrameCount; ++i)
                {
                    var time = (float)(i * bvh.FrameTime.TotalSeconds);
                    var q    = GetRotation(i).ReverseX();
                    curveX.AddKey(time, q.x);
                    curveY.AddKey(time, q.y);
                    curveZ.AddKey(time, q.z);
                    curveW.AddKey(time, q.w);
                }
                clip.SetCurve(pathWithProp.Path, typeof(Transform), "localRotation.x", curveX);
                clip.SetCurve(pathWithProp.Path, typeof(Transform), "localRotation.y", curveY);
                clip.SetCurve(pathWithProp.Path, typeof(Transform), "localRotation.z", curveZ);
                clip.SetCurve(pathWithProp.Path, typeof(Transform), "localRotation.w", curveW);
            }
コード例 #2
0
            static void AddCurve(Bvh bvh, AnimationClip clip, ChannelCurve ch, float toMeter)
            {
                if (ch == null)
                {
                    return;
                }
                var pathWithProp = default(Bvh.PathWithProperty);

                bvh.TryGetPathWithPropertyFromChannel(ch, out pathWithProp);
                var curve = new AnimationCurve();

                for (int i = 0; i < bvh.FrameCount; ++i)
                {
                    var time  = (float)(i * bvh.FrameTime.TotalSeconds);
                    var value = ch.Keys[i] * toMeter;
                    curve.AddKey(time, value);
                }
                clip.SetCurve(pathWithProp.Path, typeof(Transform), pathWithProp.Property, curve);
            }