public void AddBoneKeyFrame(PmxBoneData bone, VmdMotionFrameData frame) { if (frame.FrameTime >= 0) { BoneFrameDict[bone].Add(frame); } }
public void AddBoneKeyFrame(PmxBoneData bone, Vector3 pos, Quaternion rot, CubicBezierCurve curve, int frameOffset = 0, int priority = 0) { var frame = new VmdMotionFrameData(bone.BoneName, World.FrameCount + World.FrameOffset + frameOffset, pos, rot); frame.InterpolationPointX1 = frame.InterpolationPointY1 = frame.InterpolationPointZ1 = curve.P1; frame.InterpolationPointX2 = frame.InterpolationPointY2 = frame.InterpolationPointZ2 = curve.P2; World.VmdSequence.AddBoneKeyFrame(frame, priority); }
public override PmxBoneData[] CreateBones(World wolrd, ShotProperty prop) { PmxBoneData[] result = new PmxBoneData[Data.BoneArray.Length]; for (int i = 0; i < result.Length; i++) { result[i] = CloneUtil.Clone(Data.BoneArray[i]); } return(result); }
public void Init(PmxBoneData data, PmxBones bones) { TargetBone = bones[data.IkTargetId]; Childs = new PmxIKChild[data.IkChilds.Length]; for (int i = 0; i < Childs.Length; i++) { var childData = data.IkChilds[i]; Childs[i] = new PmxIKChild(bones[childData.ChildId], childData.AngleMin, childData.AngleMax); } }
public CurtainFireModel(World world) { World = world; PmxBoneData centerBone = new PmxBoneData() { BoneName = "センター", ParentId = -1, Flag = 0x0002 | 0x0004 | 0x0008 | 0x0010 }; BoneList.Add(centerBone); }
public ModelBoneCollection(World world) { World = world; PmxBoneData centerBone = new PmxBoneData() { BoneName = "センター", ParentId = -1, Flag = BoneFlags.ROTATE | BoneFlags.MOVE | BoneFlags.VISIBLE | BoneFlags.OP, }; BoneList.Add(centerBone); }
public PmxBone(PmxBoneData data) { BoneName = data.BoneName; Depth = data.Depth; Flag = data.Flag; LinkWeight = data.LinkWeight; OffsetPos = data.Pos; InvInitMat = new Matrix4(Matrix3.Identity, -OffsetPos); if (Flag.HasFlag(BoneFlags.IK)) { IK = new PmxIK(this, data); } }
public void Init(PmxBoneData data, PmxBones bones) { if (0 <= data.ParentId && data.ParentId < bones.Count) { ParentBone = bones[data.ParentId]; OffsetPos = (Vector4)OffsetPos * ParentBone.InvInitMat; } if (Flag.HasFlag(BoneFlags.MOVE_LINK) | Flag.HasFlag(BoneFlags.ROTATE_LINK)) { LinkParent = bones[data.LinkParentId]; } if (Flag.HasFlag(BoneFlags.IK)) { IK.Init(data, bones); } }
private void SetupBone(ShotModelData data, params PmxBoneData[] bones) { for (int i = 0; i < bones.Length; i++) { PmxBoneData bone = bones[i]; bone.BoneName = data.Property.Type.Name[0] + (BoneList.Count - 1).ToString(); bone.Flag = 0x0002 | 0x0004 | 0x0010; bone.BoneId = BoneList.Count + i; if (-1 < bone.ParentId && bone.ParentId < bones.Length) { bone.ParentId = BoneList.IndexOf(bones[bone.ParentId]); } else { bone.ParentId = 0; } BoneList.Add(bone); } }
public void SetupBone(ShotModelData data, params PmxBoneData[] bones) { for (int i = 0; i < bones.Length; i++) { PmxBoneData bone = bones[i]; bone.BoneName = $"B_{(BoneList.Count - 1).ToString()}"; bone.Flag = BoneFlags.ROTATE | BoneFlags.MOVE | BoneFlags.OP; bone.BoneId = BoneList.Count + i; if (-1 < bone.ParentId && bone.ParentId < bones.Length) { bone.ParentId = BoneList.IndexOf(bones[bone.ParentId]); } else { bone.ParentId = 0; } BoneList.Add(bone); } }
public PmxIK(PmxBone bone, PmxBoneData data) { IKBone = bone; Depth = data.Depth; LimitAngle = data.AngleLimit; }