public static void Main(string[] args) { var pos = new Vector3(1, 0, 0); var t = Matrix.RotationAxis(new Vector3(0, 0, 1), 3.141592f / 2.0f); var transed = Vector3.Transform(pos, t); Matrix right = PmxUtil.LookAt(new Vector3(0, 0, 0), new Vector3(10, 0, 0), new Vector3(0, 1, 0)); //Matrix right = Matrix.LookAtLH(new Vector3(0,0,0), new Vector3(10,0,0), new Vector3(0,0,1) ); right.Decompose(out Vector3 scale, out Quaternion rot, out Vector3 loc); Console.WriteLine(""); }
private void ControllSavehandler(object sender, EventArgs e) { var bone = SelectedBone().First(); var pos = PmxUtil.TargetPosition(bone); var distFieldCSV = space.XYZ; var list = new string[] { bone.Name, bone.Position.X + "," + bone.Position.Y + "," + bone.Position.Z, (pos.X + "," + pos.Y + "," + pos.Z), distFieldCSV, }; var path = space.ShowSave(); File.WriteAllLines(path, list); }
private Vector3 BoneLocalVerticePosition(IPXBone selBone, IPXVertex item) { var pos = PmxUtil.BoneAttitude(selBone); pos.Decompose(out Vector3 scale, out Quaternion rot, out Vector3 loc); rot = Quaternion.Invert(rot); //foreach (var item in Pmx.Vertex) { // なんかpositionなくなる //item.Position -= selBone.Position; //Vector4 vector4 = Vector3.Transform(item.Position, Matrix.RotationAxis(rot.Axis, rot.Angle)); //item.Position = new V3(vector4.X, vector4.Y, vector4.Z); var tmp = item.Position - selBone.Position; Vector4 vector4 = Vector3.Transform(tmp, Matrix.RotationAxis(rot.Axis, rot.Angle)); return(new V3(vector4.X, vector4.Y, vector4.Z)); } }
private void ControllLoadHandler(object sender, EventArgs e) { var path = space.ShowLoad(); var lines = File.ReadAllLines(path); var bone = Pmx.Bone.First(b => b.Name == lines[0]); var xyz = lines[1].Split(',').Select(float.Parse).ToArray(); var v3 = new V3(xyz[0], xyz[1], xyz[2]); bone.Position = v3; var targetXYZ = lines[2].Split(',').Select(float.Parse).ToArray(); var target = new V3(targetXYZ[0], targetXYZ[1], targetXYZ[2]); PmxUtil.SetTargetPosition(bone, target); space.XYZ = lines[3]; Con.Update(Pmx); View.UpdateModel(); }